casadoj / lisflood-reservoirs

An analysis of possible improvements in the reservoir representation in the hydrological model LISFLOOD Open Source.
GNU General Public License v3.0
0 stars 0 forks source link

Reservoir level simulation #2

Open casadoj opened 4 months ago

casadoj commented 4 months ago

Add to the class Reservoir a method that estimates reservoir level from storage as used in Shrestha et al. (2024).

The interest would be to compare the results against observations taken either from in situ instruments (level is easier to obtain than volume) or satellite altimetry.

To estimate reservoir level from the simulated volume we can approximate the reservoir shape to a triangular pyramid (Liebe 2005) as done by Shrestha (2024), Sadki (2023), Shin (2019). Under this assumption, there is a shape coefficient $\alpha$ that represents at the same time a relation between the current reservoir depth and its maximum depth, and the current reservoir storage and its total capacity:

$$\alpha = \frac{h}{Height} = \left( \frac{v}{Capacity} \right)^{1/3}$$

where $h$ is the estimated water depth and $v$ the model reservoir storage. From that equation we can estimate the current water depth $h$ (the only unknown) and use it to estimate the current reservoir level ($l$):

$$h = Height \cdot \alpha = Height \cdot \left( \frac{v}{Capacity} \right)^{1/3}$$

$$l = h + Z$$

Therefore, we need three attributes that can be extracted from GRanD:

casadoj commented 1 month ago

I've created the method estimate_level() in the class Basemodel.

Another option would have been to define two new attributes of the Basemodel ("elev_masl" and "height_m") and compute the level in the timestep() or simulate() methods.