@@ -496,6 +496,55 @@ def level_range_model() -> Model:
496
496
return model
497
497
498
498
499
+ def storage_condition_model () -> Model :
500
+ """Create a model with a discrete control condition based on the storage of a Basin."""
501
+ model = Model (
502
+ starttime = "2020-01-01" ,
503
+ endtime = "2021-01-01" ,
504
+ crs = "EPSG:28992" ,
505
+ )
506
+
507
+ fb = model .flow_boundary .add (
508
+ Node (1 , Point (0 , 0 )), [flow_boundary .Static (flow_rate = [1e-3 ])]
509
+ )
510
+
511
+ bsn = model .basin .add (
512
+ Node (2 , Point (1 , 0 )),
513
+ [basin .Profile (area = 1000.0 , level = [0.0 , 10.0 ]), basin .State (level = [5.0 ])],
514
+ )
515
+
516
+ pmp = model .pump .add (
517
+ Node (3 , Point (2 , 0 )),
518
+ [
519
+ pump .Static (
520
+ control_state = ["off" , "on" ], flow_rate = "1e-3" , active = [False , True ]
521
+ )
522
+ ],
523
+ )
524
+
525
+ tmn = model .terminal .add (Node (4 , Point (3 , 0 )))
526
+
527
+ dc = model .discrete_control .add (
528
+ Node (5 , Point (1 , 1 )),
529
+ [
530
+ discrete_control .Variable (
531
+ compound_variable_id = 1 , listen_node_id = 2 , variable = ["storage" ]
532
+ ),
533
+ discrete_control .Condition (
534
+ compound_variable_id = 1 , condition_id = 1 , threshold_high = [7500 ]
535
+ ),
536
+ discrete_control .Logic (truth_state = ["F" , "T" ], control_state = ["off" , "on" ]),
537
+ ],
538
+ )
539
+
540
+ model .link .add (fb , bsn )
541
+ model .link .add (bsn , pmp )
542
+ model .link .add (pmp , tmn )
543
+ model .link .add (dc , pmp )
544
+
545
+ return model
546
+
547
+
499
548
def connector_node_flow_condition_model () -> Model :
500
549
"""DiscreteControl with a condition on the flow through a connector node."""
501
550
model = Model (
0 commit comments