This unit describes a Stella model motivated by the midwestern floods of 1995. During the summer of 1995 the Mississippi and Missouri rivers, along with many of their tributaries, flooded massive amounts of farmland in Iowa, Illinois and Missouri. Many smaller towns were devastated and the public drinking water system of Des Moines, Iowa was shut down for several days.
During and after the flood much attention was focused on the common practice of draining wetlands near rivers to produce farmland and the construction, by the Army Corps of Engineers, of many miles of dikes and dams along rivers. While this system of levees usually protects farmland and developed areas along rivers from floods, the very existence of these flood control structures also make floods more likely due to the destruction of water absorbing and flow retarding wetlands. The levees do not allow excess water a way to escape the river channel. Historically, the river bottoms provided the relief valves for excess water in river systems.
The goal of this model is to examine the effects of levee construction on the ability of a hypothetical river to absorb heavy runoff without causing serious flooding. In the process of this investigation students will be asked to perform some laboratory experiments on the behavior (viscosity) of water flow and to do some mathematical curve fitting. In addition, it is hoped that awareness of the danger of excessive flood control structures will be demonstrated.
It should also be pointed out that this model illustrates the ability of computational science to investigate phenomena of physical import without performing an experiment directly involving the system under study. Indeed, it would be a very expensive experiment to intentionally create floods on a major river just to examine the mitigating effects of wetlands.
The main idea behind the river model is to divide a length of river into a reasonable number of discrete sections. Each section will be considered a separate basin or pool. Each basin contains a certain amount of water which results in a certain average water level in the basin. The relationship between the quantity of water held in a basin and the resulting water level depends critically on the shape of the basin. A section of river flowing through a swamp will experience only a small rise in water level as the quantity of water held in the basin increases. This is because the new water has a large surface area over which to spread. Channelized stretches of river, such as are created when levees are built along side a river, will rise rapidly when faced with an increasing quantity of water because the water cannot spread out (at least until it breaches the levee!).
There are two interesting sets of dynamics in this model, both of which are amenable to student investigation at the junior or senior high school level. The first is to determine, for a given basin shape (cross section), how the water quantity is related to the water level within the basin. This is an interesting mathematical or emperical investigation. Since Stella is able to implement this relationship as a formula or as a graph, many different tools can be used with students to discover this relationship. As we shall see, the model requires a rule (formula or graph) which determines the river level given a known quantity of water within the basin.
The second important dynamic is to determine how water moves from one basin to the next. The model developed here makes the assumption that the rate of flow from one basin to the next is determined by the difference in the water levels for two adjacent basins. The greater the difference, the greater the flow from the higher basin to the lower. The exact formula for this transfer will depend on both the physical properties of water and the shape of the river bed. Convenient but realistic assumptions can be made concerning the shape of the river bed. The physical properties of water can be determined via the literature or extrapolated from laboratory experiments. (I shouldn't speak so confidently; I've done neither.)
For the sake of the Stella model developed below it was necessary to ascertain a reasonable relationship between differing water levels and flows between basins. It must be emphasized that the functions offered here, while reasonable, are not scientifically derived.
If we let DH be the difference in water level between two
adjacent basins, then the model below uses the following formula to
determine the amount of water flowing between the basins during each
time step:
flow = permeability * DH
where permeability is a constant which will vary depending on
the shape of the river basin being studied and the time step being
used in the model. For example, the Cannon River is a narrow river
about 50 feet wide. The Mississippi River is considerably wider along
most of its route. For a given difference in water level, the amount
of water flowing along the Mississippi is going to be much larger than
the amount of water flowing along the Cannon River.
It is important to note that DH can be positive or negative, as can the variable flow. The equation works fine in these strange cases. Generally things are set up to that DH is positive as we move downstream, but it is possible, in extreme circumstances, for a river to flow "uphill" (actually, backwards would be more accurate) if enough runoff is quickly introduced to a portion of the river. In this event the water level of the affected section would rise so quickly that water would temporarily drain out of both ends of the basin. This would be reflected in negative values for DH and flow.
This linear relationship between the height difference and flow rate is almost certainly incorrect. My guess is that the rate of flow goes up faster than linearly with increasing water level difference. Changing the model presented below to incorporate a more complicated relationship is easily done. It is also possible to use a graphical relationship, obviating the need for a formula at all.
The determination of the relationship between the amount of water held in a basin and the mean water level of the basin can be treated as either a mathematics problem or an empirical problem. The empirical approach can be done in a lab setting with a physical model of the basin. Just dump varying (known) quantities of water into the model and observe the resulting water level. Once enough observations have been realized make a graph of the results, scaling up the numbers to the true size of the river. The graph can be used within Stella to define the relationship observed in the lab.
An interesting mathematical problem can be formulated by making assumptions about the shape of the river basin and deriving formulas relating water level to water volume. Interesting river cross section shapes include a square U shape (two vertical walls with a horizontal floor), an upside down bell-curve (a fairly natural looking river cross section whose formula is y=1-exp(-x^2)), and the shape of the letter V. The first and third of these cross sections lead to easy formulas for height in terms of volume. The exponential shape is a harder one to analyze, involving integrals without easily written anti-derivatives. The mathematically shy may want to stay away from this one.
For the model below a cross section in the shape of the letter V is assumed. The angle at the base of the V determines whether the river has been channelized or not. A basin surrounded by wetlands and river bottom will have a cross section with a large angle at the base of the V, creating a cross section which is almost flat. A lot of water is needed to raise the water level a little. A channelized river will be modeled with a V whose angle is quite small, indicating that the water in the channel cannot spread outward very far. As we shall see, the sharpness of the angle in the V is an adjustable parameter in our Stella model.
Before we move to the example model, there is one more technical note of general concern. This is the importance of time scales in this problem. All the flow rates are in terms of volume per unit time. Consequently, the functions or graphs used to compute flow rates will be different for different time units. A ten foot difference in height will produce a flow of a certain number of cubic meters per day (a time step of one day) which will differ from the number of cubic meters per minute (a time step of one minute). It is not difficult to convert between these units, but it is important to keep the units in mind.
It is beneficial to use small time steps in this model. This is because the flow rates are only changed once per time step. If you use a relatively long time step, it may be that water levels have changed significantly during the course of one time step, but the model will not know this and thus cannot adjust the flow rate to account. In extreme cases this can result in basins with negative quantities of water in them. More commonly the model will exhibit oscillatory behavior as the model repeatedly overcompensates for the swiftly changing water levels.
If small time units are choosen from the beginning, flow updates are more frequent, reducing the likelihood of artificial oscillatory behavior. If you have built a model only to discover oscillatory behavior, it is perfectly fine to adjust the time step (DT) within STELLA using the TIME SPECS... item under the RUN menu. (This is a departure from the usual rule that we use DT=1 in our models.)
In this section we give the details of an example which uses the ideas discussed above to model a section of river. In this example we model the stretch of river as four basins, each represented by a Stella reservoir. For each basin two quantities are calculated. The reservoir gives the volume of water found in that basin. A nearby converter computes the water level which would result from holding the indicated volume of water. Certain parameters are used in the formulas which compute water level from water volume and which determine the flow rates into and out of each basin. The values of these parameters are kept in converters. Each basin uses an independent set of these parameter values.
The first function, the formula for computing water level as a function of water volume within the basin, requires two parameters in this model: an empty height (EH) parameter which gives the height of the water level when the basin is empty, usually the height of the bottom of the basin, and a scaling parameter (A) which depends on the exact shape of the basin. This paramater A is the quantity we will use to model the degree of channelization.
The exact form of this formula is:
Water Level = EH + A*sqrt(Volume)
This formula corresponds to the V shaped channel. A low value of
A corresponds to a flat channel while a higher value of
A would be appropriate to model a stream confined by levees.
If you choose to use another shape for your channel, such as the
square U cross section, this formula and its parameters would need to
be changed.
The second type of formula used in this example is the formula which governs the water flow from one basin to the next. As mentioned in the earlier sections, this relationship is based on the difference in water levels and the geological relationship between the two basins. The formula used in this model is a gross simplification of the real process, but a useful one in the current context.
This example assumes the flow rate is proportional to the difference
in water levels. The formula requires one parameter which is called
the permeability. The actual formula is:
flow = perm*(height(i)-height(i+1))
where perm is the permeability parameter and
height(i) is the mean water level of the i-th basin.
The flow computed here is the flow from basin i to
basin i+1. Note that if basin i+1 has a higher
water level than basin i, the flow will be negative,
indicating that water is flowing into basin i rather than out
of it.
The desirability of being able to model the possible backing up of a river requires that the valves connecting basin in the Stella model be bidirectional. By default Stella valves are unidirectional. Such a valve can be made bidirectional by double-clicking on the valve and then clicking on the appropriate button in the upper lefthand corner of the resulting window.
The "normal" direction of flow of the river is determined by the relative values of the basin empty heights. Typically water will flow from the higher basins into the lower.
In addition to the water which moves downstream from one basin to the next, an important part of the system involves water entering the river from tributaries. In the case of heavy rainfall or other types of flash floods, these tributaries are the vehicles for getting flood water into the river system in the first place.
The model presented here accounts for tributaries by creating a single pipeline flowing into each basin. The flow along this pipeline is called the Inflow, a slightly misleading name since flow is also coming into most basins from other basins. As you will be able to see from the program listing, these tributaries flows are given constant values in the example model. This is simply to allow the river system to reach an equilibrium. These flows can certainly be time dependent. In fact, if you cared to model a flash flood you would want to arrange for one of these inflows to be turned way up for a short period of time. (See the Stella manual for how to use the variable TIME in formulas for valves and converters.)
In any model of this type the first and last basins require some special attention. The first (most upstream) basin is relatively easy to handle; simply give it a tributary inflow but note that it will have no inflow from an upstream basin (since there is no such basin).
The last (most downstream) basin is a little trickier because it must contain an outflow but the rate of this outflow cannot be computed in the usual way because there is no downstream water level. Some reasonable assumption must be made. In the example presented here it is assumed the last basin drains into a tideless ocean, a basin whose water level is assumed to always be zero. Thus the flow rate out of the last basin depends only on its own height.
Here is the diagram of the Stella model described above. Notice that each reservoir has three associated converters. Two of these converters hold the parameter values EH and A for the basin. The third holds the formula for computing the water level in the basin given the volume of water being held. Each basin also has an inflow corresponding to tributary flows.
Each pipeline connecting two reservoirs has a Perm converter
which holds the permeability parameter value for that flow.
The careful viewer will note that two graphs and one table have been
defined for this model. The graphs show water volume and level for
each basin over time. The table shows the water levels over time.
These displays are useful in analyzing the behavior of the river over
time and for different values of the parameters A.
The image below gives the details of the model's formulas and
parameter values. This information should give you enough of a start
to recreate this model and play with it. Feel free to make changes to
explore the system's dynamics.