Als er eenmaal een drtcmodel object is aangemaakt in de worklow (zie hieronder voor een voorbeeld), kunnen controllers worden toegevoegd zoals hieronder wordt getoond. Alleen PID- en timecontrollers worden op dit moment ondersteund.
PID-controller
Gebruik deze functie voor een PID-controller:
drtcmodel.add_pid_controller(structure_id='S_96544', observation_location='ObsS_96544', steering_variable='Crest level (s)', target_variable='Water level (op)', setpoint=13.2, upper_bound=13.4, lower_bound=12.8, pid_settings=pid_settings['global'])
Het pid_settings object moet een dictionary zijn zoals deze:
pid_settings["global"] = { "ki": 0.001, "kp": 0.00, "kd": 0.0, "maxspeed": 0.00033, }
In plaats van ['global'] kan ook een stuw_ID gebruikt worden, in dat geval worden die settings toegekend aan die specifieke stuw. Daarnaast blijft het ‘global’ element nodig voor andere kunstwerken.
Voor de betekenis van de parameters verwijzen we naar de D-RTC manual.
Time controller
Voor een time controller kan de volgende functie worden gebruikt:
drtcmodel.add_time_controller( structure_id="S_96548", steering_variable="Crest level (s)", data=timeseries.loc[:,'S_96548'] )
timeseries is een Pandas dataframe. Dat kan worden ingelezen uit een CSV (bijvoorbeeld). De naam van het kunstwerk moet gelijk zijn aan de naam van de betreffende kolom en de index van het dataframe moet de tijdstappen bevatten.
Aanmaken DRTCModel
Voorbeeld aanmaken drtcmodel-object:
drtcmodel = DRTCModel( hydamo, fm, output_path=output_path, rtc_timestep=60.0 )
hydamo bevat alle D-Hydamo DAMO2.2 objecten, ‘fm’ is het deels opgebouwde 1D-model, output_path is de locatie waar het model geplaatst zal worden en rtc_timestep is de beoogde tijdstap in seconden.
0 Comments