Open casadoj opened 4 months 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.
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: