There may be runoff from the site or movement of water out of the saturated zone, either of which would relieve flooding. Also, as the site gets wetter, the species composition of the vegetation of the site may change. The Gaia Principle suggests that the biota can regulate abiotic conditions to maintain them in the range that is suitable for life. Thus, as the site floods, plants with high transpiration rates may proliferate, removing water from the site in a nice feedback loop.
Finally, the amount of vegetation on the site will change with hydrological conditions. NPP stands for net primary productivity; it is the amount of carbon assimilated by an ecosystem per unit time. I have two issues with how NPP is incorporated in this model.
- In the model, NPP is a defined dataset, changing only with the season, but in reality, NPP would change with the hydrological status of the site. When the site gets very dry, NPP declines. To a point, as the site moves closer to saturation, NPP increases, increasing transpiration (per the Gaia Principle), in a self-regulating feedback loop.
- A more fundamental problem is that NPP is a rate, but it is used in the model as a stock. NPP is the rate of accumulation of biomass. But in modeling transpiration as NPP * transpiration rate (on a tissue-mass basis), NPP is being confused with plant biomass. That is, transpiration should be a function of standing biomass * transpiration per unit of biomass, not biomass added per unit time * transpiration per unit of biomass.
2. In fact when the Unsat_Depth decreases, certain amounts of unsaturated water get lost because they are no longer in the unsaturated zone. Imagine the water table rising and therefore the saturated water occupying more of the unsaturated zone. The unsaturated water in that marginal loss of the unsaturated depth will be lost from the Unsat_Water stock. Add this process to the Stella model. Is there a big difference in the results?
Wow, this question took me way too much struggle, I think because I was confused by the units in the original model. Unsat_Depth sounds to me like it should be in meters, while Unsat_Water should be in cubic meters or liters, but to keep it simple the original model is all in depth. So, all I had to do was add this conditional to the percolation statement:
if Unsat_Water>Unsat_DepthOriginally I had it as a seperate outflow from unsat_water, but then you could get outflow both due to percolation and the water table rising, which would be the same water leaving twice, so that's why I put it in the percolation, despite it making a fairly long conditional.
This change alters the behavior of the model very little because as the system is set up, unsat_depth is almost always greater than unsat_water. With different parameter values, though, it could make quite a difference.