Skip to content

Commit 6f07bf3

Browse files
authored
Merge pull request #201 from ec-jrc/feature/reservoir_k
Dynamic release coefficient k
2 parents 4857715 + c6553b1 commit 6f07bf3

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4.3.1.503
1+
4.3.1.504

src/lisflood/hydrological_modules/reservoir.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class Reservoir(HydroModule):
5454
5555
Referenecs:
5656
-----------
57-
Hanazaki, R., Yamazaki, D., Yoshimura, K.: Development of a Reservoir FLood Control Scheme for
57+
Hanazaki, R., Yamazaki, D., Yoshimura, K.: Development of a Reservoir Flood Control Scheme for
5858
Global Flood Models, Journal of Advances in Modeling Earth Systems, 14,
5959
https://doi.org/10.1029/2021MS002944, 2022.
6060
"""
@@ -187,10 +187,7 @@ def initial(self):
187187
flood_outflow = lookupscalar(str(binding['ReservoirFloodOutflow']), ReservoirSitePcr)
188188
flood_outflow = compressArray(flood_outflow)
189189
flood_outflow = np.compress(self.var.ReservoirSitesC > 0, flood_outflow)
190-
self.var.FloodReservoirOutflow = np.maximum(self.var.NormalReservoirOutflow, factor_outflow * flood_outflow)
191-
192-
# release coefficient
193-
self.var.k = np.maximum(1 - 5 * self.var.TotalReservoirStorageM3CC * (1 - self.var.FloodStorageLimit) / self.var.CatchmentAreaM2, 0)
190+
self.var.FloodReservoirOutflow = np.maximum(self.var.NormalReservoirOutflow, factor_outflow * flood_outflow)
194191

195192
# INITIAL CONDITIONS
196193

@@ -236,7 +233,6 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
236233

237234
InvDtSecDay = 1 / float(86400)
238235
# InvDtSecDay=self.var.InvDtSec
239-
240236

241237
# storage limits
242238
conservative_fill = self.var.ConservativeStorageLimit
@@ -248,7 +244,7 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
248244
normal_outflow = self.var.NormalReservoirOutflow
249245
conservative_outflow = normal_outflow * conservative_fill / flood_fill
250246
flood_outflow = self.var.FloodReservoirOutflow
251-
247+
252248
# reservoir inflow in [m3/s]
253249
# (LddStructuresKinematic equals LddKinematic, but without the pits/sinks upstream of the structure
254250
# locations; note that using Ldd here instead would introduce MV!)
@@ -260,9 +256,14 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
260256
# flood event
261257
inflow_mask = inflow >= flood_outflow
262258

263-
# update reservoir storage [m3] and filling [-]
259+
# current reservoir storage [m3]
264260
if NoRoutingExecuted == 0:
265261
self.var.ReservoirStorageM3CC = np.compress(self.var.ReservoirSitesC > 0, self.var.ReservoirStorageM3)
262+
263+
# release coefficient
264+
self.var.k = np.maximum(1 - (self.var.TotalReservoirStorageM3CC - self.var.ReservoirStorageM3CC) / (self.var.CatchmentAreaM2 * 0.2), 0)
265+
266+
# update reservoir storage [m3] and filling [-]
266267
self.var.ReservoirStorageM3CC += inflow_m3
267268
self.var.ReservoirFillCC = self.var.ReservoirStorageM3CC / self.var.TotalReservoirStorageM3CC
268269

0 commit comments

Comments
 (0)