This article provides guidance on troubleshooting unstable or problematic hydraulic results with the Implicit solver in SewerGEMS and CivilStorm.
If your hydraulic model provides unexpected results or high continuity error (mass balance) when using the Implicit numerical solver (set in the Calculation Options), try the following steps.
Note: a Continuity Error (as seen in the Calculation Summary) of less than 5% is typically acceptable for modeling purposes, considering the inherently unstable nature of any dynamic numerical solver, the degree of uncertainty with other modeling parameters (exact roughness, elevations, etc) and the margin of error in the actual built system. However, the modeler should still check time-series results at key locations to determine if further fine-tuning of the model is necessary to achieve a higher degree of accuracy.
1. Check the model for data entry problems:
Checking your data is always the best first step, as even one problem with data entry could potentially impact the results in your model and lead to instability or otherwise problematic hydraulic results. It is important that the model data entry is in good shape before attempting to compute.
Common data problems:
Conduits or Channels:
Pumps and pressure pipes:
When pumps operate at or near the shutoff head point on their curve review downstream results for accuracy. In the past there have been cases where graphs of the hydraulic grade would show large jumps that were out of the range of the normal pump operating points. To resolve this adjust the pump curve by reducing the flow or head accordingly to produce a curve that operates near the point the pump is running at in the model. The new pump curve can be tested using the SewerCAD (GVF-Convex solver) because the pump calculations are done using the pressure solver, which is more stable for pump calculations than the implicit solver.
Ponds and pond outlet structures:
Conduit control structures:
2. Verify data input in the following other challenging situations
3. Simplify where possible
Dynamic solvers tend to be complex, and little changes can sometimes make a big difference. What you should keep in mind when creating a dynamic model is to keep things as simple as possible and only model what you really need to study. In other words, if there are some conduits that can be left out because they won't have a significant effect on what you are studying or don't provide a lot of flow (near-dry) don't put them in the model or take the flow they would produce and add it to another node element as an inflow. Generally speaking with dynamic modeling less is better than more.
If you're working with a very large model, you may have a much easier time splitting it into smaller subsections if possible. Then, work on the sections one by one. Trying to troubleshoot results in a very large model can be cumbersome and overwhelming.
1) Parallel conduits with the exact same physical properties. Instead of putting both conduits in the model you might model this as one conduit with 2 barrels.
2) A pond with an outlet structure. Let's say the outlet structure was made up of a 24 inch orifice and a weir at the very berm of the pond. After going through the outlet structure the water goes into a 24 inch conduit. Assuming the water never gets up to the level of the weir what you could do to simply this situation is set the Pond Outlet Structure property for "Has control structure?" = 'No'. In this situation, this can be done because the conduit was the same size as the orifice, so the conduit will act as the controlling structure for incoming water.
3) A wet well with a sanitary load. Remove the sanitary load that is directly on the wet well and add it to a manhole upstream of the wet well or create a dummy manhole directly upstream and connect it to the wet well.
4. Adjust the calculation options to reduce the continuity error
Default values for calculation options will work for the majority of cases, but some systems need small adjustments to converge. When the calculation is moving very slowly (you can observe that the model is stuck at certain times) or the results show apparent instabilities, it is an indication that the model is experiencing difficulties in converging to a stable and robust result. Try adjusting calc options in the order below. This is an iterative process and only one option should be adjusted at a time to see whether it gives better results or worse results. If the choice provides better results see if you can adjust it again more in the same direction to provide even better results than the first choice. For example, if changing the computational distance at 50 ft provides a continuity error of 25% and adjusting to 10 feet provides a continuity error or 15% then try to adjust it further to 5 feet to see if you can reduce the continuity even more. The goal with this is to get the continuity for the model under 5% and the lower the error the more accurate your results.
Initial conditions: Options include warm start or transitional start. Try both and see if one gives better results for your system.
Suggested Range of Values
5 ft - 75 ft
Calculation Time Step
0.005 hr - 0.025 hr
NR Weighting Coefficient
0.7 - 0.990
Relaxation Weighting Coefficient
0.6 - 0.990
5 - 20
1 - 15
Most of the time you can get the continuity error under 5% using the 4 options above. If you still need to adjust things after that continue in the order below.
Note: There is no absolute rule on whether the time step, LPI Coefficient, or the NR weighting coefficient should be changed or to what specific value; normally you should reduce the time step and increase the NR weighting coefficient but sometimes the opposite can also help.
5. Isolate problems areas: Isolate the problem area by incrementally deleting small sections of your model and re-computing. This may help you narrow down the source data that the engine has trouble with. It may expose data entry issues or areas that are exhibiting common modeling difficulties.
6. Locate and focus on the time step during which the problem occurs. Look for what is happening at that time. Is a weir beginning to overflow? Is it the first time a large pump comes on? Sometimes it's easiest to look at your user notifications for that time or locate the problem on a profile and slide the time browser bar to that time before examining the model.
7. Check for upgrades. As newer versions of SewerGEMS and CivilStorm are released, improvements are made to the numerical solver. With a SELECT subscription, upgrades are included. Here on this here.
8. Consider trying the Explicit (SWMM) numerical solver (Analysis > Calculation Options > Click on the active option to open the properties). Each solver has its own strengths and there are some situations where the SWMM solver may handle a hydraulic situation better (see this article for more). If there are problems when using the SWMM solver, try changing the Routing Method from Dynamic Wave (default) to Kinematic Wave or Uniform Flow. These methods do not handle backups as accurately as dynamic wave, but they tend to be more stable. If the results are still not stable with the SWMM solver (as seen in the summary output text report), try reducing the Routing Time Step calculation option. Suggested value range: 1.0 sec - 30 sec. Smaller values tend to yield more stable results.
Note: Headlosses at nodes are currently ignored during periods of supercritical flow.
Troubleshooting unstable SewerGEMS and CivilStorm model results using the Explicit SWMM Solver
Pinpoint Mass Balance Problems with the Hydraulic Reviewer