...

for the *poolRoutingScheme* element, one can choose the following options:

- levelPoolMethod
- backwardsEulerMethod

##### levelPoolMethod

The Level Pool method is a well known method for reservoir routing. in FEWS the method described in Applied hydrology from V.T.Chow is used. The level pool routing method is also referred to as Storage routing, the Storage-Indication method, or the Modified Puls method.

...

- Loop over all time intervals from t=1 to t=t
_{end}. - If t=1 then:
- S(1) = Q
_{out}(1) = K(1) = 0, the reservoir is initially empty. - G(t+1) is computed with G(t+1)=[Q_in (t)+Q_in (t+1)]+K(t)
- Compute Q
_{out}(t+1) by linear interpolating the table using Q_{out}(h) and G(h). - K(t+1) = G(t+1) – 2 Q
_{out}(t+1)

- S(1) = Q
- If t>1 then
- G(t+1) is computed with G(t+1)=[Q_in (t)+Q_in (t+1)]+K(t)
- Compute Q
_{out}(t+1) by linear interpolating the table using Q_{out}(h) and G(h). - K(t+1) = G(t+1) – 2 Q
_{out}(t+1)

##### backwardEulerMethod

##### dynamicInterpolation

##### elevationInterpolationMethod

...

#### storageCharacteristics

strictly increasing, same number of elements

#### uncontrolled outlet

same number of elements

#### input / output files

The naming convention of the input and output timeseries files are free, the model will determine which files to read for the input 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:

Q[t+1] = Q[t] + Δt * I[t+1]

where:

Q[t+1] represents the reservoir outflow at the next time step (n+1).

Q[t] is the reservoir outflow 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).

In this scheme, the outflow at the next time step is calculated by adding the product of the time step and the difference between the inflow and evaporation at the next time step to the current outflow.

##### 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.

When the *dynamicInterpolation *element is set to *false*, the level/storage and level/outlet tables are precalculated (only once) using the *elevationInterpolationMethod, *to the specified *elevationInterval. *Note that the level output at each timestep is processed to that elevationInterval. When a value needs to be determined from the table the largest entry that is still smaller than the precalculated table elements is used (the model always rounds down). The consequence is that reservoir inflows/outflows at a timestep that result in level/storage changes that are smaller than the interval/resolution will not be taken into account. This means that the model will underestimate the flow and water balance will not be closed.

##### elevationInterpolationMethod

Linear interpolation is the only available interpolation method

##### elevationInterval

The elevationInterval or elevation resolution at which the configured level/storage and level/outlet tables need to be recalculated.

#### storageCharacteristics

strictly increasing, same number of elements

#### uncontrolled outlet

same number of elements

#### input / output files

The naming convention of the input and output timeseries files are free, the model will determine which files to read for the input based on the *inputTimeSeriesFile* filed in the run_info file. The following two input timeseries files are suggested:

...

The startDateTime and endDateTime in the run_info file are used by the model to determine the start (*startDateTime*) and end (*endDateTime*) of the model run. The model will pick the starting (state) value for level/storage (level has precedent in case of an inconsistency), inflow, release from the inputTimeSeriesFiles at the specific .

If a starting level value is missing, the model will use the starting storage value. If both starting level/storage cannot be determined from the input files, the model will throw an error.

inflow and outflow values at the starting time are not required at the first timestep. When they are not found, a value of 0 is used.

...