Using the Is_Full Output of a Reservoir

The Is_Full output is only available if you specify an Upper Bound for a Reservoir.  It is a condition (False if the Reservoir is below the Upper Bound, and True if it is at the Upper Bound.

This output is useful because it is a special type of output called a state variable (the primary output of a Reservoir is also a state variable). This has the important implication that inputs to the Reservoir (e.g., the Additions/Rate of Change) can reference this output without causing a recursive error.

As an example, suppose that you wanted to add water to a Reservoir only if it was not overflowing; once it started to overflow, you wanted the flow rate to go to zero. To accomplish this, you could define an Expression for the inflow rate as follows:

Unfortunately, because the Overflow_Rate is not a state variable, if you then tried to link this Expression into the Additions/Rate of Change input for the Reservoir, you would get this error:

However, you can solve this problem by using the Is_Full output:

If the Expression was defined as above, then you could link to this Expression into the Additions/Rate of Change field without causing a recursive error.

   Note: Although the Is_Full output allows you to create such feedback loops, you need to take care when using such logic to avoid creating unrealistic oscillatory behavior.

Related Topics…

Learn more about: