Jump to content
GMS, SMS, and WMS User Forum

Rusty Jones

SMS Experts
  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by Rusty Jones

  1. I think your best option would be to look at the RMA4 manual that is distributed with SMS. It contains the governing equations and overview of the model.
  2. Hi Vera, John isn't working with SMS anymore. Anyway, as stated in earlier posts RMA2 isn't a very stable model. If it is an option, you would be much better off investigating alternative engines. It will save you lots of time and headaches. In case this isn't an option, I'll try to explain where the error comes from and some ways to try to handle it. This error indicates that the model went unstable. One way to try to keep the model stable is to try changing the flowrate more slowly. Rather than going from 60 m3/s to 100 m3/s, try going from 60 m3/s to 80 m3/s. If you look at the convergence reports, it will tell you which nodes had the biggest changes. If you use the Node | Find option in SMS, you can find where these nodes are. Sometimes this will lead to see places that have poorly shaped elements or very rapid geometry changes that can increase the instabilities of the model. You may want to try using the steering module option in SMS. This tool runs the model over and over trying to get to a target boundary condition adjusting the model each run.
  3. Hi Matteo, What you should do is use the map module to create what we call a conceptual model to specify where the nodes should be placed. Then you interpolate the data from the DEM to the nodes. You can read the values in as a raster. A raster will keep all the original points (there is no filtering). However, it is managed in a way that allows more data and will display faster than the same data as a TIN. If you look at the tutorial labeled overview, it goes over a little bit about crating a mesh using a conceptual model. Try working through it to help. If you read the DEM as a raster, choose raster as the bathymetry source when doing the map->2d mesh.
  4. Hi, I'm sorry that this isn't working for you. This may have functioned this way at one time but it has always built all polygons for as long as I can remember. The way we store and work with polygon data it may have limited benefit. Part of the information stored is the topology of the polygons (who am I inside and who is inside me). We have what is called, the "universal polygon" which isn't a true polygon. It contains the information of all the polygons who aren't inside of any other polygons. One of the more time consuming processes is keeping that up to date correctly. Trying to keep that up to date while building a single polygon at a time, may not have saved much time and may have been tricky. In any case, somewhere along the line this functionality was discontinued. The good news is that a new polygon building algorithm was implemented that is far faster than the old algorithm. I can't remember exactly when this came along and it may be new to SMS 11.0. I would recommend getting a trial password to SMS 11.0 and seeing if working with polygons is less painful. I hope my explanation makes some sense. While I can't remember the functionality being discontinued, I can certainly appreciate some of the reasons it may have come about. As I say, because of some of the complications involved it may not have saved much time anyhow. I apologize for the error in the documentation. Cheers, Rusty
  5. I don't remember what changes have taken place since SMS 8.1. That is quite an old version. I imagine most of the information on the steering module on the wiki would apply to SMS 8.1.
  6. This message just indicates that SMS recognizes that the data has changed and SMS reflects the data from the new run.
  7. Hi, I'm sorry I don't think we have a tutorial on the steering module. How to operate it should be in our help. If you are using SMS 10.1, the help is on the wiki (xmswiki.com). If you are using SMS 11.0, the help is distributed with SMS and you can get to it from the menu command (in web menu?). RMA2 is likely stable enough to get the answer if you use the steering module or similar techniques. It is easier to get a solution to converge when running in steady state mode. However, there are more stable numeric engines available for SMS. My favorite numeric engine is TUFLOW. It is very stable even with rapid wetting/drying, runs in transient mode, has a very powerful model setup approach, very good error trapping and reporting, and is very versatile since you can use it in rivers, oceans, and even urban with storm drain systems. My second choice for this would be SRH2D which uses the generic model interface with SMS 10.1 (getting it setup to work with SMS 11.0 is currently in progress). SRH is a finite volume model that is very stable. You can learn more about these models by contacting our sales team. I hope that this helps.
  8. Hi, The problem that you are having is that RMA2 is sensitive to wetting/drying issues. You can disable the element and use the steering module to try to get your run to converge or use a more stable numeric engine.
  9. RMA2 boundary conditions are intended to be use to tell how water moves into and out from the mesh. It isn't possible to define a boundary condition that is zero velocity in an element that is part of the mesh. A couple alternatives are: 1. Change the material of the element to disable. This will force the element to be draw (unused) and all flow will move around the element. 2. Make the roughness in the material super high. This will cause a bunch of energy loss in the cell so that the velocity will be severely impeded. This option will show the element has having water in it but very little conveyance. I hope this helps.
  10. Hi Jose, I wish I knew how to avoid this and sorry for the hassle. Thanks for sharing your experiences for others to learn from.
  11. Hi, I'm sorry for the trouble this is causing. I have a workaround. Could you also get us a sample file that we can use to try to make SMS recognize this and read the file correctly in the future? Contact support@aquaveo.com for upload instructions. The workaround is to use the transform data option twice to flip the coordinates. To do this: 1. Go to Data | Transform. Choose the scale option. Use 1.0 for x and z but a -1.0 for y. Click OK. 2. Go to Data | Transform again. Choose the rotate option. Use 270.0 for the angle and leave the x and y at 0.0. Click OK. In the end you should end up with coordinates that are flipped from how they were read in. I hope this helps.
  12. You should still be able to do this in SMS 11.0 (it works fine for me). Here are the steps: 1. Create a CMS-WAVE coverage (right click on the item named "Map Data" and choose new coverage and choose CMS-WAVE type. 2. Use the create grid frame tool (looks like a box) and click out approximate locations for the gridframe. 3. Switch to the select grid frame tool (looks like the create grid frame tool with an added arrow to indicate selection). 4. Drag a box around the grid frame holding the left mouse button. When you let up, you should see the IJ indicators on the grid frame and highlighted points on the corners and midway along each side of the gridframe. 5. You should be able to drag any of these highlighted corners or mid-sides at this point. You can also right click on the grid frame to change the values of origin/size/etc. I hope this helps.
  13. Do you mean a "grid frame" rather than a grid? A grid frame is used to layout the physical location of the grid before actually creating it. What model are you trying to create a grid for?
  14. Hi Matt, In the same dialog, there is an option for a translate. Translate your nodes by 0.0 for x and y and 1.0 to raise your nodes 1.0 m. Cheers, Rusty
  15. Hi Matt, The value that you are specifying is the water level you want to use as 0.0 in the new system. So if you have an elevation of 5.0 and you want to get a depth of -4.0, you would specify 1.0. The value of 1.0 becomes 0.0 in the transformed coordinates. If you want to get 6.0, you would specify a -1.0. Does this make sense? If not, let me know and I'll take another stab at it.
  16. Do you think you could get your files and the steps you are taking to technical support (support@aquaveo.com)? If so, tell them Rusty requested them.
  17. I think when you are in Geographic, SMS always report the distances in meters. Are you comparing this distance to a length in feet?
  18. Yea, those fields are independent and you can't paste into one and have it carry to the other. Also, we can't take input in degrees minutes seconds. Some things we will need to think about. If you are doing several points, the easiest thing may be to put them into a spreadsheet do the conversions to decimal degrees and write them in csv format and read them into SMS using the import wizard. In addition to a possible different in projection as mentioned by Cameron, the discrepancy in distances can be accounted for in how SMS computes distance compared to other products you may be using such as Google Earth. When SMS computes the distance between points in geographic, we convert the points into a UTM zone that contains one or both of the points. There is some loss of precision when this is done particularly if the points are in different zones. We calculate the distance based upon the converted UTM points. There are more precise ways to calculate distance taking into account curvature of the earth but we don't currently do this. Up to this point, we haven't felt that the added precision is worth the time and cost and have chosen to implement other features. I hope this helps. Cheers, Rusty
  19. Hi, Are you asking if you can paste two values (separated by a tab or space) into the X coordinate to enter an x and y location for a scatter vertex? Cheers, Rusty
  20. I still think the approach is problematic. What happens if the user locks the spacing but their size function right next to the boundary specifies a size much smaller or larger? You end up with funny shaped elements because you are trying to make elements the spacing of the boundary and the spacing of the size function. I haven't tried this but I wonder if there is a way to make it work. Let's say you do your in-bank mesh just like you currently do. Then you convert the mesh boundary to arcs to use for your floodplain mesh. Once you have that setup, you create arcs offset from your mesh boundary inside the area you want to mesh and build the polygons. At this point you have something like a funny shaped donut or more likely multiple funny shaped donuts. The outside arcs have the node spacing exactly like your mesh. Then you specify that you want to use scalar density paving on the inner polygon (not adjacent to the original mesh boundary) and standard paving in the outer polygon. Scalar density paving will force the vertices on the inner arc to redistribute to match the size function but the outer arcs won't be redistributed. The only problem with this is that you would probably have to tweak your inner polygon points to get it to look nice with few bad transitions. Why don't you mesh both parts at the same time in neighboring polygons? It seems all of this would just go away if you did it all together.
  21. You can compute grid spacing on the mesh or scatterset and you should get the same answer. There isn't a way to use scalar density paving and not redistribute vertices. Again, this would overconstrain the problem and lead to poorly formed meshes. If this is an absolute must, you will need to stick with standard paving. However, if your sizes in your size function are very similar to the spacing of your arcs they won't move much. Good luck.
  22. Hi Matt, When scalar density paving is used, SMS generates elements based upon the specified dataset which has to be in a scatterset. Ideally, this means that if the contour value at a location is 10.0 that an element created at the location would have edges a length of 10.0. Since the scatterset can vary greatly, it isn't always possible to achieve this. If you use scalar density paving, the spacing on the original arcs isn't used in determining the sizes of the mesh. Doing this would overconstrain the problem and make some pretty ugly meshes. So in the end, we want a scatterset that is the same size or slightly larger then the mesh we will generate with a dataset representing the target spacing everywhere. If it is essentially the same size, I would use IDW extrapolation to make sure values just outside the scatterset will get valid values. If you know the size you want at a specific location or multiple locations but want to constrain the rest of the domain based upon a growth rate, you can do this with scalar density paving following the steps I outlined before. I'll try to be a bit more specific in how to create the scatterset and size function. There are a couple options. One way to create this scatterset would be to create a mesh using standard paving that is slightly larger than your domain. The elevation source can be constant and you don't need to worry about filling holes in the domain. Then using the data calculator, you can create a dataset with the largest size you would consider practical for your problem or slightly larger. Then you change the scatter vertices in the area that you want to force a specific size to the appropriate size. If there are multiple places you want to constrain you can do this. At this point, you use the dataset toolbox smooth size function option and you will end up with a size function that SMS can use to generate a mesh that meets your size specifications and allowable growth rates. If you have the spacing well defined as you say, you might could get away with just using the standard paving option. If this doesn't quite work, you could generate an initial mesh this way and use it to generate a size function as follows: 1. Setup the meshing problem using standard paving. 2. Do map->2d Mesh to create a mesh. 3. Convert the Mesh to a sctter by right clicking on the mesh and choosing convert to scatter. 4. Use the dataset toolbox "Spatial -> Grid spacing" tool to compute the average element edge size at each node. 5. Use the "smooth datasets" tool as discussed previously to force growth rates and remesh using this size function (use IDW extrap to prevent losing values outside the scatterset). This last approach will create a mesh with the approximate spacing of the initial mesh created using standard paving but enforces the specified growth rate. I hope that this clarifies rather than confuses. If not, let me know and I'll take another stab at it.
  23. Since you cannot have wave inputs on adjacent sides, I think what you want to do is rotate the grid so that the incoming waves run along the I axis of the grid. If you are going to want to consider waves from a variety of angles, you need to make your grid large enough that you can force from one side and the waves wouldn't cross the grid laterally before hitting the shoreline.
  24. Hi Matt, We have a tool built to do exactly this. It is the "Smooth data sets" functionality in the dataset toolbox. To use this tool: 1. Create a dataset with the starting sizes (in the scatter module). I would use the dataset calculator and make them all the same large value. Then I would select the nodes that you want the closest spacing on, and change them to this value. When you are done, you should have a size function that is large everywhere except where you want your smallest elements. 2. Bring up the dataset toolbox and choose the "Smooth data sets" tool. You want to select your seed dataset in the tree control in the middle section of the dialog. Use the element area change option and use the value 1/1.33 (0.75) to control growth at the rate you suggest. Leave the anchor to the minimum value. Click Compute. 3. Use the dataset with scalar density paving. Even if you generate size functions with values everywhere, I think it is a good idea to smooth the size function. It helps generate meshes with smooth transitions and therefore better element quality.
  25. I'm not sure what would be happening here. Could you please get your files to technical support (support@aquaveo.com)? We will look at them and get help from the PTM developer as needed.
  • Create New...