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.
@@ -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 = 20 #Paramètre modèle VHM
15
- exchange_parameters_VHM_Uevap = 21 #Paramètre modèle VHM
16
- exchange_parameters_VHM_au1 = 22 #Paramètre modèle VHM
17
- exchange_parameters_VHM_au2 = 23 #Paramètre modèle VHM
18
- exchange_parameters_VHM_au3 = 24 #Paramètre modèle VHM
19
- exchange_parameters_VHM_aof1 = 25 #Paramètre modèle VHM
20
- exchange_parameters_VHM_aof2 = 26 #Paramètre modèle VHM
21
- exchange_parameters_VHM_aif1 = 27 #Paramètre modèle VHM
22
- exchange_parameters_VHM_aif2 = 28 #Paramètre modèle VHM
23
- exchange_parameters_VHM_kof = 29 #Paramètre modèle VHM
24
- exchange_parameters_VHM_kif = 30 #Paramètre modèle VHM
25
- exchange_parameters_VHM_kbf = 31 #Paramètre modèle VHM
26
- exchange_parameters_GR4_x1 = 32 #Paramètre modèle GR4
27
- exchange_parameters_GR4_x2 = 33 #Paramètre modèle GR4
28
- exchange_parameters_GR4_x3 = 34 #Paramètre modèle GR4
29
- exchange_parameters_GR4_x4 = 35 #Paramètre modèle GR4
30
- exchange_parameters_VHM_UH_kif = 36 #Paramètre modèle VHM_UH
31
- exchange_parameters_VHM_UH_kbf = 37 #Paramètre modèle VHM_UH
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
- exchange_parameters_Dist_RS_Hs = 110 #Paramètre modèle distribué Réservoir de stockage
43
- exchange_parameters_Dist_RS_TS = 111 #Paramètre modèle distribué Réservoir de stockage
44
- exchange_parameters_Dist_Soil_Umax = 112 #Paramètre modèle distribué Soil
45
- exchange_parameters_Dist_Soil_TSPAN = 113 #Paramètre modèle distribué Soil
46
- exchange_parameters_Dist_Horton_F0 = 114 #Paramètre modèle distribué Horton
47
- exchange_parameters_Dist_Horton_FC = 115 #Paramètre modèle distribué Horton
48
- exchange_parameters_Dist_Horton_K = 116 #Paramètre modèle distribué Horton
49
- exchange_parameters_Dist_kif = 117 #Paramètre modèle distribué pour réservoir linéaire couche épidermique (if)
50
- exchange_parameters_Dist_qlif = 118 #Paramètre modèle distribué pour réservoir linéaire couche épidermique (if)
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 = -11
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=[], x_title="Dates", y_titles=_("Discharge [m³/s]"), time=None, beginDate:datetime.datetime=None, endDate:datetime.datetime=None, dt:float=None, \
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=[], beginDateMeasure=None, endDateMeasure=None, dtMeasure=None, surfaceMeasure=-1.0, addMeasfInTab:bool=False, \
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(nbElements!=np.shape(y)[0]):
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!=[] and allSurfaces!=[] and surfaceMeasure>0.0 and addMeasfInTab):
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!=[] and allSurfaces!=[] and addMeasfInTab):
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 = check_drange_bug(xdatePlotGen,y1)
559
- ax3[i].plot_date(xdatePlotGen,y1, '-', color='orange')
560
- ax3[i].set_xlim(rangeData[0],rangeData[1]-time_deltaGen)
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')
@@ -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)):