@@ -54,7 +54,7 @@ class Reservoir(HydroModule):
54
54
55
55
Referenecs:
56
56
-----------
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
58
58
Global Flood Models, Journal of Advances in Modeling Earth Systems, 14,
59
59
https://doi.org/10.1029/2021MS002944, 2022.
60
60
"""
@@ -187,10 +187,7 @@ def initial(self):
187
187
flood_outflow = lookupscalar (str (binding ['ReservoirFloodOutflow' ]), ReservoirSitePcr )
188
188
flood_outflow = compressArray (flood_outflow )
189
189
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 )
194
191
195
192
# INITIAL CONDITIONS
196
193
@@ -236,7 +233,6 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
236
233
237
234
InvDtSecDay = 1 / float (86400 )
238
235
# InvDtSecDay=self.var.InvDtSec
239
-
240
236
241
237
# storage limits
242
238
conservative_fill = self .var .ConservativeStorageLimit
@@ -248,7 +244,7 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
248
244
normal_outflow = self .var .NormalReservoirOutflow
249
245
conservative_outflow = normal_outflow * conservative_fill / flood_fill
250
246
flood_outflow = self .var .FloodReservoirOutflow
251
-
247
+
252
248
# reservoir inflow in [m3/s]
253
249
# (LddStructuresKinematic equals LddKinematic, but without the pits/sinks upstream of the structure
254
250
# locations; note that using Ldd here instead would introduce MV!)
@@ -260,9 +256,14 @@ def dynamic_inloop(self, NoRoutingExecuted: int):
260
256
# flood event
261
257
inflow_mask = inflow >= flood_outflow
262
258
263
- # update reservoir storage [m3] and filling [- ]
259
+ # current reservoir storage [m3]
264
260
if NoRoutingExecuted == 0 :
265
261
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 [-]
266
267
self .var .ReservoirStorageM3CC += inflow_m3
267
268
self .var .ReservoirFillCC = self .var .ReservoirStorageM3CC / self .var .TotalReservoirStorageM3CC
268
269
0 commit comments