Versions Compared

Key

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

...

The model definition for the reservoir can be configured in file that follows the Integrated Reservoir Model schema. The model options are described below.

Schema

Image Added


An example Integrated Reservoir Model file is attached.

Code Block
languagexml
<IntegratedReservoirModel xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews https://fewsdocs.deltares.nl/schemas/version1.0/adapter-schemas/IntegratedReservoirModel.xsd">
    <general>
        <missingValue>-999</missingValue>
    </general>
    <reservoir id="H555001">
        <general>
            <description>reservoir management H555001</description>
            <poolRoutingScheme>levelPoolMethod</poolRoutingScheme>
            <dynamicInterpolation>true</dynamicInterpolation>
            <elevationInterpolationMethod>linear interpolation</elevationInterpolationMethod>
            <elevationInterval>0.00005</elevationInterval>
        </general>
        <!--Height (LGH) vs. Storage (m3)-->
        <storageCharacteristics>
            <storageTable>
                <elevationStorageRecord elevation="292.9" storage="0"/>
                <elevationStorageRecord elevation="293.0" storage="500"/>
                ...
                <elevationStorageRecord elevation="335.4" storage="720992000"/>
                <elevationStorageRecord elevation="335.6" storage="732795000"/>
            </storageTable>
        </storageCharacteristics>
        <!--Height (LGH) vs Spill (m3/s-->
        <uncontrolledOutlet id="outlet">
            <capacityCharacteristics>
                <outletTable>
                    <elevationOutletRecord elevation="292.9" outlet="0"/>
                    <elevationOutletRecord elevation="293.0" outlet="0"/>
					...
                    <elevationOutletRecord elevation="335.4" outlet="9768"/>
                    <elevationOutletRecord elevation="335.6" outlet="10278"/>
                </outletTable>
            </capacityCharacteristics>
            <input>
                <release>QOut</release>
            </input>
            <output>
                <release>QOut</release>
            </output>
        </uncontrolledOutlet>
        <input>
            <inflow>IIn</inflow>
            <level>HIn</level>
        </input>
        <output>
            <inflow>IOut</inflow>
            <release>QOut</release>
            <storage>SOut</storage>
            <level>HOut</level>
        </output>
    </reservoir>
</IntegratedReservoirModel>

Schema

Image Removed

general

reservoir

general

interpolationMethod

ReservoirRouting Method

Tables

strictly increasing, same number of elements

storageCharacteristics

...

general

In the general section, a missingValue element needs to be configured. It is important to match the missingValue as defined in the Delft-FEWS General Adapter configuration for the model run.

reservoir

The reservoir element contains the following sections:

  • general
    • poolRoutingScheme
    • dynamicInterpolation
    • elevationInterpolationMethod
    • elevationInterval
    • storageCharacteristics
  • uncontrolledOutlet
  • input
  • output

poolRoutingScheme

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

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.

 This basis of this method is the following function:

 ((2S_(t+1))/Δt+Q_(t+1) )=(I_t+I_(t+1))+((2S_t)/Δt-Q_t )

In order to compute the outflow Qt, a storage-outflow function relating 2S/∆t+Q and Q is needed, this is the G(h) function. The elevation-storage-outflow table can be computed using this function:

 (h)=(2S(h))/Δt+Q(h)

In routing the flow through time, all terms in the right hand side of the above function are known, and so the values ((2S_(t+1))/Δt+Q_(t+1) ) can be computed. The value Qt+1 can be determined from the storage outflow function 2S/∆t+Q versus Q by linear interpolation of the tabular values. To set up the data required for the next time interval, the value K(t), ((2S_(t+1))/Δt-Q_(t+1) ) is calculated by:

 ((2S_(t+1))/Δt-Q_(t+1) )=((2S_(t+1))/Δt+Q_(t+1) )-2Q_(t+1)

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

 

  1. Loop over all time intervals from t=1 to t=tend.
  2. If t=1 then:
    1. S(1) = Qout(1) = K(1) = 0, the reservoir is initially empty.
    2. G(t+1) is computed with G(t+1)=[Q_in (t)+Q_in (t+1)]+K(t)
    3. Compute Qout(t+1) by linear interpolating the table using Qout(h) and G(h).
    4. K(t+1) = G(t+1) – 2 Qout(t+1)
  3. If t>1 then
    1. G(t+1) is computed with G(t+1)=[Q_in (t)+Q_in (t+1)]+K(t)
    2. Compute Qout(t+1) by linear interpolating the table using Qout(h) and G(h).
    3. K(t+1) = G(t+1) – 2 Qout(t+1)
backwardEulerMethod


dynamicInterpolation


elevationInterpolationMethod


elevationInterval


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:

...