pydra-core 0.0.1__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- pydra_core/__init__.py +32 -0
- pydra_core/common/__init__.py +0 -0
- pydra_core/common/common.py +98 -0
- pydra_core/common/enum.py +63 -0
- pydra_core/common/interpolate.py +345 -0
- pydra_core/common/probability.py +293 -0
- pydra_core/core/__init__.py +0 -0
- pydra_core/core/calculation.py +51 -0
- pydra_core/core/datamodels/__init__.py +0 -0
- pydra_core/core/datamodels/frequency_line.py +60 -0
- pydra_core/core/exceedance_frequency_line.py +224 -0
- pydra_core/core/exceedance_frequency_line_experimental.py +163 -0
- pydra_core/core/hbn.py +226 -0
- pydra_core/data/settings/calculation_settings.sqlite +0 -0
- pydra_core/data/settings/lower_river_settings.cpg +1 -0
- pydra_core/data/settings/lower_river_settings.dbf +0 -0
- pydra_core/data/settings/lower_river_settings.prj +1 -0
- pydra_core/data/settings/lower_river_settings.shp +0 -0
- pydra_core/data/settings/lower_river_settings.shx +0 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_2017.txt +37 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_2017_metOnzHeid.txt +46 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2015_metOnzHeid_v02.txt +50 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2015_v02.txt +42 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2050_metOnzHeid_v02.txt +56 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2050_v02.txt +48 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2100_metOnzHeid_v02.txt +56 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2100_v02.txt +48 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2015_metOnzHeid_v02.txt +50 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2015_v02.txt +42 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2050_metOnzHeid_v02.txt +56 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2050_v02.txt +48 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2100_metOnzHeid_v02.txt +51 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2100_v02.txt +44 -0
- pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_Ref.txt +28 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_2017.txt +31 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_2017_metOnzHeid.txt +33 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2015.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2015_metOnzHeid.txt +34 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2050.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2050_metOnzHeid.txt +34 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2100.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2100_metOnzHeid.txt +39 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2015.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2015_metOnzHeid.txt +34 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2050.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2050_metOnzHeid.txt +34 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2100.txt +44 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2100_metOnzHeid.txt +34 -0
- pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_Ref.txt +14 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_2017.txt +47 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_2017_metOnzHeid.txt +47 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2015.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2015_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2050.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2050_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2100.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2100_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2015.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2015_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2050.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2050_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2100.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2100_metOnzHeid.txt +59 -0
- pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_Ref.txt +21 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_2017.txt +33 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_2017_metOnzHeid.txt +60 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_BenedenRijn.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_BenedenRijn.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100.txt +49 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_BenedenRijn.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_BenedenRijn.txt +51 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_BenedenRijn.txt +51 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100.txt +50 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_BenedenRijn.txt +51 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_metOnzHeid.txt +63 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_metOnzHeid_BenedenRijn.txt +65 -0
- pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_Ref.txt +23 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_2017.txt +55 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_2017_metOnzHeid.txt +55 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2015.txt +46 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2015_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2050.txt +46 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2050_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2100.txt +46 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2100_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2015.txt +47 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2015_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2050.txt +47 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2050_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2100.txt +47 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2100_metOnzHeid.txt +65 -0
- pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_Ref.txt +15 -0
- pydra_core/data/statistics/Golfvorm/Borgharen/Golfvormen_Borgharen.txt +76 -0
- pydra_core/data/statistics/Golfvorm/Dalfsen/Golfvormen_Dalfsen.txt +83 -0
- pydra_core/data/statistics/Golfvorm/Grevelingenmeer/Golfvormen_Grevelingenmeer.txt +34 -0
- pydra_core/data/statistics/Golfvorm/IJsselmeer/Golfvormen_IJsselmeer.txt +83 -0
- pydra_core/data/statistics/Golfvorm/Lith/Golfvormen_Lith.txt +76 -0
- pydra_core/data/statistics/Golfvorm/Lobith/Golfvormen_Lobith.txt +76 -0
- pydra_core/data/statistics/Golfvorm/Markermeer/Golfvormen_Markermeer.txt +140 -0
- pydra_core/data/statistics/Golfvorm/Olst/Golfvormen_Olst.txt +83 -0
- pydra_core/data/statistics/Golfvorm/Veerse Meer/Golfvormen_Veersemeer.txt +54 -0
- pydra_core/data/statistics/Golfvorm/Veluwerandmeer/Golfvormen_Veluwerandmeer.txt +140 -0
- pydra_core/data/statistics/Golfvorm/Volkerak-Zoommeer/Golfvormen_Volkerakzoommeer.txt +74 -0
- pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_2017.txt +13 -0
- pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_2017_metOnzHeid.txt +25 -0
- pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_v01.txt +13 -0
- pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_2017.txt +26 -0
- pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_2017_metOnzHeid.txt +40 -0
- pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_v01.txt +15 -0
- pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_2017.txt +19 -0
- pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_2017_metOnzHeid.txt +38 -0
- pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_v01.txt +11 -0
- pydra_core/data/statistics/Meerpeil/Veerse Meer/Ovkans_Veersemeer_piekmeerpeil_excl_peilverhoging.txt +14 -0
- pydra_core/data/statistics/Meerpeil/Veerse Meer/Ovkans_Veersemeer_piekmeerpeil_v01.txt +16 -0
- pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_2017.txt +14 -0
- pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_2017_metOnzHeid.txt +37 -0
- pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_v01.txt +14 -0
- pydra_core/data/statistics/Meerpeil/Volkerak-Zoommeer/Ovkans_VZM_piekmeerpeil_BER-VZM.txt +18 -0
- pydra_core/data/statistics/Meerpeil/Volkerak-Zoommeer/Ovkans_VZM_piekmeerpeil_BER-VZM_metOnzHeid.txt +43 -0
- pydra_core/data/statistics/Restant/Oosterschelde/BesliskansenOSKering.txt +525 -0
- pydra_core/data/statistics/Restant/Oosterschelde/KansenFaseverschil_2023.txt +8 -0
- pydra_core/data/statistics/Restant/Oosterschelde/KansenFaseverschil_OS.txt +13 -0
- pydra_core/data/statistics/Restant/Oosterschelde/KansenStormduur_OS.txt +15 -0
- pydra_core/data/statistics/Restant/Oosterschelde/KansenStormduur_OS_40_60_80uur_2023.txt +17 -0
- pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2008.txt +24 -0
- pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2013.txt +19 -0
- pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2017.txt +19 -0
- pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2023.txt +14 -0
- pydra_core/data/statistics/Restant/Up2U/Up2U10.dat +59 -0
- pydra_core/data/statistics/Restant/Up2U/Up2Up.dat +59 -0
- pydra_core/data/statistics/Restant/Up2U/Up2Ustar.dat +59 -0
- pydra_core/data/statistics/Restant/hulpdijken.txt +60 -0
- pydra_core/data/statistics/Restant/hulpgolfhoogtes.txt +24 -0
- pydra_core/data/statistics/Restant/hulpgolfperiodes.txt +39 -0
- pydra_core/data/statistics/Restant/kansstormduur.txt +8 -0
- pydra_core/data/statistics/Restant/pwind_west.txt +34 -0
- pydra_core/data/statistics/Restant/pwind_west_met_Volkerfactor.txt +34 -0
- pydra_core/data/statistics/Restant/pwind_west_zonder_Volkerfactor.txt +34 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Midden/VS_sigmafunctie_Kust_Midden.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Midden/VS_sigmafunctie_Kust_Midden_2017.txt +23 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Noord/VS_sigmafunctie_Kust_Noord.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Noord/VS_sigmafunctie_Kust_Noord_2017.txt +23 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Zuid/VS_sigmafunctie_Kust_Zuid.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Zuid/VS_sigmafunctie_Kust_Zuid_2017.txt +23 -0
- pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS.txt +22 -0
- pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS_16sectoren_2023.txt +24 -0
- pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS_2017.txt +22 -0
- pydra_core/data/statistics/Sigmafunctie/Waddenzee Oost/VS_sigmafunctie_WZ_oost.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Waddenzee Oost/VS_sigmafunctie_WZ_oost_2017.txt +23 -0
- pydra_core/data/statistics/Sigmafunctie/Waddenzee West/VS_sigmafunctie_WZ_west.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Waddenzee West/VS_sigmafunctie_WZ_west_2017.txt +23 -0
- pydra_core/data/statistics/Sigmafunctie/Westerschelde/VS_sigmafunctie_WS.txt +19 -0
- pydra_core/data/statistics/Sigmafunctie/Westerschelde/VS_sigmafunctie_WS_2017.txt +23 -0
- pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Europoortkering Maas 2017.csv +631 -0
- pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Europoortkering Rijn 2017.csv +631 -0
- pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Hollandsche IJsselkering.csv +757 -0
- pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Oosterscheldekering 2017.csv +55081 -0
- pydra_core/data/statistics/Topduur/Borgharen/Topduur_Borgharen_2017.txt +19 -0
- pydra_core/data/statistics/Topduur/Borgharen/Topduur_Borgharen_v00.txt +14 -0
- pydra_core/data/statistics/Topduur/Dalfsen/Topduur_Dalfsen_2017.txt +20 -0
- pydra_core/data/statistics/Topduur/Dalfsen/Topduur_Dalfsen_v01.txt +16 -0
- pydra_core/data/statistics/Topduur/Grevelingenmeer/Topduur_Grevelingenmeer_2017.txt +14 -0
- pydra_core/data/statistics/Topduur/Grevelingenmeer/Topduur_Grevelingenmeer_v01.txt +14 -0
- pydra_core/data/statistics/Topduur/IJsselmeer/Topduur_IJsselmeer_2017.txt +20 -0
- pydra_core/data/statistics/Topduur/IJsselmeer/Topduur_IJsselmeer_v01.txt +15 -0
- pydra_core/data/statistics/Topduur/Lith/Topduur_Lith_2017.txt +19 -0
- pydra_core/data/statistics/Topduur/Lith/Topduur_Lith_v01.txt +17 -0
- pydra_core/data/statistics/Topduur/Lobith/Topduur_Lobith_2017.txt +19 -0
- pydra_core/data/statistics/Topduur/Lobith/Topduur_Lobith_v01.txt +17 -0
- pydra_core/data/statistics/Topduur/Markermeer/Topduur_Markermeer_2017.txt +20 -0
- pydra_core/data/statistics/Topduur/Markermeer/Topduur_Markermeer_v01.txt +12 -0
- pydra_core/data/statistics/Topduur/Olst/Topduur_Olst_2017.txt +20 -0
- pydra_core/data/statistics/Topduur/Olst/Topduur_Olst_v01.txt +16 -0
- pydra_core/data/statistics/Topduur/Veerse Meer/Topduur_Veersemeer_excl_peilverhoging.txt +13 -0
- pydra_core/data/statistics/Topduur/Veerse Meer/Topduur_Veersemeer_v01.txt +16 -0
- pydra_core/data/statistics/Topduur/Veluwerandmeer/Topduur_Veluwerandmeer_2017.txt +12 -0
- pydra_core/data/statistics/Topduur/Veluwerandmeer/Topduur_Veluwerandmeer_v01.txt +12 -0
- pydra_core/data/statistics/Topduur/Volkerak-Zoommeer/Topduur_Volkerakzoommeer_BER-VZM.txt +18 -0
- pydra_core/data/statistics/Windrichting/Deelen/Richtingskansen_Deelen_2017.txt +28 -0
- pydra_core/data/statistics/Windrichting/Hollandse Kust/KansenWindrichting_Kust.txt +17 -0
- pydra_core/data/statistics/Windrichting/Hollandse Kust/KansenWindrichting_Kust_2017.txt +24 -0
- pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_16sectoren_OS_2023.txt +31 -0
- pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_OS.txt +20 -0
- pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_OS_2017.txt +24 -0
- pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_12sectoren.txt +20 -0
- pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_12sectoren_2017.txt +20 -0
- pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_2017.txt +28 -0
- pydra_core/data/statistics/Windrichting/Schiphol/kanswindrichting_v01.txt +28 -0
- pydra_core/data/statistics/Windrichting/Waddenzee/KansenWindrichting_WZ.txt +17 -0
- pydra_core/data/statistics/Windrichting/Waddenzee/KansenWindrichting_WZ_2017.txt +24 -0
- pydra_core/data/statistics/Windrichting/Westerschelde/KansenWindrichting_WS.txt +17 -0
- pydra_core/data/statistics/Windrichting/Westerschelde/KansenWindrichting_WS_2017.txt +24 -0
- pydra_core/data/statistics/Windsnelheid/De Kooy/OvkansWindsnelheid_Texel.txt +70 -0
- pydra_core/data/statistics/Windsnelheid/De Kooy/Ovkanswind_de Kooy_2017.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/De Kooy/Ovkanswind_de Kooy_2017_metOnzHeid.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Deelen/Ovkanswind_Deelen_2017.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Deelen/Ovkanswind_Deelen_2017_metOnzHeid.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Hoek van Holland/OvkansWindsnelheid_Hoek van Holland.txt +70 -0
- pydra_core/data/statistics/Windsnelheid/Hoek van Holland/Ovkanswind_Hoek van Holland_2017.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Hoek van Holland/Ovkanswind_Hoek van Holland_2017_metOnzHeid.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/IJmuiden/OvkansWindsnelheid_IJmuiden.txt +70 -0
- pydra_core/data/statistics/Windsnelheid/IJmuiden/Ovkanswind_IJmuiden_2017.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/IJmuiden/Ovkanswind_IJmuiden_2017_metOnzHeid.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren.txt +51 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metOnzHeid.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metWindDrag.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metWindDrag_metOnzHeid.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_16sectoren_2017_metWindDrag.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_16sectoren_2017_metWindDrag_metOnzHeid.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_2017.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_2017_metOnzHeid.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_met_Volkerfactor_2017.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_met_Volkerfactor_2017_metOnzHeid.txt +90 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol.txt +58 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_10%.txt +64 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_5%.txt +62 -0
- pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_B_met volker.txt +60 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/OvkansWindsnelheid_OS.txt +67 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/OvkansWindsnelheid_Vlissingen.txt +70 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_16sectoren_2023.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_16sectoren_2023_metOnzHeid.txt +91 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metOnzHeid.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metWindDrag.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metWindDrag_metOnzHeid.txt +97 -0
- pydra_core/data/statistics/Windsnelheid/West-Terschelling/OvkansWindsnelheid_West-Tersch.txt +70 -0
- pydra_core/data/statistics/Windsnelheid/West-Terschelling/Ovkanswind_West Terschelling_2017.txt +92 -0
- pydra_core/data/statistics/Windsnelheid/West-Terschelling/Ovkanswind_West Terschelling_2017_metOnzHeid.txt +92 -0
- pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar1985_2017.txt +82 -0
- pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar1985_2017_metOnzHeid.txt +82 -0
- pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar2017.txt +82 -0
- pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar2017_metOnzHeid.txt +82 -0
- pydra_core/data/statistics/Zeewaterstand/Delfzijl/OvkansZee_Delfzijl.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar1985_2017.txt +90 -0
- pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar1985_2017_metOnzHeid.txt +90 -0
- pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar2017.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar2017_metOnzHeid.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Den Helder/OvkansZee_Den Helder.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar1985_2017.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar1985_2017_metOnzHeid.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar2017.txt +88 -0
- pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar2017_metOnzHeid.txt +88 -0
- pydra_core/data/statistics/Zeewaterstand/Den Oever/OvkansZee_Den Oever.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar1985_2017.txt +72 -0
- pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar1985_2017_metOnzHeid.txt +72 -0
- pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar2017.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar2017_metOnzHeid.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Hansweert/OvkansZee_Hansweert.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar1985_2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar2017.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar2017_metOnzHeid.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Harlingen/OvkansZee_Harlingen.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar1985_2017.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar1985_2017_metOnzHeid.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar2017.txt +84 -0
- pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar2017_metOnzHeid.txt +84 -0
- pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/OvkansZee_Hoek van Holland.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar1985_2017.txt +87 -0
- pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar1985_2017_metOnzHeid.txt +87 -0
- pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Huibertgat/OvkansZee_Huibertgat.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar1985_2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden/OvkansZee_IJmuiden.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar1985_2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/OvkansZee_IJmuiden_virtueel.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar1985_2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar2017.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar2017_metOnzHeid.txt +85 -0
- pydra_core/data/statistics/Zeewaterstand/Lauwersoog/OvkansZee_Lauwersoog.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2011.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2017.txt +89 -0
- pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2017_metOnzheid.txt +93 -0
- pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar2017.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar2017_metOnzheid.txt +86 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar1985_2017.txt +80 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar1985_2017_metOnzHeid.txt +80 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar2017.txt +80 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar2017_metOnzHeid.txt +80 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_16sectoren_12u_2023.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_16sectoren_12u_2023_metOnzHeid.txt +74 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/OvkansZee_OS11.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Oosterschelde/OvkansZeewaterstand_OS.txt +72 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar1985_2017.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar1985_2017_metOnzHeid.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar2017.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar2017_metOnzHeid.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen/OvkansZee_Vlissingen.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar1985_2017.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar1985_2017_metOnzHeid.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar2017.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar2017_metOnzHeid.txt +75 -0
- pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/OvkansZee_Vlissingen_virtueel.txt +71 -0
- pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar1985_2017.txt +88 -0
- pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar1985_2017_metOnzHeid.txt +88 -0
- pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar2017.txt +87 -0
- pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar2017_metOnzHeid.txt +87 -0
- pydra_core/data/statistics/Zeewaterstand/West-Terschelling/OvkansZee_West-Terschelling.txt +71 -0
- pydra_core/hrdatabase/__init__.py +0 -0
- pydra_core/hrdatabase/hrdatabase.py +177 -0
- pydra_core/io/__init__.py +0 -0
- pydra_core/io/database_hr.py +598 -0
- pydra_core/io/database_settings.py +183 -0
- pydra_core/io/file_hydranl.py +92 -0
- pydra_core/location/__init__.py +0 -0
- pydra_core/location/location.py +115 -0
- pydra_core/location/model/__init__.py +0 -0
- pydra_core/location/model/base_model.py +270 -0
- pydra_core/location/model/loading/__init__.py +0 -0
- pydra_core/location/model/loading/loading.py +368 -0
- pydra_core/location/model/loading/loading_factory.py +89 -0
- pydra_core/location/model/loading/loading_model/__init__.py +0 -0
- pydra_core/location/model/loading/loading_model/loading_model.py +324 -0
- pydra_core/location/model/loading/other_systems/__init__.py +0 -0
- pydra_core/location/model/loading/other_systems/loading_wave_overtopping.py +122 -0
- pydra_core/location/model/loading/water_systems/__init__.py +0 -0
- pydra_core/location/model/loading/water_systems/loading_coast.py +54 -0
- pydra_core/location/model/loading/water_systems/loading_eastern_scheldt.py +169 -0
- pydra_core/location/model/loading/water_systems/loading_ijssel_vechtdelta.py +55 -0
- pydra_core/location/model/loading/water_systems/loading_lake.py +55 -0
- pydra_core/location/model/loading/water_systems/loading_lower_rivier.py +68 -0
- pydra_core/location/model/loading/water_systems/loading_upper_river.py +55 -0
- pydra_core/location/model/statistics/__init__.py +0 -0
- pydra_core/location/model/statistics/other_systems/__init__.py +0 -0
- pydra_core/location/model/statistics/other_systems/statistics_wave_overtopping.py +72 -0
- pydra_core/location/model/statistics/statistics.py +171 -0
- pydra_core/location/model/statistics/statistics_factory.py +89 -0
- pydra_core/location/model/statistics/stochastics/__init__.py +0 -0
- pydra_core/location/model/statistics/stochastics/barrier/__init__.py +0 -0
- pydra_core/location/model/statistics/stochastics/barrier/barrier.py +43 -0
- pydra_core/location/model/statistics/stochastics/barrier/barrier_easternscheldt.py +147 -0
- pydra_core/location/model/statistics/stochastics/barrier/barrier_europoort.py +209 -0
- pydra_core/location/model/statistics/stochastics/barrier/barrier_ramspol.py +41 -0
- pydra_core/location/model/statistics/stochastics/barrier/no_barrier.py +21 -0
- pydra_core/location/model/statistics/stochastics/discharge.py +108 -0
- pydra_core/location/model/statistics/stochastics/discrete_probability.py +55 -0
- pydra_core/location/model/statistics/stochastics/lake_level.py +158 -0
- pydra_core/location/model/statistics/stochastics/model_uncertainty.py +358 -0
- pydra_core/location/model/statistics/stochastics/sea_level/sea_level.py +53 -0
- pydra_core/location/model/statistics/stochastics/sea_level/sea_level_lower_river.py +93 -0
- pydra_core/location/model/statistics/stochastics/sea_level/sea_level_point.py +65 -0
- pydra_core/location/model/statistics/stochastics/sea_level/sea_level_triangular.py +158 -0
- pydra_core/location/model/statistics/stochastics/sigma_function.py +24 -0
- pydra_core/location/model/statistics/stochastics/wave_shape.py +624 -0
- pydra_core/location/model/statistics/stochastics/wind_speed.py +196 -0
- pydra_core/location/model/statistics/water_systems/__init__.py +0 -0
- pydra_core/location/model/statistics/water_systems/statistics_coast.py +153 -0
- pydra_core/location/model/statistics/water_systems/statistics_eastern_scheldt.py +177 -0
- pydra_core/location/model/statistics/water_systems/statistics_ijssel_vechtdelta.py +229 -0
- pydra_core/location/model/statistics/water_systems/statistics_lake.py +86 -0
- pydra_core/location/model/statistics/water_systems/statistics_lower_river.py +321 -0
- pydra_core/location/model/statistics/water_systems/statistics_upper_river.py +86 -0
- pydra_core/location/model/water_system.py +249 -0
- pydra_core/location/model/wave_overtopping.py +25 -0
- pydra_core/location/profile/__init__.py +0 -0
- pydra_core/location/profile/foreland.py +246 -0
- pydra_core/location/profile/lib/DikesOvertopping.LICENSE +619 -0
- pydra_core/location/profile/lib/README.MD +10 -0
- pydra_core/location/profile/lib/__init__.py +1 -0
- pydra_core/location/profile/profile.py +971 -0
- pydra_core/location/profile/profile_loading.py +473 -0
- pydra_core/location/settings/__init__.py +0 -0
- pydra_core/location/settings/settings.py +387 -0
- pydra_core-0.0.1.dist-info/METADATA +22 -0
- pydra_core-0.0.1.dist-info/RECORD +389 -0
- pydra_core-0.0.1.dist-info/WHEEL +5 -0
@@ -0,0 +1,624 @@
|
|
1
|
+
import numpy as np
|
2
|
+
|
3
|
+
from scipy.stats import norm
|
4
|
+
|
5
|
+
from ....settings.settings import Settings
|
6
|
+
from .....common.enum import WaveShapeType
|
7
|
+
from .....common.interpolate import Interpolate, InterpStruct
|
8
|
+
from .....common.probability import ProbabilityFunctions
|
9
|
+
from .....io.file_hydranl import FileHydraNL
|
10
|
+
|
11
|
+
|
12
|
+
class WaveShape:
|
13
|
+
"""
|
14
|
+
Class to describe the wave form statistics.
|
15
|
+
Used in describing wave forms in river discharge and lake level.
|
16
|
+
"""
|
17
|
+
|
18
|
+
def __init__(self, settings: Settings, type: WaveShapeType):
|
19
|
+
"""
|
20
|
+
Constructor class for the WaveShape statistics.
|
21
|
+
|
22
|
+
Parameters
|
23
|
+
----------
|
24
|
+
settings : Settings
|
25
|
+
The Settings object
|
26
|
+
"""
|
27
|
+
# Placeholder
|
28
|
+
self.wave_shapes = None
|
29
|
+
|
30
|
+
# Obtain the parameters
|
31
|
+
self.base_duration = settings.base_duration
|
32
|
+
self.pw = settings.waveshape_pw
|
33
|
+
if type == WaveShapeType.DISCHARGE:
|
34
|
+
self.top_duration = settings.top_duration_q
|
35
|
+
self.lower_limit = settings.q_min
|
36
|
+
self.upper_limit = settings.q_limit
|
37
|
+
self.ifh = settings.ifh_q
|
38
|
+
self.ifb = settings.ifb_q
|
39
|
+
elif type == WaveShapeType.LAKE_LEVEL:
|
40
|
+
self.top_duration = settings.top_duration_a
|
41
|
+
self.lower_limit = settings.a_min
|
42
|
+
self.upper_limit = settings.a_limit
|
43
|
+
self.ifh = settings.ifh_a
|
44
|
+
self.ifb = settings.ifb_a
|
45
|
+
else:
|
46
|
+
raise TypeError("[ERROR] Unknown WaveShape type.")
|
47
|
+
|
48
|
+
# Time
|
49
|
+
self.time = np.arange(
|
50
|
+
0.0, settings.base_duration + 1e-6, settings.waveshape_time_step
|
51
|
+
)
|
52
|
+
self.ntime = len(self.time)
|
53
|
+
if settings.base_duration != max(self.time):
|
54
|
+
settings.base_duration = max(self.time)
|
55
|
+
print(
|
56
|
+
f"[NOTE] Base duration adjusted to blok wind ({settings.waveshape_time_step}h)."
|
57
|
+
)
|
58
|
+
|
59
|
+
def initialise_wave_shapes(self, peak: list, climate_change: float = 0.0):
|
60
|
+
"""
|
61
|
+
Initialize the wave shapes for discharge or lake level.
|
62
|
+
|
63
|
+
Parameters
|
64
|
+
----------
|
65
|
+
peak : list
|
66
|
+
A list with peak values or the discharge / lake level
|
67
|
+
climate_change : float
|
68
|
+
Increase of discharge or lake level to account for climate change (default = 0.0)
|
69
|
+
"""
|
70
|
+
# Save
|
71
|
+
self.peak = peak
|
72
|
+
self.npeak = len(peak)
|
73
|
+
|
74
|
+
# Determine shape of the wave
|
75
|
+
if not self.pw:
|
76
|
+
# Init wave shapes
|
77
|
+
self.wave_shapes = self.__initialise_wave_shape(climate_change)
|
78
|
+
self.wave_shapes = np.maximum(self.wave_shapes, self.lower_limit)
|
79
|
+
|
80
|
+
# Read from a file
|
81
|
+
else:
|
82
|
+
raise NotImplementedError()
|
83
|
+
|
84
|
+
def transition_wave(self, transition: float) -> None:
|
85
|
+
"""
|
86
|
+
Transition wave form
|
87
|
+
|
88
|
+
Parameters
|
89
|
+
----------
|
90
|
+
transition : float
|
91
|
+
Transition in hours
|
92
|
+
"""
|
93
|
+
tijdenlang = np.zeros(2 * self.ntime - 1)
|
94
|
+
golflang = np.zeros(2 * self.ntime - 1)
|
95
|
+
|
96
|
+
if transition >= 0.0:
|
97
|
+
# Als de verschuiving positief is in de tijd, dan wordt de tijdas
|
98
|
+
# vooruit verschoven en eenzelfde periode wordt voor deze
|
99
|
+
# verschoven tijdas geplaatst
|
100
|
+
it = np.arange(self.ntime)
|
101
|
+
tijdenlang[it + self.ntime - 1] = self.time[it] + transition
|
102
|
+
|
103
|
+
it = np.arange(self.ntime - 1)
|
104
|
+
tijdenlang[it] = tijdenlang[it + self.ntime - 1] - self.base_duration
|
105
|
+
|
106
|
+
else:
|
107
|
+
# Als de verschuiving negatief is in de tijd, dan wordt de tijdas
|
108
|
+
# terug verschoven en eenzelfde periode wordt achter deze verschoven
|
109
|
+
# tijdas geplaatst
|
110
|
+
it = np.arange(self.ntime)
|
111
|
+
tijdenlang[it] = self.time[it] + transition
|
112
|
+
it = np.arange(1, self.ntime)
|
113
|
+
tijdenlang[it + self.ntime - 1] = tijdenlang[it] + self.base_duration
|
114
|
+
|
115
|
+
# Bij de verschoven en uitgebreide tijdas worden de golfvormen twee keer gezet
|
116
|
+
# Door interpolatie worden op het reguliere rooster de uiteindelijke
|
117
|
+
# verschoven golfvormen verkregen
|
118
|
+
intstr = InterpStruct(x=self.time, xp=tijdenlang)
|
119
|
+
for ip in range(self.npeak):
|
120
|
+
golflang[: self.ntime] = self.wave_shapes[:, ip]
|
121
|
+
golflang[self.ntime :] = golflang[1 : self.ntime]
|
122
|
+
self.wave_shapes[:, ip] = intstr.interp(fp=golflang, extrapolate=False)
|
123
|
+
|
124
|
+
def get_wave_shapes(self) -> np.ndarray:
|
125
|
+
"""
|
126
|
+
Return the wave shapes.
|
127
|
+
|
128
|
+
Returns
|
129
|
+
-------
|
130
|
+
np.ndarray
|
131
|
+
Array with size (t, peak)
|
132
|
+
"""
|
133
|
+
return self.wave_shapes
|
134
|
+
|
135
|
+
def exceedance_timestamps(self, levels: np.ndarray):
|
136
|
+
"""
|
137
|
+
Determine the exceedance durations for several levels in the waveshapes,
|
138
|
+
given the peak levels of the wave.
|
139
|
+
|
140
|
+
Parameters
|
141
|
+
----------
|
142
|
+
levels : np.ndarray
|
143
|
+
Levels for which the exceedance duration is determined.
|
144
|
+
|
145
|
+
Returns
|
146
|
+
-------
|
147
|
+
np.ndarray
|
148
|
+
Exceedance duration [N peak x N levels]
|
149
|
+
"""
|
150
|
+
# Check if the wave shapes are defined
|
151
|
+
if self.wave_shapes is None:
|
152
|
+
raise ValueError("[ERROR] Wave shaped are not defined.")
|
153
|
+
|
154
|
+
# Init empty array
|
155
|
+
ovduur = np.zeros((self.npeak, len(levels)))
|
156
|
+
|
157
|
+
# Bepaal voor elk blokniveau de overschrijdingsduren
|
158
|
+
for ip in range(self.npeak):
|
159
|
+
# Get one wave shape
|
160
|
+
wave_shape = self.wave_shapes[:, ip]
|
161
|
+
|
162
|
+
# Initieer lege arrays
|
163
|
+
t_boven = np.zeros_like(levels)
|
164
|
+
t_onder = np.zeros_like(levels)
|
165
|
+
|
166
|
+
# Bepaal waar de niveaus gelijk of hoger zijn aan de golfvorm, hiervoor zijn er geen overschrijdingen
|
167
|
+
idx = levels > wave_shape.max()
|
168
|
+
t_boven[idx] = -1.0
|
169
|
+
t_onder[idx] = -1.0
|
170
|
+
|
171
|
+
# Aangenomen wordt dat de golf een monotoon opgaande en neergaande flank heeft.
|
172
|
+
# Onder deze aanname kan met interpolatie de kruisingen bepaald worden.
|
173
|
+
diff = wave_shape[1:] - wave_shape[:-1]
|
174
|
+
|
175
|
+
# Het verschil is de afstand van het volgende punt ten opzichte van het huidige punt
|
176
|
+
opgaand = np.concatenate([[True], diff > 0])
|
177
|
+
neergaand = np.concatenate([diff < 0, [True]])
|
178
|
+
t_boven[~idx] = np.interp(
|
179
|
+
x=levels[~idx], xp=wave_shape[opgaand], fp=self.time[opgaand]
|
180
|
+
)
|
181
|
+
t_onder[~idx] = np.interp(
|
182
|
+
x=levels[~idx],
|
183
|
+
xp=wave_shape[neergaand][::-1],
|
184
|
+
fp=self.time[neergaand][::-1],
|
185
|
+
)
|
186
|
+
ovduur[ip, :] = t_onder - t_boven
|
187
|
+
|
188
|
+
# Return
|
189
|
+
return ovduur
|
190
|
+
|
191
|
+
def instantaneous_exceedance_probability(self, exceedance_peaks, levels):
|
192
|
+
"""
|
193
|
+
Calculate the instantaneous exceedance probability of the discharge/water level
|
194
|
+
for each peak value of a discharge/water level wave.
|
195
|
+
{
|
196
|
+
Calculate the time when the discharge/water level is higher than a given level
|
197
|
+
and determine the time when the discharge/water level is lower than the given level.
|
198
|
+
Determine the duration of exceedance.
|
199
|
+
Use the composite trapezoidal rule for calculating the instantaneous exceedance probability
|
200
|
+
of the discharge/water level.
|
201
|
+
}
|
202
|
+
"""
|
203
|
+
# Calculate the vector with probability densities of the discharge/water level
|
204
|
+
peak_probability = ProbabilityFunctions.probability_density(
|
205
|
+
self.peak, exceedance_peaks
|
206
|
+
).probability
|
207
|
+
instantaneous_prob = np.zeros_like(levels)
|
208
|
+
exceedance_duration = self.exceedance_timestamps(levels)
|
209
|
+
|
210
|
+
for ib in range(len(levels)):
|
211
|
+
integral = (exceedance_duration[:, ib] * peak_probability).sum()
|
212
|
+
|
213
|
+
# Calculate the instantaneous exceedance probability of the discharge/water level
|
214
|
+
instantaneous_prob[ib] = integral / self.base_duration
|
215
|
+
|
216
|
+
return instantaneous_prob
|
217
|
+
|
218
|
+
def cum_norm_s_naar_y(self, y, mu, sigma):
|
219
|
+
"""
|
220
|
+
Bepaal de cumulatieve verdelingsfunctie voor het meerpeil onder de transformatie van s naar y = K(s)
|
221
|
+
{
|
222
|
+
y= Parameterwaarde
|
223
|
+
mu= Gemiddelde van de normale verdeling
|
224
|
+
sigma= Standaarddeviatie van de normale verdeling
|
225
|
+
}
|
226
|
+
"""
|
227
|
+
if sigma <= 0:
|
228
|
+
# Geef foutmelding
|
229
|
+
raise ValueError("Sigma <= 0")
|
230
|
+
|
231
|
+
# Integratiegrenzen en stapgrootte
|
232
|
+
stap = 0.05
|
233
|
+
x = np.arange(0, 20 + 0.1 * stap, stap)
|
234
|
+
|
235
|
+
# Voor de parameterwaarde wordt de integraal over het rooster berekend. Let wel: delta = 0
|
236
|
+
yn = (y[None, :] - x[:, None] - mu) / sigma
|
237
|
+
|
238
|
+
dx = np.diff(np.r_[x[0], (x[1:] + x[:-1]) / 2.0, x[-1]])
|
239
|
+
f_y_sigma = (np.exp(-x[:, None]) * norm().cdf(x=yn) * dx[:, None]).sum(0)
|
240
|
+
|
241
|
+
return f_y_sigma
|
242
|
+
|
243
|
+
def __initialise_wave_shape(self, climate_change: float) -> np.ndarray:
|
244
|
+
"""
|
245
|
+
Create the wave shapes for discharge or lake level.
|
246
|
+
|
247
|
+
Parameters
|
248
|
+
----------
|
249
|
+
climate_change : float
|
250
|
+
Increase of discharge or lake level to account for climate change (default = 0.0)
|
251
|
+
|
252
|
+
Returns
|
253
|
+
-------
|
254
|
+
np.ndarray
|
255
|
+
A 2D array with wave shapes (time, q_m_peak)
|
256
|
+
"""
|
257
|
+
# Read the table with top durations (t_top) given q or m (q_m)
|
258
|
+
_q_m, _t_top = FileHydraNL.read_file_2columns(self.top_duration)
|
259
|
+
|
260
|
+
# Correct for climate change (increase discharge or lake level)
|
261
|
+
if climate_change > 0.0:
|
262
|
+
_q_m += climate_change
|
263
|
+
|
264
|
+
# Check if the top duration is larger than the base duration
|
265
|
+
if (_t_top > self.base_duration).any():
|
266
|
+
print(
|
267
|
+
f"[WARNING] Top duration from file '{self.top_duration}' is larger than base duration."
|
268
|
+
)
|
269
|
+
|
270
|
+
# Increase the arrays with 1 element to allow for extrapolation
|
271
|
+
q_m = np.r_[_q_m, 2.0 * _q_m[-1] - _q_m[-2]]
|
272
|
+
t_top = np.r_[_t_top, _t_top[-1]]
|
273
|
+
|
274
|
+
# Calculate for each peak the top duration
|
275
|
+
top_durations = Interpolate.inextrp1d(x=self.peak, xp=q_m, fp=t_top)
|
276
|
+
|
277
|
+
# Create an empty array of size (t, peak) for the wave shapes
|
278
|
+
wave_shapes = np.zeros((len(self.time), len(self.peak)))
|
279
|
+
|
280
|
+
# Create a trapezoid wave shape
|
281
|
+
for ip, top_duration in enumerate(top_durations):
|
282
|
+
# If the discretisation step for wave shapes is equal to the base_duration
|
283
|
+
if (
|
284
|
+
self.peak[ip] < q_m[0]
|
285
|
+
or (self.time[1] - self.time[0]) == self.base_duration
|
286
|
+
):
|
287
|
+
# Vul de vector met tijdstippen
|
288
|
+
ttabel = [0.0, self.base_duration]
|
289
|
+
|
290
|
+
# Vul de vector met golfwaarden
|
291
|
+
gtabel = [self.peak[ip], self.peak[ip]]
|
292
|
+
|
293
|
+
# If the top duration is equal to 0.0
|
294
|
+
elif top_duration == 0.0:
|
295
|
+
# Als ingesnoerd wordt totaan het tijdstip waarop de golfvorm de maximale waarde heeft
|
296
|
+
if self.ifb == 0.0:
|
297
|
+
# Vul de vector met tijdstippen
|
298
|
+
ttabel = np.array(
|
299
|
+
[
|
300
|
+
0,
|
301
|
+
self.base_duration / 2.0 - 0.0001,
|
302
|
+
self.base_duration / 2.0,
|
303
|
+
self.base_duration / 2.0 + 0.0001,
|
304
|
+
self.base_duration,
|
305
|
+
]
|
306
|
+
)
|
307
|
+
|
308
|
+
# Vul de vector met golfwaarden
|
309
|
+
gtabel = np.array(
|
310
|
+
[
|
311
|
+
self.lower_limit,
|
312
|
+
self.lower_limit
|
313
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
314
|
+
self.peak[ip],
|
315
|
+
self.lower_limit
|
316
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
317
|
+
self.lower_limit,
|
318
|
+
]
|
319
|
+
)
|
320
|
+
|
321
|
+
# Als de golfvorm niet ingesnoerd wordt
|
322
|
+
elif self.ifh == 1.0:
|
323
|
+
# Vul de vector met tijdstippen
|
324
|
+
ttabel = np.array(
|
325
|
+
[0.0, self.base_duration / 2.0, self.base_duration]
|
326
|
+
)
|
327
|
+
|
328
|
+
# Vul de vector met golfwaarden
|
329
|
+
gtabel = np.array(
|
330
|
+
[self.lower_limit, self.peak[ip], self.lower_limit]
|
331
|
+
)
|
332
|
+
|
333
|
+
# Als er sprake is van een blokgolf
|
334
|
+
elif self.ifb == (1.0 / (1.0 - self.ifh)):
|
335
|
+
# Vul de vector met tijdstippen
|
336
|
+
ttabel = np.array(
|
337
|
+
[0.0, self.base_duration / 2.0, self.base_duration]
|
338
|
+
)
|
339
|
+
|
340
|
+
# Vul de vector met golfwaarden
|
341
|
+
gtabel = np.array(
|
342
|
+
[
|
343
|
+
self.lower_limit
|
344
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
345
|
+
self.peak[ip],
|
346
|
+
self.lower_limit
|
347
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
348
|
+
]
|
349
|
+
)
|
350
|
+
|
351
|
+
# Als de golfvorm wel ingesnoerd wordt
|
352
|
+
else:
|
353
|
+
ttabel = np.zeros(5)
|
354
|
+
gtabel = np.zeros(5)
|
355
|
+
|
356
|
+
# Vul de vector met tijdstippen
|
357
|
+
ttabel[0] = 0.0
|
358
|
+
ttabel[2] = self.base_duration / 2.0
|
359
|
+
ttabel[4] = self.base_duration
|
360
|
+
ttabel[1] = ttabel[0] + self.ifh * (ttabel[2] - ttabel[0])
|
361
|
+
ttabel[1] = ttabel[2] - self.ifb * (ttabel[2] - ttabel[1])
|
362
|
+
ttabel[3] = ttabel[4] + self.ifh * (ttabel[2] - ttabel[4])
|
363
|
+
ttabel[3] = ttabel[2] + self.ifb * (ttabel[3] - ttabel[2])
|
364
|
+
|
365
|
+
# Vul de vector met golfwaarden
|
366
|
+
gtabel = np.array(
|
367
|
+
[
|
368
|
+
self.lower_limit,
|
369
|
+
self.lower_limit
|
370
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
371
|
+
self.peak[ip],
|
372
|
+
self.lower_limit
|
373
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
374
|
+
self.lower_limit,
|
375
|
+
]
|
376
|
+
)
|
377
|
+
|
378
|
+
# Als de invoergeg.topduur ongelijk aan nul is
|
379
|
+
else:
|
380
|
+
# Als de invoergeg.topduur gelijk is aan de invoergeg.basisduur
|
381
|
+
if top_duration == self.base_duration:
|
382
|
+
# Vul de vector met tijdstippen
|
383
|
+
ttabel = np.array([0.0, self.base_duration])
|
384
|
+
|
385
|
+
# Vul de vector met golfwaarden
|
386
|
+
gtabel = np.array([self.peak[ip], self.peak[ip]])
|
387
|
+
|
388
|
+
# Als ingesnoerd wordt totaan het tijdstip waarop de golfvorm de maximale waarde heeft
|
389
|
+
elif self.ifb == 0.0:
|
390
|
+
# n = 6
|
391
|
+
|
392
|
+
# Vul de vector met tijdstippen
|
393
|
+
ttabel = np.array(
|
394
|
+
[
|
395
|
+
0.0,
|
396
|
+
self.base_duration / 2.0 - top_duration / 2.0 - 0.0001,
|
397
|
+
self.base_duration / 2.0 - top_duration / 2.0,
|
398
|
+
self.base_duration / 2.0 + top_duration / 2.0,
|
399
|
+
self.base_duration / 2.0 + top_duration / 2.0 + 0.0001,
|
400
|
+
self.base_duration,
|
401
|
+
]
|
402
|
+
)
|
403
|
+
|
404
|
+
# Vul de vector met golfwaarden
|
405
|
+
gtabel = np.array(
|
406
|
+
[
|
407
|
+
self.lower_limit,
|
408
|
+
self.lower_limit
|
409
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
410
|
+
self.peak[ip],
|
411
|
+
self.peak[ip],
|
412
|
+
self.lower_limit
|
413
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
414
|
+
self.lower_limit,
|
415
|
+
]
|
416
|
+
)
|
417
|
+
|
418
|
+
# Als de golfvorm niet wordt ingesnoerd
|
419
|
+
elif self.ifh == 1.0:
|
420
|
+
# Vul de vector met tijdstippen
|
421
|
+
ttabel = np.array(
|
422
|
+
[
|
423
|
+
0.0,
|
424
|
+
self.base_duration / 2.0 - top_duration / 2.0,
|
425
|
+
self.base_duration / 2.0 + top_duration / 2.0,
|
426
|
+
self.base_duration,
|
427
|
+
]
|
428
|
+
)
|
429
|
+
|
430
|
+
# Vul de vector met golfwaarden
|
431
|
+
gtabel = np.array(
|
432
|
+
[
|
433
|
+
self.lower_limit,
|
434
|
+
self.peak[ip],
|
435
|
+
self.peak[ip],
|
436
|
+
self.lower_limit,
|
437
|
+
]
|
438
|
+
)
|
439
|
+
|
440
|
+
# Als er sprake is van een blokgolf
|
441
|
+
elif self.ifb == (1.0 / (1.0 - self.ifh)):
|
442
|
+
# Vul de vector met tijdstippen
|
443
|
+
ttabel = np.array(
|
444
|
+
[
|
445
|
+
0.0,
|
446
|
+
self.base_duration / 2.0 - top_duration / 2.0,
|
447
|
+
self.base_duration / 2.0 + top_duration / 2.0,
|
448
|
+
self.base_duration,
|
449
|
+
]
|
450
|
+
)
|
451
|
+
|
452
|
+
# Vul de vector met golfwaarden
|
453
|
+
gtabel = np.array(
|
454
|
+
[
|
455
|
+
self.lower_limit
|
456
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
457
|
+
self.peak[ip],
|
458
|
+
self.peak[ip],
|
459
|
+
self.lower_limit
|
460
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
461
|
+
]
|
462
|
+
)
|
463
|
+
|
464
|
+
# Als de golfvorm wel ingesnoerd wordt
|
465
|
+
else:
|
466
|
+
ttabel = np.zeros(6)
|
467
|
+
gtabel = np.zeros(6)
|
468
|
+
|
469
|
+
# Vul de vector met tijdstippen
|
470
|
+
ttabel[0] = 0.0
|
471
|
+
ttabel[2] = self.base_duration / 2.0 - top_duration / 2.0
|
472
|
+
ttabel[3] = self.base_duration / 2.0 + top_duration / 2.0
|
473
|
+
ttabel[5] = self.base_duration
|
474
|
+
ttabel[1] = ttabel[0] + self.ifh * (ttabel[2] - ttabel[0])
|
475
|
+
ttabel[1] = ttabel[2] - self.ifb * (ttabel[2] - ttabel[1])
|
476
|
+
ttabel[4] = ttabel[5] + self.ifh * (ttabel[3] - ttabel[5])
|
477
|
+
ttabel[4] = ttabel[3] + self.ifb * (ttabel[4] - ttabel[3])
|
478
|
+
|
479
|
+
# Vul de vector met golfwaarden
|
480
|
+
gtabel = np.array(
|
481
|
+
[
|
482
|
+
self.lower_limit,
|
483
|
+
self.lower_limit
|
484
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
485
|
+
self.peak[ip],
|
486
|
+
self.peak[ip],
|
487
|
+
self.lower_limit
|
488
|
+
+ self.ifh * (self.peak[ip] - self.lower_limit),
|
489
|
+
self.lower_limit,
|
490
|
+
]
|
491
|
+
)
|
492
|
+
|
493
|
+
# Interpoleer de golfvorm naar de gewenste tijdas
|
494
|
+
wave_shapes[:, ip] = np.interp(self.time, ttabel, gtabel)
|
495
|
+
|
496
|
+
# Top de golfvormen af op het gewenste niveau
|
497
|
+
wave_shapes = np.minimum(wave_shapes, self.upper_limit)
|
498
|
+
|
499
|
+
# Return wave shapes
|
500
|
+
return wave_shapes
|
501
|
+
|
502
|
+
@staticmethod
|
503
|
+
def bepaal_gezamenlijke_overschrijding(
|
504
|
+
golfvormen_st1, niveaus_st1, golfvormen_st2, niveaus_st2
|
505
|
+
) -> np.ndarray:
|
506
|
+
# Bepaal overschrijdingstijdstippen van beide stochasten in de golfvorm
|
507
|
+
kruisng = np.zeros((len(niveaus_st1), len(niveaus_st2), 4))
|
508
|
+
helling = np.zeros((len(niveaus_st1), len(niveaus_st2), 4), dtype=int)
|
509
|
+
duren = np.zeros(
|
510
|
+
(
|
511
|
+
golfvormen_st1.npeak,
|
512
|
+
golfvormen_st2.npeak,
|
513
|
+
len(niveaus_st1),
|
514
|
+
len(niveaus_st2),
|
515
|
+
),
|
516
|
+
dtype=float,
|
517
|
+
)
|
518
|
+
|
519
|
+
# Bepaal eerst alle tijdstippen voor stochast 1
|
520
|
+
kruisingen_st1 = np.zeros(
|
521
|
+
(golfvormen_st1.npeak, len(niveaus_st1), 2), dtype=float
|
522
|
+
)
|
523
|
+
helling_st1 = np.zeros((golfvormen_st1.npeak, len(niveaus_st1), 2), dtype=int)
|
524
|
+
for ip1 in range(golfvormen_st1.npeak):
|
525
|
+
# Bepaal voor elk blokniveau de overschrijdingsduren
|
526
|
+
kruisingen_st1[ip1, :, :], helling_st1[ip1, :, :] = (
|
527
|
+
golfvormen_st1._overschrijdingstijdstip_op_af_v2(
|
528
|
+
golfvormen_st1.wave_shapes[:, ip1], golfvormen_st1.time, niveaus_st1
|
529
|
+
)
|
530
|
+
)
|
531
|
+
|
532
|
+
arange = np.arange(max(len(niveaus_st1), len(niveaus_st2)))
|
533
|
+
|
534
|
+
# loop vervolgens over stochast 2
|
535
|
+
kruisingen_st2 = np.zeros((len(niveaus_st2), 2))
|
536
|
+
helling_st2 = np.zeros((len(niveaus_st2), 2))
|
537
|
+
for ip2 in range(golfvormen_st2.npeak):
|
538
|
+
# Bepaal voor elk blokniveau de overschrijdingsduren
|
539
|
+
kruisingen_st2[:, :], helling_st2[:, :] = (
|
540
|
+
golfvormen_st2._overschrijdingstijdstip_op_af_v2(
|
541
|
+
golfvormen_st2.wave_shapes[:, ip2], golfvormen_st2.time, niveaus_st2
|
542
|
+
)
|
543
|
+
)
|
544
|
+
|
545
|
+
# Bepaal voor elk piekniveau van stochast 2 de gezamenlijke overschrijdingen
|
546
|
+
# Doe dit door de tijdstippen voor elke combinatie samen te voegen, te sorteren
|
547
|
+
# op absolute waarde, en de overgang van laatste opgaand naar eerste neergaand
|
548
|
+
# te bepalen
|
549
|
+
for ip1 in range(golfvormen_st1.npeak):
|
550
|
+
idx1 = kruisingen_st1[ip1, :, 0] != -1.0
|
551
|
+
idx2 = kruisingen_st2[:, 0] != -1.0
|
552
|
+
|
553
|
+
len1 = idx1.sum()
|
554
|
+
len2 = idx2.sum()
|
555
|
+
kruisng = np.zeros((len1, len2, 4))
|
556
|
+
helling = np.zeros((len1, len2, 4), dtype=np.int8)
|
557
|
+
|
558
|
+
# Vul arrays
|
559
|
+
kruisng[:, :, :2] = kruisingen_st1[ip1, idx1, None, :]
|
560
|
+
kruisng[:, :, 2:] = kruisingen_st2[None, idx2, :]
|
561
|
+
|
562
|
+
helling[:, :, :2] = helling_st1[ip1, idx1, None, :]
|
563
|
+
helling[:, :, 2:] = helling_st2[None, idx2, :]
|
564
|
+
|
565
|
+
# Sorteer
|
566
|
+
order = np.argsort(np.absolute(kruisng), axis=2)
|
567
|
+
i1, i2 = arange[:len1, None, None], arange[None, :len2, None]
|
568
|
+
kruisng[...] = kruisng[i1, i2, order]
|
569
|
+
helling[...] = helling[i1, i2, order]
|
570
|
+
|
571
|
+
# Bepaal alle plekken waar een tekenwisseling (kruising tussen golf en niveau) plaatsvindt
|
572
|
+
wh = np.where((helling[:, :, 1:] ^ helling[:, :, :-1]))
|
573
|
+
|
574
|
+
# Bereken het tijdsverschil bij tekenwisseling
|
575
|
+
diff = kruisng[wh[0], wh[1], wh[2] + 1] - kruisng[wh[0], wh[1], wh[2]]
|
576
|
+
# Zet tijdverschil bij neergaand naar opgaand op 0
|
577
|
+
diff[
|
578
|
+
(helling[wh[0], wh[1], wh[2] + 1] < helling[wh[0], wh[1], wh[2]])
|
579
|
+
] = 0.0
|
580
|
+
# print(diff.max(), diff.min())
|
581
|
+
duren[ip1, ip2, wh[0], wh[1]] += diff
|
582
|
+
|
583
|
+
return duren
|
584
|
+
|
585
|
+
@staticmethod
|
586
|
+
def _overschrijdingstijdstip_op_af_v2(
|
587
|
+
vormgolf: np.ndarray, tijden: np.ndarray, niveaus: np.ndarray
|
588
|
+
):
|
589
|
+
# Bepaal waar de golfvorm boven het te testen niveau zit
|
590
|
+
diff = (vormgolf[None, :] - niveaus[:, None]) >= 0.0
|
591
|
+
# Bepaal alle plekken waar een tekenwisseling (kruising tussen golf en niveau) plaatsvindt
|
592
|
+
locn, loct = np.where((diff[:, 1:] ^ diff[:, :-1]))
|
593
|
+
|
594
|
+
# Bepaal het snijpunt bij de kruising
|
595
|
+
dtdq = (tijden[loct + 1] - tijden[loct]) / (vormgolf[loct + 1] - vormgolf[loct])
|
596
|
+
# Voeg dit punt toe aan de tijd
|
597
|
+
duur = tijden[loct] + dtdq * (niveaus[locn] - vormgolf[loct])
|
598
|
+
|
599
|
+
# Maak lege array aan
|
600
|
+
t1t2 = np.full((len(niveaus), 2), np.nan, dtype=float)
|
601
|
+
helling = np.full((len(niveaus), 2), 0, dtype=np.int8)
|
602
|
+
# Waar het niveau hoger ligt dan de piekwaarde, -1 in
|
603
|
+
t1t2[niveaus > vormgolf.max(), :] = -1
|
604
|
+
# Controleer of alle niveaus of 0 of 2 keer voorkomen
|
605
|
+
r = np.bincount(locn)
|
606
|
+
assert ((r == 2) | (r == 0)).all()
|
607
|
+
|
608
|
+
# Vul in in array met tijden. Vermenigvuldig met het teken van de helling *-1
|
609
|
+
t1t2[locn, np.arange(len(locn)) % 2] = duur
|
610
|
+
# Bepaal helling. Opgaand heeft dus -, neergaand +. De som geeft de totale overschrijdingsduur
|
611
|
+
helling[locn, np.arange(len(locn)) % 2] = -np.sign(dtdq)
|
612
|
+
|
613
|
+
# Als er NaN's in de array zitten, is dit op plekken waar het niveau in zijn geheel onder
|
614
|
+
# of op het laagste punt van de golf ligt. Vul hier de min en max van de tijden in
|
615
|
+
idx = np.isnan(t1t2)
|
616
|
+
t1t2[idx[:, 0], 0] = tijden.min()
|
617
|
+
t1t2[idx[:, 1], 1] = tijden.max()
|
618
|
+
helling[idx[:, 0], 0] = -1
|
619
|
+
helling[idx[:, 1], 1] = 1
|
620
|
+
|
621
|
+
# Vermenigvuldig de even elementen met -1
|
622
|
+
# idx = duur < 0
|
623
|
+
# duur[::2] *= -1
|
624
|
+
return t1t2, helling
|