Developing Stream Alignment in HEC-ResSim

Special thanks to Joan Klipsch of HEC for providing information about this topic.  

Setting up a stream alignment can be challenging in HEC-ResSim.  In my examples so far on the blog, I have used simple stick diagrams for my examples.  This doesn't affect the ResSim computations, but you will typically import a GIS shapefile for your stream alignment.  Below, I have included Joan's recommendations (in Bold) along with my suggestions (in Italics).  I would also recommend that you refer to the August 10, 2015 post describing how to develop a model.


  • Each river in your stream alignment should be represented by a single continuous line.  If you created the stream alignment by importing from a shapefile, verify that the flow direction of each stream is correct (the zero tick mark should be at the downstream end).  Each confluence (stream junction) should be checked to be sure it is truly connected - look for the bright green halos.  Additionally, you will get an error message when you try to draw in your reservoir if the direction of the stream alignment is incorrect.  You will think you are drawing in the reservoir upstream to downstream, but ResSim will inform you that you are trying to draw them in downstream to upstream.  
  • In the figure below, you can see that the individual stream segments are not one continuous line due to the presence of numerous green halos.  Normally, the green dots (stream nodes) should only show up at the top and bottom of a river or at a confluence with a tributary (confluences should have those bright green halos; the halos indicate properly connected "stream junctions").  I would send the alignment shown in the figure below back to my GIS staff for corrections.



  • The above alignment will still work, but it can be a challenge to draw the routing reaches on it and you are stuck with the stream alignment's discretization for the maximum length of your reaches since you will not be able to draw a reach across the stream junction that connects the pieces.  Additionally, if this is going to be used in a CWMS (Corps Water Management System) model, I want to control where reaches begin and end rather than it being a function of how the shapefile was developed.  The location of the reaches should be controlled by where the routing parameters change or by the location where inflow has been computed by a model such as HEC-HMS.

  • Another potential issue with drawing reaches occurs when the Junction element that you are trying to connect your reach to is not exactly located at the stream junction beneath it (sometimes, they are ever so slightly upstream of the stream junction).  To avoid this problem, I employ one or both of the following techniques:
    • Create a watershed configuration and draw computation points in the watershed setup module at all stream junction.  I would draw in all my reservoirs here as well.  When you place a computation point at or very near a stream junction, ResSim will prompt you to identify where the computation point should be located.  I always answer "at the stream junction".  Once I have all the computation points defined, I can then create a network in the reservoir network module based on my configuration.  When I do this, all my computation points become Junction elements in the network and they are located exactly where they belong.  I have also added the junctions in the reservoir network directly by zooming in tight on the confluence and putting the junction there.  Even doing it that way it still seems to miss the confluence at times.  I like Joan's recommendation better.
    • When I draw my reaches, I start from the bottom of the watershed and work my way up.  I realize this my be counter intuitive, since the reaches are drawn from upstream to downstream, but by working my way from bottom up, I usually avoid most the reach draw problems caused by the junctions not being in exactly the right place.  This draw order usually place new junctions (as needed) in the most right place for the reach to connect to.  Note that the individual reaches are still drawn from the upstream end of the reach to the downstream end of the reach, but Joan is recommending to start with the most downstream reach first, then the second most downstream reach, etc.  
  • Create your network based on the configuration.  If, while drawing in your reaches in your network, you find problems, go back to watershed setup, fix what is causing the problem, then start over with a new network or update your network from the configuration.  Once you have all your reaches and diversion added to the network, put in the pool data for your reservoirs and create at least one outlet.  Then create a "zones only" operation set (no rules).  Next, identify inflows at the headwater junctions and create an alternative.  Set the time step, operation sets, initial conditions, and then map a dummy inflow time series (use a constant value that can be passed by your single outlet) to each inflow location.  Finally, create a short simulation in which to test your alternative.  Once you have the alternative computing, follow the water…work your way from upstream to down verifying that the flows are summing up correctly and water is not appearing or disappearing unexpectedly.  This is a major step in model development.  It helps you verify the connectivity and gives you a chance to find potential problems and “fix things” without too much getting in your way, especially “operations”.   I consider it important when developing any model, simple or complex, but the bigger or more complex the model, the more vital this step becomes.  I would also add that you want to set your reservoir elevation to the top of conservation in the lookback period.  This will avoid having ResSim hold or release some of the constant inflow.  Once you have this "no rules" model working, I recommend building and testing the model one rule at a time.  This allows for a better understanding of how each rule impacts the system and makes debugging the model much faster.  For information about how to do this, see the July 19, 2016 post (with linked video) discussing "Replace from base" and "Save to base".  These options are useful for model development in the simulation module.   


Comments