wolfhece 2.2.44__py3-none-any.whl → 2.2.46__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/report/pdf.py CHANGED
@@ -27,7 +27,7 @@ class PDFViewer(sc.SizedFrame):
27
27
  self.viewer.buttonpanel = self.buttonpanel
28
28
 
29
29
  icon = wx.Icon()
30
- icon_path = Path(__file__).parent.parent / "apps/wolf_logo2.bmp"
30
+ icon_path = Path(__file__).parent.parent / "apps/wolf.ico"
31
31
  icon.CopyFromBitmap(wx.Bitmap(str(icon_path), wx.BITMAP_TYPE_ANY))
32
32
  self.SetIcon(icon)
33
33
 
@@ -0,0 +1,276 @@
1
+ """
2
+ Author: HECE - University of Liege, Pierre Archambeau
3
+ Date: 2024
4
+
5
+ Copyright (c) 2024 University of Liege. All rights reserved.
6
+
7
+ This script and its content are protected by copyright law. Unauthorized
8
+ copying or distribution of this file, via any medium, is strictly prohibited.
9
+ """
10
+
11
+ import logging
12
+
13
+ import numpy as np
14
+ from shapely.geometry import Point, LineString
15
+
16
+ from.drawing_obj import Element_To_Draw
17
+ from .PyVertexvectors import Triangulation, vector,Zones, zone
18
+ from .wolf_array import WolfArray, header_wolf
19
+
20
+ class SyntheticDike(Element_To_Draw):
21
+ """ Dike class for synthetic dikes based on a trace vector, width of the crest and lateral slopes.
22
+ """
23
+
24
+ def __init__(self, idx:str = '', plotted:bool = True, mapviewer = None, need_for_wx:bool = False):
25
+
26
+ super().__init__(idx, plotted, mapviewer, need_for_wx)
27
+
28
+ self._triangulation = None
29
+ self._zones = Zones()
30
+ newzone = zone(name='dike')
31
+
32
+ self._zones.add_zone(newzone, forceparent=True)
33
+
34
+ @property
35
+ def triangulation(self) -> Triangulation:
36
+ """ Return the triangulation of the dike """
37
+ return self._triangulation
38
+
39
+ @property
40
+ def zones(self) -> Zones:
41
+ """ Return the zones of the dike """
42
+ return self._zones
43
+
44
+ def create_from_slopes(self, trace:vector,
45
+ slope_up:float, slope_down:float,
46
+ width_up:float, width_down:float,
47
+ zmin:float, zmax:float, ds:float):
48
+
49
+ """ Create the dike triangulation based on the trace vector and the width of the dike.
50
+
51
+ :param trace: Trace vector of the dike
52
+ :param slope_up: Slope of the dike on the upstream side [slope = dz/dx]
53
+ :param slope_down: Slope of the dike on the downstream side [slope = dz/dx]
54
+ :param width_up: Width of the dike on the upstream side [m]
55
+ :param width_down: Width of the dike on the downstream side [m]
56
+ :param zmin: Minimum elevation of the dike [m]
57
+ :param zmax: Maximum elevation of the dike [m]
58
+ :param ds: Distance for rebinning [m]
59
+ """
60
+
61
+ assert ds > 0.0, "Distance for rebinning must be positive"
62
+ assert slope_up > 0.0, "Slope must be positive"
63
+ assert slope_down > 0.0, "Slope must be positive"
64
+ assert width_up >= 0.0, "Width must be positive"
65
+ assert width_down >= 0.0, "Width must be positive"
66
+ assert zmin < zmax, "zmin must be less than zmax"
67
+
68
+ myzone = self._zones.myzones[0]
69
+ myzone.myvectors = []
70
+
71
+ # Impose altimetry of the crest
72
+ trace.z = zmax
73
+
74
+ # add the trace vector to the zone
75
+ myzone.add_vector(trace, forceparent=True)
76
+
77
+ # CREST of the dike
78
+ # create parallel vectors to the trace vector - right and left
79
+
80
+ if width_up > 0.0:
81
+ distances_up = list(np.linspace(0, width_up, int(width_up/ds)+1, endpoint=True))[1:]
82
+ for curds in distances_up:
83
+ # create a new vector parallel to the trace vector
84
+ parup = trace.parallel_offset(curds, 'right')
85
+ myzone.add_vector(parup, 0, forceparent=True)
86
+ # impose altimetry of the dike
87
+ parup.z = zmax
88
+ else:
89
+ # no width on the upstream side -> use the trace vector
90
+ parup = trace
91
+
92
+ if width_down > 0.0:
93
+ distances_down = list(np.linspace(0, width_down, int(width_down/ds)+1, endpoint=True))[1:]
94
+ for curds in distances_down:
95
+ pardown = trace.parallel_offset(curds, 'left')
96
+ myzone.add_vector(pardown, forceparent=True)
97
+ # impose altimetry of the dike
98
+ pardown.z = zmax
99
+ else:
100
+ # no width on the downstream side -> use the trace vector
101
+ pardown = trace
102
+
103
+ # distances to the crest
104
+ distances_up = (zmax-zmin) / slope_up
105
+ distances_up = list(np.linspace(0, distances_up, int(distances_up/ds)+1, endpoint=True))[1:]
106
+ # distances_up.reverse()
107
+ # iterate over the distup basd on ds
108
+ for curds in distances_up:
109
+ # create a new vector parallel to the trace vector
110
+ parup_new = parup.parallel_offset(curds, 'right')
111
+ myzone.add_vector(parup_new, 0, forceparent=True)
112
+ # impose altimetry of the dike
113
+ parup_new.z = zmax - slope_up * curds
114
+
115
+ distances_down = (zmax-zmin) / slope_down
116
+ distances_down = list(np.linspace(0, distances_down, int(distances_down/ds)+1, endpoint=True))[1:]
117
+ for curds in distances_down:
118
+ pardown_new = pardown.parallel_offset(curds, 'left')
119
+ myzone.add_vector(pardown_new, forceparent=True) # append
120
+ # impose altimetry of the dike
121
+ pardown_new.z = zmax - slope_down * curds
122
+
123
+ # on dispose de multiples vecteurs dans la zone, orientés de l'amont vers l'aval
124
+ trace.update_lengths()
125
+
126
+ nb_along_trace = int(trace.length3D / ds) # nombre de points sur la trace
127
+
128
+ self._triangulation = myzone.create_multibin(nb_along_trace)
129
+
130
+ def create_from_shape(self, trace:vector, shape:vector, ds:float):
131
+ """ create the dike triangulation based on the trace vector and the shape vector
132
+
133
+ :param trace: Trace vector of the dike
134
+ :param shape: Transversal shape of the dike in (s,z) coordinates, s=0.0 is on the trace vector, elevations are relative to the trace vector
135
+ :param ds: Distance for rebinning [m]
136
+ """
137
+
138
+ myzone = self._zones.myzones[0]
139
+ myzone.myvectors = []
140
+
141
+ # add the trace vector to the zone
142
+ myzone.add_vector(trace, forceparent=True)
143
+
144
+ # get the shapely linestring of the trace -> projection
145
+ ref_ls = trace.linestring
146
+
147
+ # Create parallels of the crest according to the shape vector
148
+ # -----------------------------------------------------------
149
+
150
+ # get coordinates of the shape vector
151
+ shape_vertices = shape.xy
152
+
153
+ # Separate the upstream and downstream vertices
154
+ up_vertices = shape_vertices[shape_vertices[:, 0] > 0.0]
155
+ down_vertices = shape_vertices[shape_vertices[:, 0] < 0.0]
156
+
157
+ # reverse the order of downstream vertices
158
+ down_vertices = down_vertices[::-1]
159
+
160
+ # Altitude au droit de la trace
161
+ z_shape_trace = shape_vertices[shape_vertices[:, 0] == 0.0][0][1]
162
+
163
+ # UPSTREAM PART
164
+
165
+ # Loop over the upstream vertices
166
+ z_previous = z_shape_trace
167
+ s_previous = 0.0
168
+ distance_cum = 0.0 # useful for the cumulated distance -> parallel offset
169
+ for cur_sz in up_vertices:
170
+
171
+ ds_loc = cur_sz[0] - s_previous # distance between the two points in the shape
172
+ slope_loc = (z_previous - cur_sz[1]) / ds_loc # local slope of the shape
173
+
174
+ # rebin the distance
175
+ distances_up = list(np.linspace(0, ds_loc, int(ds_loc/ds)+1, endpoint=True))[1:]
176
+
177
+ deltaz_cum = 0.0 # Cumulated elevation difference
178
+
179
+ # iterate over the distup basd on ds
180
+ for curds in distances_up:
181
+ # create a new vector parallel to the trace vector
182
+ # need to add the cumulated distance to the current distance as we
183
+ parup = trace.parallel_offset(curds + distance_cum, 'right')
184
+
185
+ if parup is None:
186
+ logging.warning("No parallel vector found for distance %f", curds + distance_cum)
187
+ continue
188
+
189
+ myzone.add_vector(parup, 0, forceparent=True)
190
+
191
+ # local delta elevation
192
+ deltaz_loc = -slope_loc * curds - deltaz_cum # local difference
193
+
194
+ parup_z = []
195
+
196
+ # we need to interpolate the elevation according to the trace
197
+
198
+ # Iterate over the vertices
199
+ for vert in parup.myvertices:
200
+ # project the vertex on the previous trace
201
+ proj = ref_ls.project(Point(vert.x, vert.y), normalized=True)
202
+ # get the elevation of the trace at the projection point
203
+ z_loc = ref_ls.interpolate(proj, normalized= True).z
204
+ # add the local delta elevation
205
+ z_loc += deltaz_loc
206
+ parup_z.append(z_loc)
207
+
208
+ parup.z = parup_z
209
+ ref_ls = parup.linestring
210
+ deltaz_cum += deltaz_loc
211
+ z_previous = cur_sz[1]
212
+ s_previous = cur_sz[0] # update the elevation of the trace
213
+
214
+ distance_cum += distances_up[-1] # cumulate the distance
215
+
216
+ # create downstream
217
+ ref_ls = trace.linestring
218
+
219
+ z_previous = z_shape_trace
220
+ s_previous = 0.0
221
+ distance_cum = 0.0
222
+ # Loop over the downstream vertices
223
+ for cur_sz in down_vertices:
224
+
225
+ ds_loc = -(cur_sz[0] - s_previous)
226
+ slope_loc = (z_previous - cur_sz[1]) / ds_loc
227
+
228
+ # rebin the distance
229
+ distances_down = list(np.linspace(0, ds_loc, int(ds_loc/ds)+1, endpoint=True))[1:]
230
+
231
+ deltaz_cum = 0.0
232
+
233
+ # iterate over the distup basd on ds
234
+ for curds in distances_down:
235
+ pardown = trace.parallel_offset(curds + distance_cum, 'left')
236
+
237
+ if pardown is None:
238
+ logging.warning("No parallel vector found for distance %f", curds + distance_cum)
239
+ continue
240
+
241
+ myzone.add_vector(pardown, forceparent=True)
242
+
243
+ # impose local elevation
244
+ deltaz_loc = -slope_loc * curds - deltaz_cum # local difference
245
+
246
+ pardown_z = []
247
+ # we need to interpolate the elevation according to the trace
248
+ for vert in pardown.myvertices:
249
+ # project the vertex on the trace
250
+ proj = ref_ls.project(Point(vert.x, vert.y), normalized=True)
251
+ # get the elevation of the trace at the projection point
252
+ z_loc = ref_ls.interpolate(proj, normalized= True).z
253
+ # add the local delta elevation
254
+ z_loc += deltaz_loc
255
+ pardown_z.append(z_loc)
256
+
257
+ # impose the elevation
258
+ pardown.z = pardown_z
259
+ ref_ls = pardown.linestring
260
+ deltaz_cum += deltaz_loc
261
+ z_previous =cur_sz[1] # update the elevation of the trace
262
+ s_previous = cur_sz[0]
263
+
264
+ distance_cum += distances_down[-1]
265
+
266
+ # on dispose de multiples vecteurs dans la zone, orientés de l'amont vers l'aval
267
+ trace.update_lengths()
268
+
269
+ nb_along_trace = int(trace.length3D / ds) # nombre de points sur la trace
270
+
271
+ self._triangulation = myzone.create_multibin(nb_along_trace)
272
+
273
+ for curvect in myzone.myvectors:
274
+ curvect.reset_linestring()
275
+
276
+
wolfhece/wolf_array.py CHANGED
@@ -2676,7 +2676,7 @@ class Ops_Array(wx.Frame):
2676
2676
  self.unselect_interior.Bind(wx.EVT_BUTTON, self.OnUnselectInterior)
2677
2677
 
2678
2678
  icon = wx.Icon()
2679
- icon_path = Path(__file__).parent / "apps/wolf_logo2.bmp"
2679
+ icon_path = Path(__file__).parent / "apps/wolf.ico"
2680
2680
  icon.CopyFromBitmap(wx.Bitmap(str(icon_path), wx.BITMAP_TYPE_ANY))
2681
2681
  self.SetIcon(icon)
2682
2682
 
@@ -3124,7 +3124,7 @@ class Ops_Array(wx.Frame):
3124
3124
  ret_frame = wx.Frame(None, -1, _('Statistics of {} on selected values').format(self.parentarray.idx), size = (300, 200))
3125
3125
 
3126
3126
  icon = wx.Icon()
3127
- icon_path = Path(__file__).parent / "apps/wolf_logo2.bmp"
3127
+ icon_path = Path(__file__).parent / "apps/wolf.ico"
3128
3128
  icon.CopyFromBitmap(wx.Bitmap(str(icon_path), wx.BITMAP_TYPE_ANY))
3129
3129
  ret_frame.SetIcon(icon)
3130
3130
 
@@ -6497,10 +6497,15 @@ class WolfArray(Element_To_Draw, header_wolf):
6497
6497
  if hasattr(self, 'shaded'):
6498
6498
  del self.shaded
6499
6499
 
6500
- if sys.meta_path is not None:
6501
- # Perform garbage collection if gc is available
6502
- import gc
6503
- gc.collect()
6500
+ try:
6501
+ if sys.meta_path is not None:
6502
+ # Perform garbage collection if gc is available
6503
+ import gc
6504
+ gc.collect()
6505
+ except Exception:
6506
+ # Try/except to avoid issues during interpreter shutdown
6507
+ pass
6508
+
6504
6509
  except Exception as e:
6505
6510
  print(f"Exception in WolfArray destructor: {e} -- Please report this issue")
6506
6511
 
@@ -6253,3 +6253,102 @@ class Wolfresults_2D(Element_To_Draw):
6253
6253
  danger_map_matrix_vy.array.mask[:,:] = danger_map_matrix_h.array.mask[:,:]
6254
6254
 
6255
6255
  return (danger_map_matrix_h, danger_map_matrix_v, danger_map_matrix_vx, danger_map_matrix_vy)
6256
+
6257
+ def danger_map_duration_of_inundation(self, start:int=0, end:int=-1,
6258
+ every:int=1, callback=None,
6259
+ hmin:float = 0.001) -> Union[tuple[WolfArray, WolfArray],
6260
+ tuple[WolfArrayMB, WolfArrayMB]]:
6261
+ """
6262
+ Create Danger Maps
6263
+
6264
+ :param start: start time step - 0-based
6265
+ :param end: end time step - 0-based
6266
+ :param every: step interval
6267
+ :param callback: optional callback to update progress
6268
+ :param hmin: minimum water depth to consider a cell as inundated [m]
6269
+
6270
+ :return : tuple of WolfArray or WolfArrayMB - Time of Arrival, Duration of Inundation
6271
+
6272
+ :note : NOT TESTED FOR MULTI-BLOCK SIMULATIONS YET!
6273
+ """
6274
+
6275
+ DEFAULT_TOA = 0.
6276
+
6277
+ if hmin is None:
6278
+ hmin = self.epsilon
6279
+
6280
+ # Number of time steps
6281
+ number_of_time_steps = self.get_nbresults()
6282
+ if end ==-1:
6283
+ end = number_of_time_steps - 1
6284
+
6285
+ if end > number_of_time_steps:
6286
+ logging.warning("End time step is greater than the number of time steps. Setting end to the last time step.")
6287
+ end = number_of_time_steps - 1
6288
+
6289
+ # Init Danger Maps basde on results type
6290
+ # If only one block --> WolfArray
6291
+ # If only multiple blocks --> WolfArrayMB
6292
+ danger_map_matrix_toa = self.as_WolfArray(copyarray=True)
6293
+ danger_map_matrix_doi = self.as_WolfArray(copyarray=True)
6294
+
6295
+ danger_map_matrix_toa.array.data[:,:] = DEFAULT_TOA
6296
+ danger_map_matrix_doi.array.data[:,:] = 0.
6297
+
6298
+ danger = [danger_map_matrix_toa,
6299
+ danger_map_matrix_doi]
6300
+
6301
+ for curdanger in danger:
6302
+ curdanger.nullvalue = 0.
6303
+ curdanger.reset()
6304
+ curdanger.mask_reset()
6305
+
6306
+ to_compute = np.arange(start, end, every)
6307
+
6308
+ if end not in to_compute:
6309
+ to_compute = np.append(to_compute, end)
6310
+
6311
+ for time_step in tqdm(to_compute):
6312
+
6313
+ if callback is not None:
6314
+ callback(time_step, "Step {} / {}".format(int(time_step+1), int(end)))
6315
+
6316
+ self.read_oneresult(time_step)
6317
+
6318
+ cur_time = self.times[time_step]
6319
+
6320
+ if self.nb_blocks>1:
6321
+
6322
+ for curblock in self.myblocks.keys():
6323
+
6324
+ # Get WolfArray
6325
+ wd = self.get_h_for_block(curblock)
6326
+
6327
+ mask = (~wd.array.mask) & (wd.array > hmin)
6328
+
6329
+ # Fill the time of arrival
6330
+ danger_map_matrix_toa[curblock].array[(danger_map_matrix_toa.array.data == DEFAULT_TOA) & (mask)] = cur_time
6331
+ danger_map_matrix_doi[curblock].array[(wd.array > hmin)] = cur_time - danger_map_matrix_toa[curblock].array
6332
+
6333
+ else:
6334
+ curblock = getkeyblock(0)
6335
+
6336
+ wd = self.get_h_for_block(curblock)
6337
+
6338
+ mask = (~wd.array.mask) & (wd.array > hmin)
6339
+
6340
+ # Fill the time of arrival
6341
+ danger_map_matrix_toa.array[(danger_map_matrix_toa.array == DEFAULT_TOA) & mask] = cur_time
6342
+ danger_map_matrix_doi.array[mask] = cur_time - danger_map_matrix_toa.array[mask]
6343
+
6344
+ danger_map_matrix_toa.mask_lowerequal(DEFAULT_TOA)
6345
+
6346
+ if self.nb_blocks>1:
6347
+ for i in range(self.nb_blocks):
6348
+ danger_map_matrix_doi[i].array.mask[:,:] = danger_map_matrix_toa[i].array.mask[:,:]
6349
+
6350
+ else:
6351
+ danger_map_matrix_doi.array.mask[:,:] = danger_map_matrix_toa.array.mask[:,:]
6352
+
6353
+ return (danger_map_matrix_toa,
6354
+ danger_map_matrix_doi)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wolfhece
3
- Version: 2.2.44
3
+ Version: 2.2.46
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  Project-URL: Homepage, https://uee.uliege.be/hece
6
6
  Project-URL: Issues, https://uee.uliege.be/hece
@@ -9,9 +9,9 @@ wolfhece/Model1D.py,sha256=-2ibQLscVUsXlcnJWixCIScrBPqJ9BTirmwtGXEKI-4,571155
9
9
  wolfhece/MulticriteriAnalysis.py,sha256=vGmkzYagZohNe0XjwGJ6VUXcDPjOt80lNFthXpzxCF0,59572
10
10
  wolfhece/PandasGrid.py,sha256=etfVhIHzja4Z1EUY6BcDOKX-w7V-Xou1yaf0NMqmclo,4599
11
11
  wolfhece/PyConfig.py,sha256=13DDWjJdohYHwn1uRVHB0s8Jcwq_b9pwcwbAr8NlZyc,19667
12
- wolfhece/PyCrosssections.py,sha256=nHBxyhw0TB0ZKzEEfvJRrR7Hwtig1ijQhxFkRLDD7dM,176455
13
- wolfhece/PyDraw.py,sha256=a94Y827cyvjfDX76-k6qnITHVUVGqJ65jHD3z6qetm0,744062
14
- wolfhece/PyGui.py,sha256=GpVRxNpR8WNDFyHnDvhtHFFsq_cZZlyVgSkFiS-ARYI,185342
12
+ wolfhece/PyCrosssections.py,sha256=iNbDEvC3Ym9jtDzIaxifiNQgYG7vzbnSxUG8P_bcpbk,184104
13
+ wolfhece/PyDraw.py,sha256=Wby6vq-xxQUIF-PoNNBJ4GNgrP6Ug5RX5A3eylYEDP8,744285
14
+ wolfhece/PyGui.py,sha256=z8m4M4Q7DVnRt_bEpEDjUl5x0FMkmsEnH2XHnGKWo14,185336
15
15
  wolfhece/PyGuiHydrology.py,sha256=dmBlRO8AljsvCPH6eVt0l9ZLx7g5j7Ubl9Srk7ECwyA,34693
16
16
  wolfhece/PyHydrographs.py,sha256=1P5XAURNqCvtSsMQXhOn1ihjTpr725sRsZdlCEhhk6M,3730
17
17
  wolfhece/PyPalette.py,sha256=OQHyMSr5XXj_NgxABfhdW20IvAsLsdnmsdtW4rvq5Fo,37218
@@ -19,7 +19,7 @@ wolfhece/PyParams.py,sha256=900BIaS7hzFwddsrpowWshf5kjQJKYVhnFykMVTlRSM,102063
19
19
  wolfhece/PyPictures.py,sha256=qcKwyCmZA0V7Kcr1FiLmcMlVhX0BgIZsJawAIKt8qt4,18932
20
20
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
21
21
  wolfhece/PyVertex.py,sha256=0KUzHc4ozuiZKuej6Xx4lyzE7vFOKeBO5dGk-K5LtHo,51893
22
- wolfhece/PyVertexvectors.py,sha256=vDY_ZBCM70n_PT7C5nXpoN0sAkY2soazPFiFOWKABS8,379402
22
+ wolfhece/PyVertexvectors.py,sha256=3bCXjLvf8uEi5HlZI9mNLdcJvtTAzrmJj6sl9CG7eZc,380446
23
23
  wolfhece/PyWMS.py,sha256=MOOikPo-jZv1oPUruGv6XR_Pn_W3h-eNBeRgi_pRNOc,32031
24
24
  wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
25
25
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -33,7 +33,7 @@ wolfhece/analyze_vect.py,sha256=3lkMwaQ4KRddBVRvlP9PcM66wZwwC0eCmypP91AW-os,6015
33
33
  wolfhece/cli.py,sha256=h1tSMHALiftktreyugKcjbASXfpJUm9UYMeVxR-MtG4,6424
34
34
  wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
35
35
  wolfhece/compare_series.py,sha256=M8Xce8vexq3KyVoN-de7pcgCVW0A16vrvlYZegfbwBM,17674
36
- wolfhece/dike.py,sha256=X20SEUC4UBQWo2spiBThnEj3pLWDuqcfgI2R8Ag_5D4,42210
36
+ wolfhece/dike.py,sha256=qcdje5NAAncSN2mI1vKmlq3v2jdcUqozVesSJ_aTKO4,43024
37
37
  wolfhece/drawing_obj.py,sha256=O_K9xlsiPn305YS_2oWTlv3-rBuGiCkwWEcYAwlJRGs,4514
38
38
  wolfhece/eikonal.py,sha256=mxFHJIVJq4pLCI5q1_NaX7Y56ZYk7BN5aqx4xtVsxvc,23291
39
39
  wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
@@ -48,7 +48,7 @@ wolfhece/irm_qdf.py,sha256=K7zUgK91OqbrxfIBLh4ZTgFwDqRGdQZZt5eJSyi70JU,68457
48
48
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
49
49
  wolfhece/lagrange_multiplier.py,sha256=0G-M7b2tGzLx9v0oNYYq4_tLAiHcs_39B4o4W3TUVWM,6567
50
50
  wolfhece/lifewatch.py,sha256=F_Vw5X2Nh0GB9WpAsyRdts3EJ6syaX4vexXN9ePBTqo,16637
51
- wolfhece/matplotlib_fig.py,sha256=vnFI6sghw9N9jKhR8X1Z4aWli_5fPNylZQtFuujFJDY,84075
51
+ wolfhece/matplotlib_fig.py,sha256=oYZC9GmbWbHnVvzzH4LtmBXLRhp9wfmRuUv-jjAOjYg,84051
52
52
  wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
53
53
  wolfhece/os_check.py,sha256=SUHyUZ_tuRDvL995LFoJ6ncE91HcYpd9xN8Tfcg4RUA,316
54
54
  wolfhece/picc.py,sha256=7_Q2N7rlfkoCW6wPljItSRtANL2suhptTW3xz-DjceU,15612
@@ -56,7 +56,7 @@ wolfhece/pidcontroller.py,sha256=PHYenOdzfyPK2pXAhyRolCxMSMRd2AFza0eVMafpPHk,520
56
56
  wolfhece/pyGui1D.py,sha256=9g7OS3YiKsqy--6y0cBD7x2gaqTTYFXWkxImpgnTA20,121937
57
57
  wolfhece/pyLandUseFlanders.py,sha256=4R4J4BgP1-W0sebnb-TBreStZx3DKOh1zYj_dg23Ac4,8657
58
58
  wolfhece/pybridges.py,sha256=bFAqjL4ColeJtwvyCPGQ8VllWoq1RbVWXxFrdfrvqm8,65954
59
- wolfhece/pydike.py,sha256=dRb6qGkqoTXjf107KcajcIk1F_FuMPaOZLSwixT3dgA,11196
59
+ wolfhece/pydike.py,sha256=aWJBmacQfM4X1FFOSuQchy0nJccWYFRsL0lc_vQGOSc,180
60
60
  wolfhece/pydownloader.py,sha256=jdyOpIZPGgHlo6MakklLHIqsTmDMrbDVeKchSpij_K4,16245
61
61
  wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
62
62
  wolfhece/pypolygons_scen.py,sha256=NWaNeK0RSUeOkgukeogK9FLmQiDjGZ9yhqs9208fojM,46237
@@ -64,17 +64,18 @@ wolfhece/pyshields.py,sha256=KMtUO5kD0lisKnJD1NsDz-qaY5DpFcmS4O3WkXtUSmo,27898
64
64
  wolfhece/pyviews.py,sha256=zuZjWUptRDm1MTE1PN4Xj_qSITnojgDMG0LlFIBH3SE,13739
65
65
  wolfhece/pywalous.py,sha256=qF_hzmVFBjM3JP6RV4tbKEVTBsiOGcBJ_O82uoX2Rxg,38595
66
66
  wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
67
+ wolfhece/synthetic_dike.py,sha256=dRb6qGkqoTXjf107KcajcIk1F_FuMPaOZLSwixT3dgA,11196
67
68
  wolfhece/textpillow.py,sha256=7hgfsLYAaE_rNKD-g8xsON8sdWvoV8vbqnGGxIayShE,14137
68
69
  wolfhece/tools2d_dll.py,sha256=TfvvmyZUqEZIH0uHwUCJf0bdmCks_AiidDt23Unsp5w,13550
69
70
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
70
71
  wolfhece/toolshydrology_dll.py,sha256=cIGyhxV8H5f7GXhDqAamM7uC0W0hQTou3eTkqZdnqBE,5656
71
- wolfhece/wolf_array.py,sha256=Q_OPy_vtb_lawVXFHiY81tzBQwuPfmD5RegvsCVJjBw,588068
72
+ wolfhece/wolf_array.py,sha256=AlVT-1o8D3UWIQcvBUP_oklHOx-vY__9cqdnF8lUtag,588219
72
73
  wolfhece/wolf_hist.py,sha256=fTEb60Q4TEwobdZsRU4CFXAId1eOKdWAqF8lnF1xEWc,3590
73
74
  wolfhece/wolf_texture.py,sha256=Pt1j_lX74p70Fj3y3qYxYMuN8gghVd8_ih1vFhTIdkA,23884
74
75
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
75
76
  wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
76
77
  wolfhece/wolf_zi_db.py,sha256=kz1TofsPfuBQqwYEM32wZl4b-jqgAygorZSm2JnGJ_k,42450
77
- wolfhece/wolfresults_2D.py,sha256=BTewbH0zX55iLLbY3KuHVMAOCsvif2FMvF1SQMJFgf0,245893
78
+ wolfhece/wolfresults_2D.py,sha256=lgPGIYgJ1Wc0edMcLsCj6w3CQ9IqWoR4881BHcdca_w,249639
78
79
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
79
80
  wolfhece/acceptability/Parallels.py,sha256=2wVkfJYor4yl7VYiAZiGGTFwtAab2z66ZfRtBliVweE,4088
80
81
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
@@ -96,7 +97,7 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
96
97
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
97
98
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
98
99
  wolfhece/apps/splashscreen.py,sha256=EdGDN9NhudIiP7c3gVqj7dp4MWFB8ySizM_tpMnsgpE,3091
99
- wolfhece/apps/version.py,sha256=Qx9g-FVehpFmCw8uyQLrxRAHomvPUqqtQDLcaG-NVoU,388
100
+ wolfhece/apps/version.py,sha256=4c9wOXhaRWFeLjTaF-KQG_NPeaUiy87evcEae5WZrUE,388
100
101
  wolfhece/apps/wolf.py,sha256=mRnjYsUu4KIsRuamdQWAINFMuwN4eJgMo9erG-hkZ70,729
101
102
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
102
103
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -184,7 +185,7 @@ wolfhece/lagrangian/particles.py,sha256=sqp-_gfsIt8s3GNcI1eKaeOBMSo2C-wPrL7FpjkE
184
185
  wolfhece/lagrangian/velocity_field.py,sha256=oGVjNm98gEpawreFIrC1lDyC5bEhkk2CsyYAlF1Kq50,10574
185
186
  wolfhece/lazviewer/__init__.py,sha256=AmgfF1EhRVEfEZZI4qLIS8WbInvbDLL2dx-Mkd1pDE4,770
186
187
  wolfhece/lazviewer/_add_path.py,sha256=XgMEXRhFhx9-B1hUsP7Zr199zNljYwT5dGMYSB9jRa4,639
187
- wolfhece/lazviewer/laz_viewer.py,sha256=NzJfOqN7yV-RAPrpxn8UgU0KplKf7jFpWpwrodX0WtU,81662
188
+ wolfhece/lazviewer/laz_viewer.py,sha256=cIbHsd7SzA4Emj3XprmJuGv4ckQx7KVwZux-qWR6cd0,82499
188
189
  wolfhece/lazviewer/libs/Qt5Core.dll,sha256=sTJ_ctYFY9KHMNytF-lzH_078zIvnKTjN-71FDkOWPw,4924928
189
190
  wolfhece/lazviewer/libs/Qt5Gui.dll,sha256=07BeaOeYByraGkKYeDiSDYLawHM8tyd55pVJlKbZ4Y0,5436416
190
191
  wolfhece/lazviewer/libs/Qt5Network.dll,sha256=U-9FiLE9LUKru8r8EQxTnwwlMpwS8JzUtenhkKTCox0,1038336
@@ -236,7 +237,7 @@ wolfhece/mar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
237
  wolfhece/mar/commontools.py,sha256=SiSxpv5BFYEBCEydsE4ZmBuot3KTy0UYMx2aa-4fbuQ,52549
237
238
  wolfhece/mar/interface_MAR_WOLF.py,sha256=MWeXaHLDT4Eo9jZOAvz013lmpgGYT1v9VUYGAgBgSRU,21454
238
239
  wolfhece/math_parser/__init__.py,sha256=Mi7YTrlJtcflyrRdZHHgE-uNPUFfOWmsf8FsOwKBRPI,27961
239
- wolfhece/math_parser/calculator.py,sha256=NYPcNWMBhbnYTK3tqEnbn1vyAcyw_ogNDki1SN7Do_4,7497
240
+ wolfhece/math_parser/calculator.py,sha256=9p7OUdrcBD1fNOm75g7Z2g8jPmSUvIDgriT3aY9N4nE,7491
240
241
  wolfhece/mesh2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
242
  wolfhece/mesh2d/bc_manager.py,sha256=BmNT-M0uWe5--AhxiS4EWziHad4RL-D7wUySqXTICsY,54237
242
243
  wolfhece/mesh2d/cell_tracker.py,sha256=mPmnD5lEf3gLPuLqtAIo-Gp-ipAwQdPxzjWOGt0b7jM,8958
@@ -244,7 +245,7 @@ wolfhece/mesh2d/config_manager.py,sha256=DcdxCIIs_dyC6ayJOBULeY364LONogL9PBaqBtC
244
245
  wolfhece/mesh2d/cst_2D_boundary_conditions.py,sha256=r43pHHdCtmNp5R2zh1Ckb7EzwQDf6C4YMLwRFTl4KMc,5006
245
246
  wolfhece/mesh2d/gpu_2d.py,sha256=xyZst3ZSYmRp9G0kxlUvTahAiMC9sNEH0MRUlEjqFZI,25999
246
247
  wolfhece/mesh2d/simple_2d.py,sha256=wqENJwpUPxKQcpGIcymQXUj2KgkGWCVH6cs4Os9h9Gs,112581
247
- wolfhece/mesh2d/wolf2dprev.py,sha256=823RckzGGCQ00h0uti-nL7JoVsAZ_Hv9C02lnvizDIg,495518
248
+ wolfhece/mesh2d/wolf2dprev.py,sha256=4tH4BBslnnfhq8UcFa0qGH7oSUoe9O6xilIp-xBYtMI,495225
248
249
  wolfhece/models/5_coul.pal,sha256=OI1UqcNIDBpJn2k_VDel__r-hKjjvdob0eqinGCI3QY,160
249
250
  wolfhece/models/6_coul.pal,sha256=z7NK2dg0tAQBUweRQV54dIwJbPM1U5y1AR2LLw19Idw,148
250
251
  wolfhece/models/7_coul.pal,sha256=XTnnUyCE8ONokScB2YzYDnSTft7E6sppmr7P-XwMsCE,205
@@ -283,9 +284,10 @@ wolfhece/rem/REMMaker.py,sha256=zkiAo36MmusPhgv1qJmpDgtoTWbh_eJ6qJqtCfeC1M8,3148
283
284
  wolfhece/rem/RasterViz.py,sha256=fnyMfAJZDoS-rjagsNRGLndS-UYNUzMY4DgenjD3Y_4,29068
284
285
  wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
285
286
  wolfhece/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
- wolfhece/report/common.py,sha256=7a6zQ-wLZ0ElUVodWCO08TyRBXrI7lnTrosJGcV5_tM,17619
287
- wolfhece/report/compare_arrays.py,sha256=eTCxIdhwCWWe5GhZzq6xyLmicOhnv11Z-yyjV9ZbIgQ,43579
288
- wolfhece/report/pdf.py,sha256=zrSSY1JPk59FxK9pFWQfhVKIQAoc_wjeTrXO3tSiEHo,1959
287
+ wolfhece/report/common.py,sha256=7nRf1DEXancWsh3V-mqSIqqleaquxn7HemTPTR-8cZ0,21311
288
+ wolfhece/report/compare_arrays.py,sha256=vduobNVgrhWC1LNgCNP7MJ5Dv1Bs-6omUqacbV9-H4w,44050
289
+ wolfhece/report/compare_cs_dem.py,sha256=KujOAaHoHEFyDYrRpAzkUqHgeTFhBpe4xi2efTCz_ig,59517
290
+ wolfhece/report/pdf.py,sha256=WNz-uPDASvAtnP-rJaRRdz0nwiSs8XXWe4622FmeVVM,1953
289
291
  wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,19494
290
292
  wolfhece/report/simplesimgpu.py,sha256=nQK1lY9-uSNTA34N9D5U_ftgCVaSMjtq1zPzz2nO7ts,58622
291
293
  wolfhece/report/tools.py,sha256=ZA4PfHQXgvDtTnrSZh-oSwhQT_cQtb49LuZB8VI7nyI,96852
@@ -321,8 +323,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=u4C7CXe_bUyGKx7c_Bi0x9
321
323
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
322
324
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
325
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
324
- wolfhece-2.2.44.dist-info/METADATA,sha256=jMQUN8upqwAcfiLIAfwzauCVMPf1qRZ-rIr4E4HE-58,2792
325
- wolfhece-2.2.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
326
- wolfhece-2.2.44.dist-info/entry_points.txt,sha256=Jr187pyvA3EeJiQLjZK9yo6mJX7IAn6ygZU9T8qF_gQ,658
327
- wolfhece-2.2.44.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
328
- wolfhece-2.2.44.dist-info/RECORD,,
326
+ wolfhece-2.2.46.dist-info/METADATA,sha256=vnmf6HdA8sIxenewSqj2Q-i0azUU9KmlfzywqlRCkVA,2792
327
+ wolfhece-2.2.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
328
+ wolfhece-2.2.46.dist-info/entry_points.txt,sha256=Jr187pyvA3EeJiQLjZK9yo6mJX7IAn6ygZU9T8qF_gQ,658
329
+ wolfhece-2.2.46.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
330
+ wolfhece-2.2.46.dist-info/RECORD,,