Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Level Pool method is a well known method for reservoir routing. in FEWS the method described in Applied hydrology Hydrology from V.T.Chow (1988) is used. The level pool routing method is also referred to as Storage routing, the Storage-Indication method, or the Modified Puls method. Level Pool routing is a procedure for calculating the outflow hydrograph form a reservoir with a horizontal water surface, given its inflow hydrograph and storage-release characteristics. 

The reservoir routing procedure in the Level Pool method is as follows:

...

  • S represents the reservoir storage
  • O represents the reservoir release
  • Δt represents the time step

For each row in the the uncontrolledOutlet capacityCharacteristics outletTable, we can now precompute a G[S] value. This allows us the model to look up the release O for a given G.

Image Added

The level pool method makes use of the following relations, that follow from the water balance equations (details in the handbookshandbook):

K[t] = G[t-1] - 2*O[t-1]

G[t]= ( I[t-1] + I[t] )+K[t]

 For the computation, we loop over all time intervals from t=1 0 to t=tend.

  1. If t=0
    1. Use the state values as provided in the input files. If either a level, or a storage are provided, look up the equivalent value.
    2. In case both level and storage are provided, use the lookup value to determine any inconsistencies. If found, the level is used as the basis and the storage at t=0 is recalculated
    3. no computation takes place at t=0
  2. If t=1 then
    1. K[1] = 2*S[0]/Δt - O[0] (inital storage and release values are known)
    2. G[1] is computed with G[1]= ( I[0] + I[1] )+K[1]
    3. Compute O[1] by linear interpolating the table using O(S) and G(S).
    4. In case an O_input[1] timeseries is provided, O[1] = O_input[1]
    5. S(1) = S(0) + Δt* ( I[1] - O[1] )
  3. If t>1 then
    1. K[t] = G[t-1] - 2*O[t-1]
    2. G[t] is computed with G[t]= ( I[t-1] + I[t] )+K[t]
    3. Compute O(t) by linear interpolating the table using O(S) and G(S).
    4. In case an O_input[t] timeseries is provided, O[t] = O_input[t]
    5. S(t) = S(t-1) + Δt* ( I[t] - O[t] )

When the model that is configured to use the level-pool method is run in debug mode, the diagnostics will write the values for G and K for each timestep.

backwardEulerMethod

The backward Euler reservoir routing scheme is an implicit scheme that uses the backward difference approximation for the derivative. The equation for the backward Euler reservoir routing scheme can be written as follows:

S[t+1] = S[t] + Δt* ( I[t+1] - O[t+1,S[t]] )

where:

  • S[t+1] represents the reservoir storage at the next time step (n+1)
  • S[t] represents the reservoir storage at the current time step (n).
  • Δt represents the time step.
    I[t+1] is the inflow into the reservoir at the next time step (n+1).
  • O[t+1,S[t]] is the reservoir release at the next time step (n+1), based on the storage-release relation using S[t] for the lookup input.
dynamicInterpolation

When the dynamicInterpolation element is set to true, the level/storage and level/outlet tables are dynamically (every timestep) interpolated to the precise value, using the elevationInterpolationMethod. In this case, the elevationInterval element is ignored. 

...

The <input><release> element can be set to the timeseries variable that can overwrite (take precedence) the lookup value for the release. This means that for a given timestep, if the release input timeseries (e.g. QIn) contains a value, this release is applied. 

The <output><release> element determines where the resulting release timeseries is saved to to.

input / output variables and files

...