wolfhece 2.1.127__py3-none-any.whl → 2.1.129__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolfhece/PyDraw.py +52 -3
- wolfhece/PyPalette.py +36 -0
- wolfhece/PyParams.py +7 -3
- wolfhece/PyVertexvectors.py +579 -70
- wolfhece/apps/version.py +1 -1
- wolfhece/coupling/hydrology_2d.py +295 -192
- wolfhece/eikonal.py +13 -3
- wolfhece/hydrology/Catchment.py +153 -52
- wolfhece/hydrology/Comparison.py +29 -25
- wolfhece/hydrology/Optimisation.py +309 -178
- wolfhece/hydrology/PostProcessHydrology.py +6 -3
- wolfhece/hydrology/PyWatershed.py +93 -93
- wolfhece/hydrology/RetentionBasin.py +21 -14
- wolfhece/hydrology/SubBasin.py +128 -12
- wolfhece/hydrology/constant.py +3 -0
- wolfhece/hydrology/cst_exchanges.py +364 -38
- wolfhece/hydrology/plot_hydrology.py +32 -16
- wolfhece/hydrology/read.py +16 -6
- wolfhece/lagrange_multiplier.py +205 -0
- wolfhece/libs/WolfDll.dll +0 -0
- wolfhece/math_parser/calculator.py +1 -0
- wolfhece/pybridges.py +2 -2
- wolfhece/pypolygons_scen.py +2 -2
- wolfhece/radar/wolfradar.py +75 -22
- wolfhece/shapes/__init__.py +0 -0
- wolfhece/shapes/circle.py +335 -0
- wolfhece/wolf_array.py +834 -40
- wolfhece/wolfresults_2D.py +204 -13
- {wolfhece-2.1.127.dist-info → wolfhece-2.1.129.dist-info}/METADATA +5 -5
- {wolfhece-2.1.127.dist-info → wolfhece-2.1.129.dist-info}/RECORD +33 -30
- {wolfhece-2.1.127.dist-info → wolfhece-2.1.129.dist-info}/WHEEL +1 -1
- {wolfhece-2.1.127.dist-info → wolfhece-2.1.129.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.127.dist-info → wolfhece-2.1.129.dist-info}/top_level.txt +0 -0
@@ -9,49 +9,109 @@ copying or distribution of this file, via any medium, is strictly prohibited.
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
from . import constant as cst
|
12
|
+
from enum import Enum
|
12
13
|
# Constants representing the exchanges - Fortran
|
13
14
|
|
14
|
-
exchange_parameters_VHM_Umax
|
15
|
-
exchange_parameters_VHM_Uevap
|
16
|
-
exchange_parameters_VHM_au1
|
17
|
-
exchange_parameters_VHM_au2
|
18
|
-
exchange_parameters_VHM_au3
|
19
|
-
exchange_parameters_VHM_aof1
|
20
|
-
exchange_parameters_VHM_aof2
|
21
|
-
exchange_parameters_VHM_aif1
|
22
|
-
exchange_parameters_VHM_aif2
|
23
|
-
exchange_parameters_VHM_kof
|
24
|
-
exchange_parameters_VHM_kif
|
25
|
-
exchange_parameters_VHM_kbf
|
26
|
-
exchange_parameters_GR4_x1
|
27
|
-
exchange_parameters_GR4_x2
|
28
|
-
exchange_parameters_GR4_x3
|
29
|
-
exchange_parameters_GR4_x4
|
30
|
-
exchange_parameters_VHM_UH_kif
|
31
|
-
exchange_parameters_VHM_UH_kbf
|
32
|
-
exchange_parameters_Froude_min_riv = 101 #Paramètre modèle VHM_UH méthode de Froude
|
33
|
-
exchange_parameters_Froude_max_riv = 102 #Paramètre modèle VHM_UH méthode de Froude
|
34
|
-
exchange_parameters_Froude_min_bas = 103 #Paramètre modèle VHM_UH méthode de Froude
|
35
|
-
exchange_parameters_Froude_max_bas = 104 #Paramètre modèle VHM_UH méthode de Froude
|
36
|
-
exchange_parameters_Froude_discharge = 105 #Paramètre modèle VHM_UH méthode de Froude
|
37
|
-
exchange_parameters_Nash_pt = 106 #Paramètre modèle VHM_UH méthode de Nash (peak time)
|
38
|
-
exchange_parameters_Nash_nb = 107 #Paramètre modèle VHM_UH méthode de Nash (nb reservoirs)
|
39
|
-
exchange_parameters_AsymTri_totTime = 108 #Paramètre modèle VHM_UH méthode de HU triangulaire asymétrique (temps total)
|
40
|
-
exchange_parameters_AsymTri_pt = 109 #Paramètre modèle VHM_UH méthode de HU triangulaire asymétrique (peak time)
|
15
|
+
exchange_parameters_VHM_Umax = 20 #Paramètre modèle VHM
|
16
|
+
exchange_parameters_VHM_Uevap = 21 #Paramètre modèle VHM
|
17
|
+
exchange_parameters_VHM_au1 = 22 #Paramètre modèle VHM
|
18
|
+
exchange_parameters_VHM_au2 = 23 #Paramètre modèle VHM
|
19
|
+
exchange_parameters_VHM_au3 = 24 #Paramètre modèle VHM
|
20
|
+
exchange_parameters_VHM_aof1 = 25 #Paramètre modèle VHM
|
21
|
+
exchange_parameters_VHM_aof2 = 26 #Paramètre modèle VHM
|
22
|
+
exchange_parameters_VHM_aif1 = 27 #Paramètre modèle VHM
|
23
|
+
exchange_parameters_VHM_aif2 = 28 #Paramètre modèle VHM
|
24
|
+
exchange_parameters_VHM_kof = 29 #Paramètre modèle VHM
|
25
|
+
exchange_parameters_VHM_kif = 30 #Paramètre modèle VHM
|
26
|
+
exchange_parameters_VHM_kbf = 31 #Paramètre modèle VHM
|
27
|
+
exchange_parameters_GR4_x1 = 32 #Paramètre modèle GR4
|
28
|
+
exchange_parameters_GR4_x2 = 33 #Paramètre modèle GR4
|
29
|
+
exchange_parameters_GR4_x3 = 34 #Paramètre modèle GR4
|
30
|
+
exchange_parameters_GR4_x4 = 35 #Paramètre modèle GR4
|
31
|
+
exchange_parameters_VHM_UH_kif = 36 #Paramètre modèle VHM_UH
|
32
|
+
exchange_parameters_VHM_UH_kbf = 37 #Paramètre modèle VHM_UH
|
41
33
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
34
|
+
exchange_parameters_HBV_FC = 50 #Paramètre modèle HBV
|
35
|
+
exchange_parameters_HBV_beta = 51 #Paramètre modèle HBV
|
36
|
+
exchange_parameters_HBV_PWP = 52 #Paramètre modèle HBV
|
37
|
+
exchange_parameters_HBV_SUmax = 53 #Paramètre modèle HBV
|
38
|
+
exchange_parameters_HBV_kr = 54 #Paramètre modèle HBV
|
39
|
+
exchange_parameters_HBV_kif = 55 #Paramètre modèle HBV
|
40
|
+
exchange_parameters_HBV_kperc = 56 #Paramètre modèle HBV
|
41
|
+
exchange_parameters_HBV_kbf = 57 #Paramètre modèle HBV
|
42
|
+
exchange_parameters_HBV_CFLUX = 58 #Paramètre modèle HBV (HBV-96)
|
43
|
+
exchange_parameters_HBV_alpha = 59 #Paramètre modèle HBV (HBV-96)
|
44
|
+
|
45
|
+
exchange_parameters_SAC_M_UZ_TW = 60 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
46
|
+
exchange_parameters_SAC_M_UZ_FW = 61 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
47
|
+
exchange_parameters_SAC_M_LZ_TW = 62 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
48
|
+
exchange_parameters_SAC_M_LZ_FP = 63 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
49
|
+
exchange_parameters_SAC_M_LZ_FS = 64 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
50
|
+
exchange_parameters_SAC_kif = 65 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
51
|
+
exchange_parameters_SAC_kbf_fp = 66 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
52
|
+
exchange_parameters_SAC_kbf_fs = 67 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
53
|
+
exchange_parameters_SAC_zperc = 68 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
54
|
+
exchange_parameters_SAC_rexp = 69 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
55
|
+
exchange_parameters_SAC_rserv = 74 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
56
|
+
exchange_parameters_SAC_pfree = 75 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
57
|
+
exchange_parameters_SAC_side = 76 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
58
|
+
exchange_parameters_SAC_riva = 77 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
59
|
+
exchange_parameters_SAC_adimp = 78 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
60
|
+
exchange_parameters_SAC_impv = 79 #Paramètre modèle SAC-SMA (SACRAMENTO)
|
61
|
+
|
62
|
+
exchange_parameters_NAM_UMAX = 82 #Paramètre modèle NAM
|
63
|
+
exchange_parameters_NAM_TOF = 83 #Paramètre modèle NAM
|
64
|
+
exchange_parameters_NAM_TIF = 84 #Paramètre modèle NAM
|
65
|
+
exchange_parameters_NAM_CQOF = 85 #Paramètre modèle NAM
|
66
|
+
exchange_parameters_NAM_CKIF = 86 #Paramètre modèle NAM
|
67
|
+
exchange_parameters_NAM_LMAX = 87 #Paramètre modèle NAM
|
68
|
+
exchange_parameters_NAM_TG = 88 #Paramètre modèle NAM
|
69
|
+
exchange_parameters_NAM_CK12 = 89 #Paramètre modèle NAM
|
70
|
+
|
71
|
+
exchange_parameters_NAM_CAREA = 94 #Paramètre modèle NAM
|
72
|
+
exchange_parameters_NAM_CKBF = 95 #Paramètre modèle NAM
|
73
|
+
exchange_parameters_NAM_GWLFL1 = 96 #Paramètre modèle NAM
|
74
|
+
exchange_parameters_NAM_GWLBF0 = 97 #Paramètre modèle NAM
|
75
|
+
exchange_parameters_NAM_SSIGMA = 98 #Paramètre modèle NAM
|
76
|
+
|
77
|
+
exchange_parameters_Froude_min_riv = 101 #Paramètre modèle VHM_UH méthode de Froude
|
78
|
+
exchange_parameters_Froude_max_riv = 102 #Paramètre modèle VHM_UH méthode de Froude
|
79
|
+
exchange_parameters_Froude_min_bas = 103 #Paramètre modèle VHM_UH méthode de Froude
|
80
|
+
exchange_parameters_Froude_max_bas = 104 #Paramètre modèle VHM_UH méthode de Froude
|
81
|
+
exchange_parameters_Froude_discharge = 105 #Paramètre modèle VHM_UH méthode de Froude
|
82
|
+
exchange_parameters_Nash_pt = 106 #Paramètre modèle VHM_UH méthode de Nash (peak time)
|
83
|
+
exchange_parameters_Nash_nb = 107 #Paramètre modèle VHM_UH méthode de Nash (nb reservoirs)
|
84
|
+
exchange_parameters_AsymTri_totTime = 108 #Paramètre modèle VHM_UH méthode de HU triangulaire asymétrique (temps total)
|
85
|
+
exchange_parameters_AsymTri_pt = 109 #Paramètre modèle VHM_UH méthode de HU triangulaire asymétrique (peak time)
|
86
|
+
|
87
|
+
exchange_parameters_Dist_RS_Hs = 110 #Paramètre modèle distribué Réservoir de stockage
|
88
|
+
exchange_parameters_Dist_RS_TS = 111 #Paramètre modèle distribué Réservoir de stockage
|
89
|
+
exchange_parameters_Dist_Soil_Umax = 112 #Paramètre modèle distribué Soil
|
90
|
+
exchange_parameters_Dist_Soil_TSPAN = 113 #Paramètre modèle distribué Soil
|
91
|
+
exchange_parameters_Dist_Horton_F0 = 114 #Paramètre modèle distribué Horton
|
92
|
+
exchange_parameters_Dist_Horton_FC = 115 #Paramètre modèle distribué Horton
|
93
|
+
exchange_parameters_Dist_Horton_K = 116 #Paramètre modèle distribué Horton
|
94
|
+
exchange_parameters_Dist_kif = 117 #Paramètre modèle distribué pour réservoir linéaire couche épidermique (if)
|
95
|
+
exchange_parameters_Dist_qlif = 118 #Paramètre modèle distribué pour réservoir linéaire couche épidermique (if)
|
51
96
|
|
52
97
|
|
53
98
|
# Constants representing the exchanges - Python
|
54
|
-
exchange_parameters_py_timeDelay
|
99
|
+
exchange_parameters_py_timeDelay = -11
|
100
|
+
|
101
|
+
# All the keys of the param dictionary
|
102
|
+
class Type_Keys(Enum):
|
103
|
+
"""
|
104
|
+
Enum to define the type of a parameter
|
105
|
+
|
106
|
+
Strings are also used by Fortran Code -- modify with care
|
107
|
+
"""
|
108
|
+
Name = 'Integer_or_Float'
|
109
|
+
File = 'Integer'
|
110
|
+
Group = 'Logical'
|
111
|
+
Key = 'Float'
|
112
|
+
Unit = 'File'
|
113
|
+
Conv_factor = 'Convertion Factor'
|
114
|
+
Range = 'Range'
|
55
115
|
|
56
116
|
|
57
117
|
# %% All model dictionnaries
|
@@ -246,8 +306,272 @@ UHDIST_LINBF["Parameters"][exchange_parameters_Froude_discharge]["Group"] = "Fro
|
|
246
306
|
UHDIST_LINBF["Parameters"][exchange_parameters_Froude_discharge]["Key"] = "Discharge"
|
247
307
|
UHDIST_LINBF["Parameters"][exchange_parameters_Froude_discharge]["Unit"] = "[m^3/s]"
|
248
308
|
|
309
|
+
HBV = {}
|
310
|
+
HBV["Nb"] = 10
|
311
|
+
HBV["Parameters"] = {}
|
312
|
+
HBV["Parameters"][exchange_parameters_HBV_FC] = {}
|
313
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["Name"] = "Fc"
|
314
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["File"] = "simul_soil.param"
|
315
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["Group"] = "Parameters"
|
316
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["Key"] = "Fc"
|
317
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["Unit"] = "[mm]"
|
318
|
+
HBV["Parameters"][exchange_parameters_HBV_FC]["Range"] = (50.0, 650.0)
|
319
|
+
HBV["Parameters"][exchange_parameters_HBV_beta] = {}
|
320
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["Name"] = "Beta"
|
321
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["File"] = "simul_soil.param"
|
322
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["Group"] = "Parameters"
|
323
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["Key"] = "Beta"
|
324
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["Unit"] = "[-]"
|
325
|
+
HBV["Parameters"][exchange_parameters_HBV_beta]["Range"] = (1.0, 5.0)
|
326
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP] = {}
|
327
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["Name"] = "PWP"
|
328
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["File"] = "simul_soil.param"
|
329
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["Group"] = "Parameters"
|
330
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["Key"] = "PWP"
|
331
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["Unit"] = "[-]"
|
332
|
+
HBV["Parameters"][exchange_parameters_HBV_PWP]["Range"] = (0.03, 1.0)
|
333
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax] = {}
|
334
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["Name"] = "Su_max"
|
335
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["File"] = "simul_UZ.param"
|
336
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["Group"] = "Parameters"
|
337
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["Key"] = "Su max"
|
338
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["Unit"] = "[mm]"
|
339
|
+
HBV["Parameters"][exchange_parameters_HBV_SUmax]["Range"] = (0.0, 100.0)
|
340
|
+
HBV["Parameters"][exchange_parameters_HBV_kr] = {}
|
341
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["Name"] = "K_r"
|
342
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["File"] = "simul_UZ.param"
|
343
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["Group"] = "Parameters"
|
344
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["Key"] = "Kr"
|
345
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["Unit"] = "[1/h]"
|
346
|
+
HBV["Parameters"][exchange_parameters_HBV_kr]["Range"] = (0.05/24.0, 0.5/24.0)
|
347
|
+
HBV["Parameters"][exchange_parameters_HBV_kif] = {}
|
348
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["Name"] = "K_if"
|
349
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["File"] = "simul_UZ.param"
|
350
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["Group"] = "Parameters"
|
351
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["Key"] = "Kif"
|
352
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["Unit"] = "[1/h]"
|
353
|
+
HBV["Parameters"][exchange_parameters_HBV_kif]["Range"] = (0.01/24.0, 0.4/24.0)
|
354
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc] = {}
|
355
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["Name"] = "K_perc"
|
356
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["File"] = "simul_UZ.param"
|
357
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["Group"] = "Parameters"
|
358
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["Key"] = "Kperc"
|
359
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["Unit"] = "[1/h]"
|
360
|
+
HBV["Parameters"][exchange_parameters_HBV_kperc]["Range"] = (0.0, 0.8/24.0)
|
361
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf] = {}
|
362
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Name"] = "K_bf"
|
363
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["File"] = "simul_bf.param"
|
364
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Group"] = "Parameters"
|
365
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Key"] = "Lagtime"
|
366
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Unit"] = "[sec]"
|
367
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Convertion Factor"] = 1/3600.0 # [sec] -> [h]
|
368
|
+
HBV["Parameters"][exchange_parameters_HBV_kbf]["Range"] = (0.0, 0.15/24.0)
|
369
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX] = {}
|
370
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX]["Name"] = "CFLUX"
|
371
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX]["File"] = "simul_soil.param"
|
372
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX]["Group"] = "Parameters"
|
373
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX]["Key"] = "CFLUX"
|
374
|
+
HBV["Parameters"][exchange_parameters_HBV_CFLUX]["Unit"] = "[mm/h]"
|
375
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha] = {}
|
376
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha]["Name"] = "Alpha"
|
377
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha]["File"] = "simul_UZ.param"
|
378
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha]["Group"] = "Parameters"
|
379
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha]["Key"] = "Alpha"
|
380
|
+
HBV["Parameters"][exchange_parameters_HBV_alpha]["Unit"] = "[-]"
|
381
|
+
|
382
|
+
|
383
|
+
SAC_SMA = {}
|
384
|
+
SAC_SMA["Nb"] = 16
|
385
|
+
SAC_SMA["Parameters"] = {}
|
386
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW] = {}
|
387
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["Name"] = "UZ_TW Max"
|
388
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["File"] = "simul_UZ.param"
|
389
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["Group"] = "Parameters"
|
390
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["Key"] = "M_UZ_TW"
|
391
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["Unit"] = "[mm]"
|
392
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_TW]["Range"] = (10.0, 150.0)
|
393
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW] = {}
|
394
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["Name"] = "UZ_FW Max"
|
395
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["File"] = "simul_UZ.param"
|
396
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["Group"] = "Parameters"
|
397
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["Key"] = "M_UZ_FW"
|
398
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["Unit"] = "[mm]"
|
399
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_UZ_FW]["Range"] = (5.0, 100.0)
|
400
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW] = {}
|
401
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["Name"] = "LZ_TW Max"
|
402
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["File"] = "simul_LZ.param"
|
403
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["Group"] = "Parameters"
|
404
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["Key"] = "M_LZ_TW"
|
405
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["Unit"] = "[mm]"
|
406
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_TW]["Range"] = (50.0,400.0)
|
407
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP] = {}
|
408
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["Name"] = "LZ_FP Max"
|
409
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["File"] = "simul_LZ.param"
|
410
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["Group"] = "Parameters"
|
411
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["Key"] = "M_LZ_FP"
|
412
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["Unit"] = "[mm]"
|
413
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FP]["Range"] = (30.0, 800.0)
|
414
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS] = {}
|
415
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["Name"] = "LZ_FS Max"
|
416
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["File"] = "simul_LZ.param"
|
417
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["Group"] = "Parameters"
|
418
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["Key"] = "M_LZ_FS"
|
419
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["Unit"] = "[mm]"
|
420
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_M_LZ_FS]["Range"] = (30.0, 800.0)
|
421
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif] = {}
|
422
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["Name"] = "Kif"
|
423
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["File"] = "simul_UZ.param"
|
424
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["Group"] = "Parameters"
|
425
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["Key"] = "K_if"
|
426
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["Unit"] = "[1/h]"
|
427
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kif]["Range"] = (0.1/24, 0.75/24)
|
428
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp] = {}
|
429
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["Name"] = "Kbf_fp"
|
430
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["File"] = "simul_LZ.param"
|
431
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["Group"] = "Parameters"
|
432
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["Key"] = "K_fp"
|
433
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["Unit"] = "[1/h]"
|
434
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fp]["Range"] = (0.001/24, 0.03/24)
|
435
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs] = {}
|
436
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["Name"] = "Kbf_fs"
|
437
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["File"] = "simul_LZ.param"
|
438
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["Group"] = "Parameters"
|
439
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["Key"] = "K_fs"
|
440
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["Unit"] = "[1/h]"
|
441
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_kbf_fs]["Range"] = (0.02/24, 0.3/24)
|
442
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc] = {}
|
443
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["Name"] = "Z_perc"
|
444
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["File"] = "simul_UZ.param"
|
445
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["Group"] = "Parameters"
|
446
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["Key"] = "Z_perc"
|
447
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["Unit"] = "[-]"
|
448
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_zperc]["Range"] = (10.0, 350.0)
|
449
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp] = {}
|
450
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["Name"] = "R_exp"
|
451
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["File"] = "simul_UZ.param"
|
452
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["Group"] = "Parameters"
|
453
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["Key"] = "R_exp"
|
454
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["Unit"] = "[-]"
|
455
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rexp]["Range"] = (1.0, 4.0)
|
456
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv] = {}
|
457
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["Name"] = "R_serv"
|
458
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["File"] = "simul_LZ.param"
|
459
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["Group"] = "Parameters"
|
460
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["Key"] = "R_serv"
|
461
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["Unit"] = "[-]"
|
462
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_rserv]["Range"] = (0.0, 1.0)
|
463
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree] = {}
|
464
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["Name"] = "P_free"
|
465
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["File"] = "simul_LZ.param"
|
466
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["Group"] = "Parameters"
|
467
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["Key"] = "Pfree"
|
468
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["Unit"] = "[-]"
|
469
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_pfree]["Range"] = (0.0, 0.6)
|
470
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side] = {}
|
471
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["Name"] = "Side"
|
472
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["File"] = "simul_out.param"
|
473
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["Group"] = "Parameters"
|
474
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["Key"] = "Side"
|
475
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["Unit"] = "[-]"
|
476
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_side]["Range"] = (0.0, 0.5)
|
477
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva] = {}
|
478
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["Name"] = "Riva"
|
479
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["File"] = "simul_out.param"
|
480
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["Group"] = "Parameters"
|
481
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["Key"] = "Riva"
|
482
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["Unit"] = "[-]"
|
483
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_riva]["Range"] = (0.0, 0.2)
|
484
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp] = {}
|
485
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["Name"] = "S Adimp"
|
486
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["File"] = "simul_UZ.param"
|
487
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["Group"] = "Parameters"
|
488
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["Key"] = "S_adimp"
|
489
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["Unit"] = "[-]"
|
490
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_adimp]["Range"] = (0.0, 0.2)
|
491
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv] = {}
|
492
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["Name"] = "S Imperv"
|
493
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["File"] = "simul_UZ.param"
|
494
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["Group"] = "Parameters"
|
495
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["Key"] = "S_imperv"
|
496
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["Unit"] = "[-]"
|
497
|
+
SAC_SMA["Parameters"][exchange_parameters_SAC_impv]["Range"] = (0.0, 0.05)
|
249
498
|
|
250
499
|
|
500
|
+
NAM = {}
|
501
|
+
NAM["Nb"] = 10
|
502
|
+
NAM["Parameters"] = {}
|
503
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX] = {}
|
504
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["Name"] = "U_max"
|
505
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["File"] = "simul_SS.param"
|
506
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["Group"] = "Parameters"
|
507
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["Key"] = "Umax"
|
508
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["Unit"] = "[mm]"
|
509
|
+
NAM["Parameters"][exchange_parameters_NAM_UMAX]["Range"] = (10.0, 20.0)
|
510
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF] = {}
|
511
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["Name"] = "TOF"
|
512
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["File"] = "simul_SS.param"
|
513
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["Group"] = "Parameters"
|
514
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["Key"] = "TOF"
|
515
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["Unit"] = "[-]"
|
516
|
+
NAM["Parameters"][exchange_parameters_NAM_TOF]["Range"] = (0.0, 0.99)
|
517
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF] = {}
|
518
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["Name"] = "TIF"
|
519
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["File"] = "simul_SS.param"
|
520
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["Group"] = "Parameters"
|
521
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["Key"] = "TIF"
|
522
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["Unit"] = "[-]"
|
523
|
+
NAM["Parameters"][exchange_parameters_NAM_TIF]["Range"] = (0.0, 0.99)
|
524
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF] = {}
|
525
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["Name"] = "C_qof"
|
526
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["File"] = "simul_SS.param"
|
527
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["Group"] = "Parameters"
|
528
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["Key"] = "c_qof"
|
529
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["Unit"] = "[-]"
|
530
|
+
NAM["Parameters"][exchange_parameters_NAM_CQOF]["Range"] = (0.1, 1.0)
|
531
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF] = {}
|
532
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["Name"] = "C_kif"
|
533
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["File"] = "simul_SS.param"
|
534
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["Group"] = "Parameters"
|
535
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["Key"] = "c_kif"
|
536
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["Unit"] = "[h]"
|
537
|
+
NAM["Parameters"][exchange_parameters_NAM_CKIF]["Range"] = (200.0, 1_000.0)
|
538
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX] = {}
|
539
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["Name"] = "L_max"
|
540
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["File"] = "simul_RZ.param"
|
541
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["Group"] = "Parameters"
|
542
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["Key"] = "L_max"
|
543
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["Unit"] = "[mm]"
|
544
|
+
NAM["Parameters"][exchange_parameters_NAM_LMAX]["Range"] = (100.0, 300.0)
|
545
|
+
NAM["Parameters"][exchange_parameters_NAM_TG] = {}
|
546
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["Name"] = "TG"
|
547
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["File"] = "simul_RZ.param"
|
548
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["Group"] = "Parameters"
|
549
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["Key"] = "TG"
|
550
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["Unit"] = "[-]"
|
551
|
+
NAM["Parameters"][exchange_parameters_NAM_TG]["Range"] = (0.0 ,0.99)
|
552
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12] = {}
|
553
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["Name"] = "C_k 12"
|
554
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["File"] = ["simul_OF.param", "simul_IF.param"]
|
555
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["Group"] = ["Time Parameters", "NAM parameters"]
|
556
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["Key"] = ["Lagtime", "Lagtime"]
|
557
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["Unit"] = "[h]"
|
558
|
+
NAM["Parameters"][exchange_parameters_NAM_CK12]["Range"] = (10.0, 50.0)
|
559
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA] = {}
|
560
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["Name"] = "C_area"
|
561
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["File"] = "simul_RZ.param"
|
562
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["Group"] = "Parameters"
|
563
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["Key"] = "C_area"
|
564
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["Unit"] = "[-]"
|
565
|
+
NAM["Parameters"][exchange_parameters_NAM_CAREA]["Range"] = (0.5, 2.0)
|
566
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF] = {}
|
567
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Name"] = "C_kbf"
|
568
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["File"] = "simul_BF.param"
|
569
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Group"] = "Time Parameters"
|
570
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Key"] = "Lagtime"
|
571
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Unit"] = "[sec]"
|
572
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Convertion Factor"] = 1/3600.0 # [sec] -> [h]
|
573
|
+
NAM["Parameters"][exchange_parameters_NAM_CKBF]["Range"] = (1_000.0,4_000.0)
|
574
|
+
|
251
575
|
|
252
576
|
# General model dictionnary
|
253
577
|
modelParamsDict = {}
|
@@ -255,7 +579,9 @@ modelParamsDict[cst.tom_VHM] = VHM
|
|
255
579
|
modelParamsDict[cst.tom_GR4] = GR4
|
256
580
|
modelParamsDict[cst.tom_UH] = UH
|
257
581
|
modelParamsDict[cst.tom_2layers_linIF]= UHDIST_LINBF
|
258
|
-
|
582
|
+
modelParamsDict[cst.tom_HBV]= HBV
|
583
|
+
modelParamsDict[cst.tom_SAC_SMA]= SAC_SMA
|
584
|
+
modelParamsDict[cst.tom_NAM]= NAM
|
259
585
|
|
260
586
|
# %% Python-Fortran exchange constants
|
261
587
|
|
@@ -115,9 +115,9 @@ def compare_plot(nbElements, writeDir, x, y, x_title, y_titles, graph_title='',
|
|
115
115
|
# If y is an array : each element is by column [][here]
|
116
116
|
# elif y is a list : each element is located [here][]
|
117
117
|
# TO DO : Maybe change this rationale for y -> Too complicated
|
118
|
-
def plot_hydro(nbElements:int, y, rain=
|
118
|
+
def plot_hydro(nbElements:int, y, rain=None, x_title="Dates", y_titles=_("Discharge [m³/s]"), time=None, beginDate:datetime.datetime=None, endDate:datetime.datetime=None, dt:float=None, \
|
119
119
|
graph_title:str=None, y_labels:str=None, rangeData:list[datetime.datetime] = [], myColors:list=None, typeOfTraits:list=None, \
|
120
|
-
measures=
|
120
|
+
measures=None, beginDateMeasure=None, endDateMeasure=None, dtMeasure=None, surfaceMeasure=-1.0, addMeasfInTab:bool=False, \
|
121
121
|
upperPlot:bool=False, nbAddPlot:int=1, z=[], y_labelAddPlot=[], factor_RH:float=1.5, y_rain_range=[], y_data_range=[], figSize = [10.4,6.25],\
|
122
122
|
writeFile:str = '', deltaMajorTicks=-1, deltaMinorTicks=-1, \
|
123
123
|
y_envelop=[], envelopID=0, textInGraph={}, addTable=False, allSurfaces=[], figure=None):
|
@@ -137,7 +137,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
137
137
|
print("ERROR: the number of element and the dimension of 'y' does not coincide")
|
138
138
|
sys.exit()
|
139
139
|
elif(type(y)==list):
|
140
|
-
if
|
140
|
+
if nbElements!=len(y):
|
141
141
|
print("ERROR: the number of element and the dimension of 'y' does not coincide")
|
142
142
|
sys.exit()
|
143
143
|
|
@@ -200,7 +200,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
200
200
|
typeOfTraits.append('-')
|
201
201
|
|
202
202
|
|
203
|
-
if(measures
|
203
|
+
if(measures is not None):
|
204
204
|
time_delta_measure = datetime.timedelta(seconds=dtMeasure)
|
205
205
|
|
206
206
|
if(factor_RH!=1.5 and y_rain_range!=[]):
|
@@ -227,7 +227,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
227
227
|
x_date.append(drange(beginDate[i], endDate[i]+time_delta[i], time_delta[i]))
|
228
228
|
|
229
229
|
|
230
|
-
if(measures
|
230
|
+
if(measures is not None):
|
231
231
|
x_date_measure = drange(beginDateMeasure, endDateMeasure+time_delta_measure, time_delta_measure)
|
232
232
|
|
233
233
|
if figure is None:
|
@@ -401,7 +401,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
401
401
|
|
402
402
|
|
403
403
|
# Plot measures
|
404
|
-
if(measures
|
404
|
+
if(measures is not None):
|
405
405
|
y1 = measures
|
406
406
|
x_date_measure = check_drange_bug(x_date_measure,y1)
|
407
407
|
if(np.nanmax(y1)>max_):
|
@@ -467,7 +467,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
467
467
|
|
468
468
|
|
469
469
|
# b) Hyeto
|
470
|
-
if(rain
|
470
|
+
if(rain is not None):
|
471
471
|
y2 = rain[:] # CAUTION only if the rain is 1 element greater than hydro
|
472
472
|
ax2=ax1.twinx()
|
473
473
|
ax2.set_ylabel(_('Precipitations [mm/h]'),color='b')
|
@@ -494,7 +494,7 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
494
494
|
summaryTab[i][-1] = "%.3f"%(summaryTab[i][-1])
|
495
495
|
summaryTab[i][-2] = "%.3f"%(summaryTab[i][-2])
|
496
496
|
summaryTab[i][-3] = "%.3f"%(summaryTab[i][-3])
|
497
|
-
if(measures
|
497
|
+
if(measures is not None and allSurfaces!=[] and surfaceMeasure>0.0 and addMeasfInTab):
|
498
498
|
summaryTab[-1].append(np.sum(y2)*dt_Gen/3600.0)
|
499
499
|
summaryTab[-1][-2] = summaryTab[-1][-2]*10**(-3)/surfaceMeasure
|
500
500
|
tmpRatio = summaryTab[-1][-2]/summaryTab[-1][-1]
|
@@ -506,11 +506,18 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
506
506
|
summaryTab[-1][-1] = "%.3f"%(summaryTab[-1][-1])
|
507
507
|
summaryTab[-1][-2] = "%.3f"%(summaryTab[-1][-2])
|
508
508
|
summaryTab[-1][-3] = "%.3f"%(summaryTab[-1][-3])
|
509
|
-
elif(measures
|
509
|
+
elif(measures is not None and allSurfaces!=[] and addMeasfInTab):
|
510
510
|
summaryTab[-1].append("/")
|
511
511
|
summaryTab[-1][-2] = "/"
|
512
512
|
summaryTab[-1].append("/")
|
513
|
-
|
513
|
+
|
514
|
+
|
515
|
+
|
516
|
+
if(deltaMajorTicks>0):
|
517
|
+
etimateNbTicks = (rangeData[1]-rangeData[0]).total_seconds()/deltaMajorTicks
|
518
|
+
if(etimateNbTicks>10_000):
|
519
|
+
logging.warning("WARNING: Too many ticks to plot! The major ticks will be removed.")
|
520
|
+
deltaMajorTicks = -1
|
514
521
|
|
515
522
|
if(deltaMajorTicks>0):
|
516
523
|
majorTicks = HourLocator(interval=math.floor(deltaMajorTicks/3600))
|
@@ -555,9 +562,15 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
555
562
|
ax3[i].set_ylabel('Evapotranpiration [mm/h]',color='orange')
|
556
563
|
else:
|
557
564
|
ax3[i].set_ylabel(y_labelAddPlot[i],color='orange')
|
558
|
-
xdatePlotGen
|
559
|
-
|
560
|
-
|
565
|
+
if xdatePlotGen is None:
|
566
|
+
xdatePlot = x_date[i]
|
567
|
+
xdatePlot = check_drange_bug(xdatePlot,y1)
|
568
|
+
ax3[i].plot_date(xdatePlot,y1, '-', color='orange')
|
569
|
+
ax3[i].set_xlim(rangeData[0],rangeData[1]-time_delta[i])
|
570
|
+
else:
|
571
|
+
xdatePlotGen = check_drange_bug(xdatePlotGen,y1)
|
572
|
+
ax3[i].plot_date(xdatePlotGen,y1, '-', color='orange')
|
573
|
+
ax3[i].set_xlim(rangeData[0],rangeData[1]-time_deltaGen)
|
561
574
|
if(deltaMajorTicks>0):
|
562
575
|
majorTicks = HourLocator(interval=math.floor(deltaMajorTicks/3600))
|
563
576
|
ax3[i].xaxis.set_major_locator(majorTicks)
|
@@ -579,21 +592,24 @@ def plot_hydro(nbElements:int, y, rain=[], x_title="Dates", y_titles=_("Discharg
|
|
579
592
|
if(addTable):
|
580
593
|
ax4 = fig.add_subplot(gs[-3:,1:5])
|
581
594
|
columnLabels = ["Q peak [m³/s]", "t peak"+x_title.replace("Dates","")]
|
582
|
-
if(len(title)>1) and measures
|
595
|
+
if(len(title)>1) and measures is not None:
|
583
596
|
if(addMeasfInTab):
|
584
597
|
rowLabels = title[:]
|
585
598
|
else:
|
586
599
|
rowLabels = title[:-1]
|
587
|
-
elif len(title)>0 and measures
|
600
|
+
elif len(title)>0 and measures is None:
|
588
601
|
rowLabels = title[:]
|
589
602
|
else:
|
590
603
|
rowLabels = ["Hydrograph 1"]
|
591
604
|
|
592
|
-
if(rain
|
605
|
+
if(rain is not None):
|
593
606
|
if(allSurfaces!=[]):
|
594
607
|
columnLabels.append("Q cumul [mm]")
|
595
608
|
columnLabels.append("P cumul [mm]")
|
596
609
|
columnLabels.append("Ratio [-]")
|
610
|
+
else:
|
611
|
+
if(allSurfaces!=[]):
|
612
|
+
columnLabels.append("Q cumul [mm]")
|
597
613
|
|
598
614
|
ax4.axis('tight')
|
599
615
|
ax4.axis('off')
|
wolfhece/hydrology/read.py
CHANGED
@@ -14,6 +14,7 @@ import logging
|
|
14
14
|
from datetime import datetime as date
|
15
15
|
from datetime import timezone
|
16
16
|
from struct import unpack, calcsize, unpack_from
|
17
|
+
from pathlib import Path
|
17
18
|
|
18
19
|
|
19
20
|
# Constants
|
@@ -102,8 +103,8 @@ def read_bin_old(path, fileName, nbBytes=[], uniform_format=-1, hydro=False) ->
|
|
102
103
|
nbL = int.from_bytes(num, byteorder='little', signed=True)
|
103
104
|
num = f.read(4)
|
104
105
|
nbC = int.from_bytes(num, byteorder='little', signed=True)
|
105
|
-
print("nb lines = ", nbL)
|
106
|
-
print("nb col = ", nbC)
|
106
|
+
# print("nb lines = ", nbL)
|
107
|
+
# print("nb col = ", nbC)
|
107
108
|
|
108
109
|
if nbBytes==[]:
|
109
110
|
if uniform_format == -1:
|
@@ -201,6 +202,10 @@ def read_binary_file(path, fileName, format="", buffer_size=-1, init_offset=8):
|
|
201
202
|
|
202
203
|
def is_relative_path(path:str):
|
203
204
|
|
205
|
+
if path is None:
|
206
|
+
logging.error("The path is None")
|
207
|
+
return False
|
208
|
+
|
204
209
|
isRelativePath = False
|
205
210
|
|
206
211
|
if len(path)>0:
|
@@ -240,7 +245,7 @@ def relative_2_absolute(fileName:str, prefix:str="", applyCWD:bool=True)-> tuple
|
|
240
245
|
def read_hydro_file(path:str, fileName:str, nbCol:int=6, nbCol_data:int=1) -> tuple[np.array, np.array]:
|
241
246
|
format_bin = "<bbhbbbd"
|
242
247
|
header_offset = 8
|
243
|
-
|
248
|
+
|
244
249
|
data = read_binary_file(path, fileName, format=format_bin, init_offset=header_offset)
|
245
250
|
data = np.array(data).astype("double")
|
246
251
|
time, value = parse_hydro_data(data)
|
@@ -272,7 +277,7 @@ def write_excel_from_dict(data:dict[str:dict[str:np.array]], path:str, fileName:
|
|
272
277
|
# if the dictionary is empty, skip the station -> no creation of the sheet
|
273
278
|
if values == {}:
|
274
279
|
continue
|
275
|
-
|
280
|
+
|
276
281
|
excl_dict = {}
|
277
282
|
if time is not None:
|
278
283
|
excl_dict["Time [s]"] = time
|
@@ -283,7 +288,7 @@ def write_excel_from_dict(data:dict[str:dict[str:np.array]], path:str, fileName:
|
|
283
288
|
curSheet.to_excel(writer, sheet_name=station, index=False)
|
284
289
|
curSheet = writer.sheets[station]
|
285
290
|
curSheet.autofit()
|
286
|
-
|
291
|
+
|
287
292
|
# if the summary is empty, skip the summary -> no creation of the sheet
|
288
293
|
if summary != {}:
|
289
294
|
curSheet = pd.DataFrame(summary)
|
@@ -292,7 +297,7 @@ def write_excel_from_dict(data:dict[str:dict[str:np.array]], path:str, fileName:
|
|
292
297
|
curSheet.autofit()
|
293
298
|
|
294
299
|
writer.close()
|
295
|
-
|
300
|
+
|
296
301
|
return
|
297
302
|
|
298
303
|
def check_path(fileName:str, prefix:str="", applyCWD:bool=True) -> tuple[bool, str] :
|
@@ -302,6 +307,11 @@ def check_path(fileName:str, prefix:str="", applyCWD:bool=True) -> tuple[bool, s
|
|
302
307
|
info = -2
|
303
308
|
return info
|
304
309
|
|
310
|
+
if fileName is None:
|
311
|
+
logging.error("The file name is None")
|
312
|
+
info = -3
|
313
|
+
return info, fileName
|
314
|
+
|
305
315
|
isPresent = os.path.exists(finalName)
|
306
316
|
|
307
317
|
if(not(isPresent)):
|