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.
Files changed (389) hide show
  1. pydra_core/__init__.py +32 -0
  2. pydra_core/common/__init__.py +0 -0
  3. pydra_core/common/common.py +98 -0
  4. pydra_core/common/enum.py +63 -0
  5. pydra_core/common/interpolate.py +345 -0
  6. pydra_core/common/probability.py +293 -0
  7. pydra_core/core/__init__.py +0 -0
  8. pydra_core/core/calculation.py +51 -0
  9. pydra_core/core/datamodels/__init__.py +0 -0
  10. pydra_core/core/datamodels/frequency_line.py +60 -0
  11. pydra_core/core/exceedance_frequency_line.py +224 -0
  12. pydra_core/core/exceedance_frequency_line_experimental.py +163 -0
  13. pydra_core/core/hbn.py +226 -0
  14. pydra_core/data/settings/calculation_settings.sqlite +0 -0
  15. pydra_core/data/settings/lower_river_settings.cpg +1 -0
  16. pydra_core/data/settings/lower_river_settings.dbf +0 -0
  17. pydra_core/data/settings/lower_river_settings.prj +1 -0
  18. pydra_core/data/settings/lower_river_settings.shp +0 -0
  19. pydra_core/data/settings/lower_river_settings.shx +0 -0
  20. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_2017.txt +37 -0
  21. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_2017_metOnzHeid.txt +46 -0
  22. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2015_metOnzHeid_v02.txt +50 -0
  23. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2015_v02.txt +42 -0
  24. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2050_metOnzHeid_v02.txt +56 -0
  25. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2050_v02.txt +48 -0
  26. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2100_metOnzHeid_v02.txt +56 -0
  27. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_G_2100_v02.txt +48 -0
  28. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2015_metOnzHeid_v02.txt +50 -0
  29. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2015_v02.txt +42 -0
  30. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2050_metOnzHeid_v02.txt +56 -0
  31. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2050_v02.txt +48 -0
  32. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2100_metOnzHeid_v02.txt +51 -0
  33. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_OI2014_W_2100_v02.txt +44 -0
  34. pydra_core/data/statistics/Afvoer/Borgharen/Ovkans_Borgharen_piekafvoer_Ref.txt +28 -0
  35. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_2017.txt +31 -0
  36. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_2017_metOnzHeid.txt +33 -0
  37. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2015.txt +44 -0
  38. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2015_metOnzHeid.txt +34 -0
  39. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2050.txt +44 -0
  40. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2050_metOnzHeid.txt +34 -0
  41. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2100.txt +44 -0
  42. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_G_2100_metOnzHeid.txt +39 -0
  43. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2015.txt +44 -0
  44. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2015_metOnzHeid.txt +34 -0
  45. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2050.txt +44 -0
  46. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2050_metOnzHeid.txt +34 -0
  47. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2100.txt +44 -0
  48. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_OI2014_W_2100_metOnzHeid.txt +34 -0
  49. pydra_core/data/statistics/Afvoer/Dalfsen/Ovkans_Dalfsen_piekafvoer_Ref.txt +14 -0
  50. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_2017.txt +47 -0
  51. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_2017_metOnzHeid.txt +47 -0
  52. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2015.txt +49 -0
  53. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2015_metOnzHeid.txt +59 -0
  54. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2050.txt +49 -0
  55. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2050_metOnzHeid.txt +59 -0
  56. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2100.txt +49 -0
  57. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_G_2100_metOnzHeid.txt +59 -0
  58. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2015.txt +49 -0
  59. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2015_metOnzHeid.txt +59 -0
  60. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2050.txt +49 -0
  61. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2050_metOnzHeid.txt +59 -0
  62. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2100.txt +49 -0
  63. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_OI2014_W_2100_metOnzHeid.txt +59 -0
  64. pydra_core/data/statistics/Afvoer/Lith/Ovkans_Lith_piekafvoer_Ref.txt +21 -0
  65. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_2017.txt +33 -0
  66. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_2017_metOnzHeid.txt +60 -0
  67. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015.txt +49 -0
  68. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_BenedenRijn.txt +50 -0
  69. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_metOnzHeid.txt +63 -0
  70. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2015_metOnzHeid_BenedenRijn.txt +65 -0
  71. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050.txt +49 -0
  72. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_BenedenRijn.txt +50 -0
  73. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_metOnzHeid.txt +63 -0
  74. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2050_metOnzHeid_BenedenRijn.txt +65 -0
  75. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100.txt +49 -0
  76. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_BenedenRijn.txt +50 -0
  77. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_metOnzHeid.txt +63 -0
  78. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_G_2100_metOnzHeid_BenedenRijn.txt +65 -0
  79. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015.txt +50 -0
  80. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_BenedenRijn.txt +51 -0
  81. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_metOnzHeid.txt +63 -0
  82. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2015_metOnzHeid_BenedenRijn.txt +65 -0
  83. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050.txt +50 -0
  84. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_BenedenRijn.txt +51 -0
  85. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_metOnzHeid.txt +63 -0
  86. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2050_metOnzHeid_BenedenRijn.txt +65 -0
  87. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100.txt +50 -0
  88. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_BenedenRijn.txt +51 -0
  89. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_metOnzHeid.txt +63 -0
  90. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_OI2014_W_2100_metOnzHeid_BenedenRijn.txt +65 -0
  91. pydra_core/data/statistics/Afvoer/Lobith/Ovkans_Lobith_piekafvoer_Ref.txt +23 -0
  92. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_2017.txt +55 -0
  93. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_2017_metOnzHeid.txt +55 -0
  94. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2015.txt +46 -0
  95. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2015_metOnzHeid.txt +65 -0
  96. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2050.txt +46 -0
  97. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2050_metOnzHeid.txt +65 -0
  98. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2100.txt +46 -0
  99. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_G_2100_metOnzHeid.txt +65 -0
  100. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2015.txt +47 -0
  101. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2015_metOnzHeid.txt +65 -0
  102. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2050.txt +47 -0
  103. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2050_metOnzHeid.txt +65 -0
  104. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2100.txt +47 -0
  105. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_OI2014_W_2100_metOnzHeid.txt +65 -0
  106. pydra_core/data/statistics/Afvoer/Olst/Ovkans_Olst_piekafvoer_Ref.txt +15 -0
  107. pydra_core/data/statistics/Golfvorm/Borgharen/Golfvormen_Borgharen.txt +76 -0
  108. pydra_core/data/statistics/Golfvorm/Dalfsen/Golfvormen_Dalfsen.txt +83 -0
  109. pydra_core/data/statistics/Golfvorm/Grevelingenmeer/Golfvormen_Grevelingenmeer.txt +34 -0
  110. pydra_core/data/statistics/Golfvorm/IJsselmeer/Golfvormen_IJsselmeer.txt +83 -0
  111. pydra_core/data/statistics/Golfvorm/Lith/Golfvormen_Lith.txt +76 -0
  112. pydra_core/data/statistics/Golfvorm/Lobith/Golfvormen_Lobith.txt +76 -0
  113. pydra_core/data/statistics/Golfvorm/Markermeer/Golfvormen_Markermeer.txt +140 -0
  114. pydra_core/data/statistics/Golfvorm/Olst/Golfvormen_Olst.txt +83 -0
  115. pydra_core/data/statistics/Golfvorm/Veerse Meer/Golfvormen_Veersemeer.txt +54 -0
  116. pydra_core/data/statistics/Golfvorm/Veluwerandmeer/Golfvormen_Veluwerandmeer.txt +140 -0
  117. pydra_core/data/statistics/Golfvorm/Volkerak-Zoommeer/Golfvormen_Volkerakzoommeer.txt +74 -0
  118. pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_2017.txt +13 -0
  119. pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_2017_metOnzHeid.txt +25 -0
  120. pydra_core/data/statistics/Meerpeil/Grevelingenmeer/Ovkans_Grevelingenmeer_piekmeerpeil_v01.txt +13 -0
  121. pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_2017.txt +26 -0
  122. pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_2017_metOnzHeid.txt +40 -0
  123. pydra_core/data/statistics/Meerpeil/IJsselmeer/Ovkans_IJsselmeer_piekmeerpeil_v01.txt +15 -0
  124. pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_2017.txt +19 -0
  125. pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_2017_metOnzHeid.txt +38 -0
  126. pydra_core/data/statistics/Meerpeil/Markermeer/Ovkans_Markermeer_piekmeerpeil_v01.txt +11 -0
  127. pydra_core/data/statistics/Meerpeil/Veerse Meer/Ovkans_Veersemeer_piekmeerpeil_excl_peilverhoging.txt +14 -0
  128. pydra_core/data/statistics/Meerpeil/Veerse Meer/Ovkans_Veersemeer_piekmeerpeil_v01.txt +16 -0
  129. pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_2017.txt +14 -0
  130. pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_2017_metOnzHeid.txt +37 -0
  131. pydra_core/data/statistics/Meerpeil/Veluwerandmeer/Ovkans_Veluwerandmeer_piekmeerpeil_v01.txt +14 -0
  132. pydra_core/data/statistics/Meerpeil/Volkerak-Zoommeer/Ovkans_VZM_piekmeerpeil_BER-VZM.txt +18 -0
  133. pydra_core/data/statistics/Meerpeil/Volkerak-Zoommeer/Ovkans_VZM_piekmeerpeil_BER-VZM_metOnzHeid.txt +43 -0
  134. pydra_core/data/statistics/Restant/Oosterschelde/BesliskansenOSKering.txt +525 -0
  135. pydra_core/data/statistics/Restant/Oosterschelde/KansenFaseverschil_2023.txt +8 -0
  136. pydra_core/data/statistics/Restant/Oosterschelde/KansenFaseverschil_OS.txt +13 -0
  137. pydra_core/data/statistics/Restant/Oosterschelde/KansenStormduur_OS.txt +15 -0
  138. pydra_core/data/statistics/Restant/Oosterschelde/KansenStormduur_OS_40_60_80uur_2023.txt +17 -0
  139. pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2008.txt +24 -0
  140. pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2013.txt +19 -0
  141. pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2017.txt +19 -0
  142. pydra_core/data/statistics/Restant/Oosterschelde/ScenariokansenOSKering_2023.txt +14 -0
  143. pydra_core/data/statistics/Restant/Up2U/Up2U10.dat +59 -0
  144. pydra_core/data/statistics/Restant/Up2U/Up2Up.dat +59 -0
  145. pydra_core/data/statistics/Restant/Up2U/Up2Ustar.dat +59 -0
  146. pydra_core/data/statistics/Restant/hulpdijken.txt +60 -0
  147. pydra_core/data/statistics/Restant/hulpgolfhoogtes.txt +24 -0
  148. pydra_core/data/statistics/Restant/hulpgolfperiodes.txt +39 -0
  149. pydra_core/data/statistics/Restant/kansstormduur.txt +8 -0
  150. pydra_core/data/statistics/Restant/pwind_west.txt +34 -0
  151. pydra_core/data/statistics/Restant/pwind_west_met_Volkerfactor.txt +34 -0
  152. pydra_core/data/statistics/Restant/pwind_west_zonder_Volkerfactor.txt +34 -0
  153. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Midden/VS_sigmafunctie_Kust_Midden.txt +19 -0
  154. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Midden/VS_sigmafunctie_Kust_Midden_2017.txt +23 -0
  155. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Noord/VS_sigmafunctie_Kust_Noord.txt +19 -0
  156. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Noord/VS_sigmafunctie_Kust_Noord_2017.txt +23 -0
  157. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Zuid/VS_sigmafunctie_Kust_Zuid.txt +19 -0
  158. pydra_core/data/statistics/Sigmafunctie/Hollandse Kust Zuid/VS_sigmafunctie_Kust_Zuid_2017.txt +23 -0
  159. pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS.txt +22 -0
  160. pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS_16sectoren_2023.txt +24 -0
  161. pydra_core/data/statistics/Sigmafunctie/Oosterschelde/VS_sigmafunctie_OS_2017.txt +22 -0
  162. pydra_core/data/statistics/Sigmafunctie/Waddenzee Oost/VS_sigmafunctie_WZ_oost.txt +19 -0
  163. pydra_core/data/statistics/Sigmafunctie/Waddenzee Oost/VS_sigmafunctie_WZ_oost_2017.txt +23 -0
  164. pydra_core/data/statistics/Sigmafunctie/Waddenzee West/VS_sigmafunctie_WZ_west.txt +19 -0
  165. pydra_core/data/statistics/Sigmafunctie/Waddenzee West/VS_sigmafunctie_WZ_west_2017.txt +23 -0
  166. pydra_core/data/statistics/Sigmafunctie/Westerschelde/VS_sigmafunctie_WS.txt +19 -0
  167. pydra_core/data/statistics/Sigmafunctie/Westerschelde/VS_sigmafunctie_WS_2017.txt +23 -0
  168. pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Europoortkering Maas 2017.csv +631 -0
  169. pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Europoortkering Rijn 2017.csv +631 -0
  170. pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Hollandsche IJsselkering.csv +757 -0
  171. pydra_core/data/statistics/Sluitpeilen/Sluitfunctie Oosterscheldekering 2017.csv +55081 -0
  172. pydra_core/data/statistics/Topduur/Borgharen/Topduur_Borgharen_2017.txt +19 -0
  173. pydra_core/data/statistics/Topduur/Borgharen/Topduur_Borgharen_v00.txt +14 -0
  174. pydra_core/data/statistics/Topduur/Dalfsen/Topduur_Dalfsen_2017.txt +20 -0
  175. pydra_core/data/statistics/Topduur/Dalfsen/Topduur_Dalfsen_v01.txt +16 -0
  176. pydra_core/data/statistics/Topduur/Grevelingenmeer/Topduur_Grevelingenmeer_2017.txt +14 -0
  177. pydra_core/data/statistics/Topduur/Grevelingenmeer/Topduur_Grevelingenmeer_v01.txt +14 -0
  178. pydra_core/data/statistics/Topduur/IJsselmeer/Topduur_IJsselmeer_2017.txt +20 -0
  179. pydra_core/data/statistics/Topduur/IJsselmeer/Topduur_IJsselmeer_v01.txt +15 -0
  180. pydra_core/data/statistics/Topduur/Lith/Topduur_Lith_2017.txt +19 -0
  181. pydra_core/data/statistics/Topduur/Lith/Topduur_Lith_v01.txt +17 -0
  182. pydra_core/data/statistics/Topduur/Lobith/Topduur_Lobith_2017.txt +19 -0
  183. pydra_core/data/statistics/Topduur/Lobith/Topduur_Lobith_v01.txt +17 -0
  184. pydra_core/data/statistics/Topduur/Markermeer/Topduur_Markermeer_2017.txt +20 -0
  185. pydra_core/data/statistics/Topduur/Markermeer/Topduur_Markermeer_v01.txt +12 -0
  186. pydra_core/data/statistics/Topduur/Olst/Topduur_Olst_2017.txt +20 -0
  187. pydra_core/data/statistics/Topduur/Olst/Topduur_Olst_v01.txt +16 -0
  188. pydra_core/data/statistics/Topduur/Veerse Meer/Topduur_Veersemeer_excl_peilverhoging.txt +13 -0
  189. pydra_core/data/statistics/Topduur/Veerse Meer/Topduur_Veersemeer_v01.txt +16 -0
  190. pydra_core/data/statistics/Topduur/Veluwerandmeer/Topduur_Veluwerandmeer_2017.txt +12 -0
  191. pydra_core/data/statistics/Topduur/Veluwerandmeer/Topduur_Veluwerandmeer_v01.txt +12 -0
  192. pydra_core/data/statistics/Topduur/Volkerak-Zoommeer/Topduur_Volkerakzoommeer_BER-VZM.txt +18 -0
  193. pydra_core/data/statistics/Windrichting/Deelen/Richtingskansen_Deelen_2017.txt +28 -0
  194. pydra_core/data/statistics/Windrichting/Hollandse Kust/KansenWindrichting_Kust.txt +17 -0
  195. pydra_core/data/statistics/Windrichting/Hollandse Kust/KansenWindrichting_Kust_2017.txt +24 -0
  196. pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_16sectoren_OS_2023.txt +31 -0
  197. pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_OS.txt +20 -0
  198. pydra_core/data/statistics/Windrichting/Oosterschelde/KansenWindrichting_OS_2017.txt +24 -0
  199. pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_12sectoren.txt +20 -0
  200. pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_12sectoren_2017.txt +20 -0
  201. pydra_core/data/statistics/Windrichting/Schiphol/Richtingskansen_Schiphol_2017.txt +28 -0
  202. pydra_core/data/statistics/Windrichting/Schiphol/kanswindrichting_v01.txt +28 -0
  203. pydra_core/data/statistics/Windrichting/Waddenzee/KansenWindrichting_WZ.txt +17 -0
  204. pydra_core/data/statistics/Windrichting/Waddenzee/KansenWindrichting_WZ_2017.txt +24 -0
  205. pydra_core/data/statistics/Windrichting/Westerschelde/KansenWindrichting_WS.txt +17 -0
  206. pydra_core/data/statistics/Windrichting/Westerschelde/KansenWindrichting_WS_2017.txt +24 -0
  207. pydra_core/data/statistics/Windsnelheid/De Kooy/OvkansWindsnelheid_Texel.txt +70 -0
  208. pydra_core/data/statistics/Windsnelheid/De Kooy/Ovkanswind_de Kooy_2017.txt +92 -0
  209. pydra_core/data/statistics/Windsnelheid/De Kooy/Ovkanswind_de Kooy_2017_metOnzHeid.txt +92 -0
  210. pydra_core/data/statistics/Windsnelheid/Deelen/Ovkanswind_Deelen_2017.txt +90 -0
  211. pydra_core/data/statistics/Windsnelheid/Deelen/Ovkanswind_Deelen_2017_metOnzHeid.txt +90 -0
  212. pydra_core/data/statistics/Windsnelheid/Hoek van Holland/OvkansWindsnelheid_Hoek van Holland.txt +70 -0
  213. pydra_core/data/statistics/Windsnelheid/Hoek van Holland/Ovkanswind_Hoek van Holland_2017.txt +92 -0
  214. pydra_core/data/statistics/Windsnelheid/Hoek van Holland/Ovkanswind_Hoek van Holland_2017_metOnzHeid.txt +92 -0
  215. pydra_core/data/statistics/Windsnelheid/IJmuiden/OvkansWindsnelheid_IJmuiden.txt +70 -0
  216. pydra_core/data/statistics/Windsnelheid/IJmuiden/Ovkanswind_IJmuiden_2017.txt +92 -0
  217. pydra_core/data/statistics/Windsnelheid/IJmuiden/Ovkanswind_IJmuiden_2017_metOnzHeid.txt +92 -0
  218. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren.txt +51 -0
  219. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017.txt +90 -0
  220. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metOnzHeid.txt +90 -0
  221. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metWindDrag.txt +97 -0
  222. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_12sectoren_2017_metWindDrag_metOnzHeid.txt +97 -0
  223. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_16sectoren_2017_metWindDrag.txt +97 -0
  224. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_16sectoren_2017_metWindDrag_metOnzHeid.txt +97 -0
  225. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_2017.txt +90 -0
  226. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_2017_metOnzHeid.txt +90 -0
  227. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_met_Volkerfactor_2017.txt +90 -0
  228. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_Schiphol_met_Volkerfactor_2017_metOnzHeid.txt +90 -0
  229. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol.txt +58 -0
  230. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_10%.txt +64 -0
  231. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_5%.txt +62 -0
  232. pydra_core/data/statistics/Windsnelheid/Schiphol/Ovkanswind_schiphol_B_met volker.txt +60 -0
  233. pydra_core/data/statistics/Windsnelheid/Vlissingen/OvkansWindsnelheid_OS.txt +67 -0
  234. pydra_core/data/statistics/Windsnelheid/Vlissingen/OvkansWindsnelheid_Vlissingen.txt +70 -0
  235. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_16sectoren_2023.txt +92 -0
  236. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_16sectoren_2023_metOnzHeid.txt +91 -0
  237. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017.txt +92 -0
  238. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metOnzHeid.txt +92 -0
  239. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metWindDrag.txt +97 -0
  240. pydra_core/data/statistics/Windsnelheid/Vlissingen/Ovkanswind_Vlissingen_2017_metWindDrag_metOnzHeid.txt +97 -0
  241. pydra_core/data/statistics/Windsnelheid/West-Terschelling/OvkansWindsnelheid_West-Tersch.txt +70 -0
  242. pydra_core/data/statistics/Windsnelheid/West-Terschelling/Ovkanswind_West Terschelling_2017.txt +92 -0
  243. pydra_core/data/statistics/Windsnelheid/West-Terschelling/Ovkanswind_West Terschelling_2017_metOnzHeid.txt +92 -0
  244. pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar1985_2017.txt +82 -0
  245. pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar1985_2017_metOnzHeid.txt +82 -0
  246. pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar2017.txt +82 -0
  247. pydra_core/data/statistics/Zeewaterstand/Delfzijl/CondPovDelfzijl_12u_zichtjaar2017_metOnzHeid.txt +82 -0
  248. pydra_core/data/statistics/Zeewaterstand/Delfzijl/OvkansZee_Delfzijl.txt +71 -0
  249. pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar1985_2017.txt +90 -0
  250. pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar1985_2017_metOnzHeid.txt +90 -0
  251. pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar2017.txt +89 -0
  252. pydra_core/data/statistics/Zeewaterstand/Den Helder/CondPovDenHelder_12u_zichtjaar2017_metOnzHeid.txt +89 -0
  253. pydra_core/data/statistics/Zeewaterstand/Den Helder/OvkansZee_Den Helder.txt +71 -0
  254. pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar1985_2017.txt +89 -0
  255. pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar1985_2017_metOnzHeid.txt +89 -0
  256. pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar2017.txt +88 -0
  257. pydra_core/data/statistics/Zeewaterstand/Den Oever/CondPovDenOeverBuiten_12u_zichtjaar2017_metOnzHeid.txt +88 -0
  258. pydra_core/data/statistics/Zeewaterstand/Den Oever/OvkansZee_Den Oever.txt +71 -0
  259. pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar1985_2017.txt +72 -0
  260. pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar1985_2017_metOnzHeid.txt +72 -0
  261. pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar2017.txt +71 -0
  262. pydra_core/data/statistics/Zeewaterstand/Hansweert/CondPovHansweert_12u_zichtjaar2017_metOnzHeid.txt +71 -0
  263. pydra_core/data/statistics/Zeewaterstand/Hansweert/OvkansZee_Hansweert.txt +71 -0
  264. pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar1985_2017.txt +86 -0
  265. pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
  266. pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar2017.txt +85 -0
  267. pydra_core/data/statistics/Zeewaterstand/Harlingen/CondPovHarlingen_12u_zichtjaar2017_metOnzHeid.txt +85 -0
  268. pydra_core/data/statistics/Zeewaterstand/Harlingen/OvkansZee_Harlingen.txt +71 -0
  269. pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar1985_2017.txt +85 -0
  270. pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar1985_2017_metOnzHeid.txt +85 -0
  271. pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar2017.txt +84 -0
  272. pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/CondPovHoekvanHolland_12u_zichtjaar2017_metOnzHeid.txt +84 -0
  273. pydra_core/data/statistics/Zeewaterstand/Hoek van Holland/OvkansZee_Hoek van Holland.txt +71 -0
  274. pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar1985_2017.txt +87 -0
  275. pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar1985_2017_metOnzHeid.txt +87 -0
  276. pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar2017.txt +86 -0
  277. pydra_core/data/statistics/Zeewaterstand/Huibertgat/CondPovHuibertgat_12u_zichtjaar2017_metOnzHeid.txt +86 -0
  278. pydra_core/data/statistics/Zeewaterstand/Huibertgat/OvkansZee_Huibertgat.txt +71 -0
  279. pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar1985_2017.txt +86 -0
  280. pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
  281. pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar2017.txt +86 -0
  282. pydra_core/data/statistics/Zeewaterstand/IJmuiden/CondPovIJmuiden_12u_zichtjaar2017_metOnzHeid.txt +86 -0
  283. pydra_core/data/statistics/Zeewaterstand/IJmuiden/OvkansZee_IJmuiden.txt +71 -0
  284. pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar1985_2017.txt +86 -0
  285. pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
  286. pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar2017.txt +86 -0
  287. pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/CondPovIJmuiden-Additional_12u_zichtjaar2017_metOnzHeid.txt +86 -0
  288. pydra_core/data/statistics/Zeewaterstand/IJmuiden virtueel/OvkansZee_IJmuiden_virtueel.txt +71 -0
  289. pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar1985_2017.txt +86 -0
  290. pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar1985_2017_metOnzHeid.txt +86 -0
  291. pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar2017.txt +85 -0
  292. pydra_core/data/statistics/Zeewaterstand/Lauwersoog/CondPovLauwersoog_12u_zichtjaar2017_metOnzHeid.txt +85 -0
  293. pydra_core/data/statistics/Zeewaterstand/Lauwersoog/OvkansZee_Lauwersoog.txt +71 -0
  294. pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2011.txt +89 -0
  295. pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2017.txt +89 -0
  296. pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar1985_2017_metOnzheid.txt +93 -0
  297. pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar2017.txt +86 -0
  298. pydra_core/data/statistics/Zeewaterstand/Maasmond/CondPovMaasmond_12u_zichtjaar2017_metOnzheid.txt +86 -0
  299. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar1985_2017.txt +80 -0
  300. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar1985_2017_metOnzHeid.txt +80 -0
  301. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar2017.txt +80 -0
  302. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_12u_zichtjaar2017_metOnzHeid.txt +80 -0
  303. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_16sectoren_12u_2023.txt +75 -0
  304. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/CondPovOS11_16sectoren_12u_2023_metOnzHeid.txt +74 -0
  305. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/OvkansZee_OS11.txt +71 -0
  306. pydra_core/data/statistics/Zeewaterstand/Oosterschelde/OvkansZeewaterstand_OS.txt +72 -0
  307. pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar1985_2017.txt +75 -0
  308. pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar1985_2017_metOnzHeid.txt +75 -0
  309. pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar2017.txt +75 -0
  310. pydra_core/data/statistics/Zeewaterstand/Vlissingen/CondPovVlissingen_12u_zichtjaar2017_metOnzHeid.txt +75 -0
  311. pydra_core/data/statistics/Zeewaterstand/Vlissingen/OvkansZee_Vlissingen.txt +71 -0
  312. pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar1985_2017.txt +75 -0
  313. pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar1985_2017_metOnzHeid.txt +75 -0
  314. pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar2017.txt +75 -0
  315. pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/CondPovVlissingen-Additional_12u_zichtjaar2017_metOnzHeid.txt +75 -0
  316. pydra_core/data/statistics/Zeewaterstand/Vlissingen virtueel/OvkansZee_Vlissingen_virtueel.txt +71 -0
  317. pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar1985_2017.txt +88 -0
  318. pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar1985_2017_metOnzHeid.txt +88 -0
  319. pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar2017.txt +87 -0
  320. pydra_core/data/statistics/Zeewaterstand/West-Terschelling/CondPovWestTerschelling_12u_zichtjaar2017_metOnzHeid.txt +87 -0
  321. pydra_core/data/statistics/Zeewaterstand/West-Terschelling/OvkansZee_West-Terschelling.txt +71 -0
  322. pydra_core/hrdatabase/__init__.py +0 -0
  323. pydra_core/hrdatabase/hrdatabase.py +177 -0
  324. pydra_core/io/__init__.py +0 -0
  325. pydra_core/io/database_hr.py +598 -0
  326. pydra_core/io/database_settings.py +183 -0
  327. pydra_core/io/file_hydranl.py +92 -0
  328. pydra_core/location/__init__.py +0 -0
  329. pydra_core/location/location.py +115 -0
  330. pydra_core/location/model/__init__.py +0 -0
  331. pydra_core/location/model/base_model.py +270 -0
  332. pydra_core/location/model/loading/__init__.py +0 -0
  333. pydra_core/location/model/loading/loading.py +368 -0
  334. pydra_core/location/model/loading/loading_factory.py +89 -0
  335. pydra_core/location/model/loading/loading_model/__init__.py +0 -0
  336. pydra_core/location/model/loading/loading_model/loading_model.py +324 -0
  337. pydra_core/location/model/loading/other_systems/__init__.py +0 -0
  338. pydra_core/location/model/loading/other_systems/loading_wave_overtopping.py +122 -0
  339. pydra_core/location/model/loading/water_systems/__init__.py +0 -0
  340. pydra_core/location/model/loading/water_systems/loading_coast.py +54 -0
  341. pydra_core/location/model/loading/water_systems/loading_eastern_scheldt.py +169 -0
  342. pydra_core/location/model/loading/water_systems/loading_ijssel_vechtdelta.py +55 -0
  343. pydra_core/location/model/loading/water_systems/loading_lake.py +55 -0
  344. pydra_core/location/model/loading/water_systems/loading_lower_rivier.py +68 -0
  345. pydra_core/location/model/loading/water_systems/loading_upper_river.py +55 -0
  346. pydra_core/location/model/statistics/__init__.py +0 -0
  347. pydra_core/location/model/statistics/other_systems/__init__.py +0 -0
  348. pydra_core/location/model/statistics/other_systems/statistics_wave_overtopping.py +72 -0
  349. pydra_core/location/model/statistics/statistics.py +171 -0
  350. pydra_core/location/model/statistics/statistics_factory.py +89 -0
  351. pydra_core/location/model/statistics/stochastics/__init__.py +0 -0
  352. pydra_core/location/model/statistics/stochastics/barrier/__init__.py +0 -0
  353. pydra_core/location/model/statistics/stochastics/barrier/barrier.py +43 -0
  354. pydra_core/location/model/statistics/stochastics/barrier/barrier_easternscheldt.py +147 -0
  355. pydra_core/location/model/statistics/stochastics/barrier/barrier_europoort.py +209 -0
  356. pydra_core/location/model/statistics/stochastics/barrier/barrier_ramspol.py +41 -0
  357. pydra_core/location/model/statistics/stochastics/barrier/no_barrier.py +21 -0
  358. pydra_core/location/model/statistics/stochastics/discharge.py +108 -0
  359. pydra_core/location/model/statistics/stochastics/discrete_probability.py +55 -0
  360. pydra_core/location/model/statistics/stochastics/lake_level.py +158 -0
  361. pydra_core/location/model/statistics/stochastics/model_uncertainty.py +358 -0
  362. pydra_core/location/model/statistics/stochastics/sea_level/sea_level.py +53 -0
  363. pydra_core/location/model/statistics/stochastics/sea_level/sea_level_lower_river.py +93 -0
  364. pydra_core/location/model/statistics/stochastics/sea_level/sea_level_point.py +65 -0
  365. pydra_core/location/model/statistics/stochastics/sea_level/sea_level_triangular.py +158 -0
  366. pydra_core/location/model/statistics/stochastics/sigma_function.py +24 -0
  367. pydra_core/location/model/statistics/stochastics/wave_shape.py +624 -0
  368. pydra_core/location/model/statistics/stochastics/wind_speed.py +196 -0
  369. pydra_core/location/model/statistics/water_systems/__init__.py +0 -0
  370. pydra_core/location/model/statistics/water_systems/statistics_coast.py +153 -0
  371. pydra_core/location/model/statistics/water_systems/statistics_eastern_scheldt.py +177 -0
  372. pydra_core/location/model/statistics/water_systems/statistics_ijssel_vechtdelta.py +229 -0
  373. pydra_core/location/model/statistics/water_systems/statistics_lake.py +86 -0
  374. pydra_core/location/model/statistics/water_systems/statistics_lower_river.py +321 -0
  375. pydra_core/location/model/statistics/water_systems/statistics_upper_river.py +86 -0
  376. pydra_core/location/model/water_system.py +249 -0
  377. pydra_core/location/model/wave_overtopping.py +25 -0
  378. pydra_core/location/profile/__init__.py +0 -0
  379. pydra_core/location/profile/foreland.py +246 -0
  380. pydra_core/location/profile/lib/DikesOvertopping.LICENSE +619 -0
  381. pydra_core/location/profile/lib/README.MD +10 -0
  382. pydra_core/location/profile/lib/__init__.py +1 -0
  383. pydra_core/location/profile/profile.py +971 -0
  384. pydra_core/location/profile/profile_loading.py +473 -0
  385. pydra_core/location/settings/__init__.py +0 -0
  386. pydra_core/location/settings/settings.py +387 -0
  387. pydra_core-0.0.1.dist-info/METADATA +22 -0
  388. pydra_core-0.0.1.dist-info/RECORD +389 -0
  389. 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