wolfhece 2.2.45__py3-none-any.whl → 2.2.47__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
 
@@ -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.45
3
+ Version: 2.2.47
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
@@ -1,4 +1,3 @@
1
- wolfhece/ChatwWOLF.py,sha256=B7MkwZiLYjR3OUNBcTIxDnYZzOBFDe52k880KTLUotc,10135
2
1
  wolfhece/Coordinates_operations.py,sha256=DSkzJ1Rm4y89I9tuyyAA9mp-EHp9vl5w2qGpNJ-e9qs,8215
3
2
  wolfhece/CpGrid.py,sha256=_piG1u-ua7NzWh_PHJYTmxuPJ43ZfeYKNEQgZIJwDJ8,10660
4
3
  wolfhece/GraphNotebook.py,sha256=_VZfakR5eXBZE-4Ztv2n12ZDO8zESoeDfCz_9k__T20,31509
@@ -9,9 +8,9 @@ wolfhece/Model1D.py,sha256=-2ibQLscVUsXlcnJWixCIScrBPqJ9BTirmwtGXEKI-4,571155
9
8
  wolfhece/MulticriteriAnalysis.py,sha256=vGmkzYagZohNe0XjwGJ6VUXcDPjOt80lNFthXpzxCF0,59572
10
9
  wolfhece/PandasGrid.py,sha256=etfVhIHzja4Z1EUY6BcDOKX-w7V-Xou1yaf0NMqmclo,4599
11
10
  wolfhece/PyConfig.py,sha256=13DDWjJdohYHwn1uRVHB0s8Jcwq_b9pwcwbAr8NlZyc,19667
12
- wolfhece/PyCrosssections.py,sha256=tVAlYJjCjmaVzP2YFSmWX_0aJ3v9O2sh2O6NBgmUaww,176430
13
- wolfhece/PyDraw.py,sha256=a94Y827cyvjfDX76-k6qnITHVUVGqJ65jHD3z6qetm0,744062
14
- wolfhece/PyGui.py,sha256=GpVRxNpR8WNDFyHnDvhtHFFsq_cZZlyVgSkFiS-ARYI,185342
11
+ wolfhece/PyCrosssections.py,sha256=kCZBlX3idRY-QqJRHE6MPm4Qxz0AOVublV-JSJYUab8,184622
12
+ wolfhece/PyDraw.py,sha256=Wby6vq-xxQUIF-PoNNBJ4GNgrP6Ug5RX5A3eylYEDP8,744285
13
+ wolfhece/PyGui.py,sha256=z8m4M4Q7DVnRt_bEpEDjUl5x0FMkmsEnH2XHnGKWo14,185336
15
14
  wolfhece/PyGuiHydrology.py,sha256=dmBlRO8AljsvCPH6eVt0l9ZLx7g5j7Ubl9Srk7ECwyA,34693
16
15
  wolfhece/PyHydrographs.py,sha256=1P5XAURNqCvtSsMQXhOn1ihjTpr725sRsZdlCEhhk6M,3730
17
16
  wolfhece/PyPalette.py,sha256=OQHyMSr5XXj_NgxABfhdW20IvAsLsdnmsdtW4rvq5Fo,37218
@@ -19,7 +18,7 @@ wolfhece/PyParams.py,sha256=900BIaS7hzFwddsrpowWshf5kjQJKYVhnFykMVTlRSM,102063
19
18
  wolfhece/PyPictures.py,sha256=qcKwyCmZA0V7Kcr1FiLmcMlVhX0BgIZsJawAIKt8qt4,18932
20
19
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
21
20
  wolfhece/PyVertex.py,sha256=0KUzHc4ozuiZKuej6Xx4lyzE7vFOKeBO5dGk-K5LtHo,51893
22
- wolfhece/PyVertexvectors.py,sha256=vDY_ZBCM70n_PT7C5nXpoN0sAkY2soazPFiFOWKABS8,379402
21
+ wolfhece/PyVertexvectors.py,sha256=3bCXjLvf8uEi5HlZI9mNLdcJvtTAzrmJj6sl9CG7eZc,380446
23
22
  wolfhece/PyWMS.py,sha256=MOOikPo-jZv1oPUruGv6XR_Pn_W3h-eNBeRgi_pRNOc,32031
24
23
  wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
25
24
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -33,7 +32,7 @@ wolfhece/analyze_vect.py,sha256=3lkMwaQ4KRddBVRvlP9PcM66wZwwC0eCmypP91AW-os,6015
33
32
  wolfhece/cli.py,sha256=h1tSMHALiftktreyugKcjbASXfpJUm9UYMeVxR-MtG4,6424
34
33
  wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
35
34
  wolfhece/compare_series.py,sha256=M8Xce8vexq3KyVoN-de7pcgCVW0A16vrvlYZegfbwBM,17674
36
- wolfhece/dike.py,sha256=virm26hYnamBOWtFPSBrO2n1z6TmjN5aTTC9te24Pc8,42364
35
+ wolfhece/dike.py,sha256=qcdje5NAAncSN2mI1vKmlq3v2jdcUqozVesSJ_aTKO4,43024
37
36
  wolfhece/drawing_obj.py,sha256=O_K9xlsiPn305YS_2oWTlv3-rBuGiCkwWEcYAwlJRGs,4514
38
37
  wolfhece/eikonal.py,sha256=mxFHJIVJq4pLCI5q1_NaX7Y56ZYk7BN5aqx4xtVsxvc,23291
39
38
  wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
@@ -48,7 +47,7 @@ wolfhece/irm_qdf.py,sha256=K7zUgK91OqbrxfIBLh4ZTgFwDqRGdQZZt5eJSyi70JU,68457
48
47
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
49
48
  wolfhece/lagrange_multiplier.py,sha256=0G-M7b2tGzLx9v0oNYYq4_tLAiHcs_39B4o4W3TUVWM,6567
50
49
  wolfhece/lifewatch.py,sha256=F_Vw5X2Nh0GB9WpAsyRdts3EJ6syaX4vexXN9ePBTqo,16637
51
- wolfhece/matplotlib_fig.py,sha256=vnFI6sghw9N9jKhR8X1Z4aWli_5fPNylZQtFuujFJDY,84075
50
+ wolfhece/matplotlib_fig.py,sha256=oYZC9GmbWbHnVvzzH4LtmBXLRhp9wfmRuUv-jjAOjYg,84051
52
51
  wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
53
52
  wolfhece/os_check.py,sha256=SUHyUZ_tuRDvL995LFoJ6ncE91HcYpd9xN8Tfcg4RUA,316
54
53
  wolfhece/picc.py,sha256=7_Q2N7rlfkoCW6wPljItSRtANL2suhptTW3xz-DjceU,15612
@@ -56,7 +55,7 @@ wolfhece/pidcontroller.py,sha256=PHYenOdzfyPK2pXAhyRolCxMSMRd2AFza0eVMafpPHk,520
56
55
  wolfhece/pyGui1D.py,sha256=9g7OS3YiKsqy--6y0cBD7x2gaqTTYFXWkxImpgnTA20,121937
57
56
  wolfhece/pyLandUseFlanders.py,sha256=4R4J4BgP1-W0sebnb-TBreStZx3DKOh1zYj_dg23Ac4,8657
58
57
  wolfhece/pybridges.py,sha256=bFAqjL4ColeJtwvyCPGQ8VllWoq1RbVWXxFrdfrvqm8,65954
59
- wolfhece/pydike.py,sha256=dRb6qGkqoTXjf107KcajcIk1F_FuMPaOZLSwixT3dgA,11196
58
+ wolfhece/pydike.py,sha256=aWJBmacQfM4X1FFOSuQchy0nJccWYFRsL0lc_vQGOSc,180
60
59
  wolfhece/pydownloader.py,sha256=jdyOpIZPGgHlo6MakklLHIqsTmDMrbDVeKchSpij_K4,16245
61
60
  wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
62
61
  wolfhece/pypolygons_scen.py,sha256=NWaNeK0RSUeOkgukeogK9FLmQiDjGZ9yhqs9208fojM,46237
@@ -64,17 +63,18 @@ wolfhece/pyshields.py,sha256=KMtUO5kD0lisKnJD1NsDz-qaY5DpFcmS4O3WkXtUSmo,27898
64
63
  wolfhece/pyviews.py,sha256=zuZjWUptRDm1MTE1PN4Xj_qSITnojgDMG0LlFIBH3SE,13739
65
64
  wolfhece/pywalous.py,sha256=qF_hzmVFBjM3JP6RV4tbKEVTBsiOGcBJ_O82uoX2Rxg,38595
66
65
  wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
66
+ wolfhece/synthetic_dike.py,sha256=dRb6qGkqoTXjf107KcajcIk1F_FuMPaOZLSwixT3dgA,11196
67
67
  wolfhece/textpillow.py,sha256=7hgfsLYAaE_rNKD-g8xsON8sdWvoV8vbqnGGxIayShE,14137
68
68
  wolfhece/tools2d_dll.py,sha256=TfvvmyZUqEZIH0uHwUCJf0bdmCks_AiidDt23Unsp5w,13550
69
69
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
70
70
  wolfhece/toolshydrology_dll.py,sha256=cIGyhxV8H5f7GXhDqAamM7uC0W0hQTou3eTkqZdnqBE,5656
71
- wolfhece/wolf_array.py,sha256=Vd_9Sp6wjTF9diu9NUOeVymjZNfTnuymYWx280Nx210,588231
71
+ wolfhece/wolf_array.py,sha256=AlVT-1o8D3UWIQcvBUP_oklHOx-vY__9cqdnF8lUtag,588219
72
72
  wolfhece/wolf_hist.py,sha256=fTEb60Q4TEwobdZsRU4CFXAId1eOKdWAqF8lnF1xEWc,3590
73
73
  wolfhece/wolf_texture.py,sha256=Pt1j_lX74p70Fj3y3qYxYMuN8gghVd8_ih1vFhTIdkA,23884
74
74
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
75
75
  wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
76
76
  wolfhece/wolf_zi_db.py,sha256=kz1TofsPfuBQqwYEM32wZl4b-jqgAygorZSm2JnGJ_k,42450
77
- wolfhece/wolfresults_2D.py,sha256=BTewbH0zX55iLLbY3KuHVMAOCsvif2FMvF1SQMJFgf0,245893
77
+ wolfhece/wolfresults_2D.py,sha256=lgPGIYgJ1Wc0edMcLsCj6w3CQ9IqWoR4881BHcdca_w,249639
78
78
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
79
79
  wolfhece/acceptability/Parallels.py,sha256=2wVkfJYor4yl7VYiAZiGGTFwtAab2z66ZfRtBliVweE,4088
80
80
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
@@ -96,8 +96,10 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
96
96
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
97
97
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
98
98
  wolfhece/apps/splashscreen.py,sha256=EdGDN9NhudIiP7c3gVqj7dp4MWFB8ySizM_tpMnsgpE,3091
99
- wolfhece/apps/version.py,sha256=VmZdb3DGqah-YZlqUibhAku2wmsYYuTt_7l5Hcf0xf0,388
99
+ wolfhece/apps/version.py,sha256=yOcKnPSbBIuPo1EH2qe5sbCPJ9lY1HrQWjZYeyCTgb0,388
100
+ wolfhece/apps/wolf.ico,sha256=ej-kLodlUrQLsFDxpDhu2Mak7BTuWw6c9NCJaCBOkHI,238323
100
101
  wolfhece/apps/wolf.py,sha256=mRnjYsUu4KIsRuamdQWAINFMuwN4eJgMo9erG-hkZ70,729
102
+ wolfhece/apps/wolf2.png,sha256=YXd-MbtlxWRq38l5L6ky4Lg80DFuoZEKdbDwmeSsWqo,24714
101
103
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
102
104
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
103
105
  wolfhece/apps/wolf_logo2.bmp,sha256=pCJFVDn_-rHru6fumazVNM4BqAaobM0Xg0zI0DFWMSQ,5830
@@ -184,7 +186,7 @@ wolfhece/lagrangian/particles.py,sha256=sqp-_gfsIt8s3GNcI1eKaeOBMSo2C-wPrL7FpjkE
184
186
  wolfhece/lagrangian/velocity_field.py,sha256=oGVjNm98gEpawreFIrC1lDyC5bEhkk2CsyYAlF1Kq50,10574
185
187
  wolfhece/lazviewer/__init__.py,sha256=AmgfF1EhRVEfEZZI4qLIS8WbInvbDLL2dx-Mkd1pDE4,770
186
188
  wolfhece/lazviewer/_add_path.py,sha256=XgMEXRhFhx9-B1hUsP7Zr199zNljYwT5dGMYSB9jRa4,639
187
- wolfhece/lazviewer/laz_viewer.py,sha256=NzJfOqN7yV-RAPrpxn8UgU0KplKf7jFpWpwrodX0WtU,81662
189
+ wolfhece/lazviewer/laz_viewer.py,sha256=cIbHsd7SzA4Emj3XprmJuGv4ckQx7KVwZux-qWR6cd0,82499
188
190
  wolfhece/lazviewer/libs/Qt5Core.dll,sha256=sTJ_ctYFY9KHMNytF-lzH_078zIvnKTjN-71FDkOWPw,4924928
189
191
  wolfhece/lazviewer/libs/Qt5Gui.dll,sha256=07BeaOeYByraGkKYeDiSDYLawHM8tyd55pVJlKbZ4Y0,5436416
190
192
  wolfhece/lazviewer/libs/Qt5Network.dll,sha256=U-9FiLE9LUKru8r8EQxTnwwlMpwS8JzUtenhkKTCox0,1038336
@@ -236,7 +238,7 @@ wolfhece/mar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
238
  wolfhece/mar/commontools.py,sha256=SiSxpv5BFYEBCEydsE4ZmBuot3KTy0UYMx2aa-4fbuQ,52549
237
239
  wolfhece/mar/interface_MAR_WOLF.py,sha256=MWeXaHLDT4Eo9jZOAvz013lmpgGYT1v9VUYGAgBgSRU,21454
238
240
  wolfhece/math_parser/__init__.py,sha256=Mi7YTrlJtcflyrRdZHHgE-uNPUFfOWmsf8FsOwKBRPI,27961
239
- wolfhece/math_parser/calculator.py,sha256=NYPcNWMBhbnYTK3tqEnbn1vyAcyw_ogNDki1SN7Do_4,7497
241
+ wolfhece/math_parser/calculator.py,sha256=9p7OUdrcBD1fNOm75g7Z2g8jPmSUvIDgriT3aY9N4nE,7491
240
242
  wolfhece/mesh2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
243
  wolfhece/mesh2d/bc_manager.py,sha256=BmNT-M0uWe5--AhxiS4EWziHad4RL-D7wUySqXTICsY,54237
242
244
  wolfhece/mesh2d/cell_tracker.py,sha256=mPmnD5lEf3gLPuLqtAIo-Gp-ipAwQdPxzjWOGt0b7jM,8958
@@ -244,7 +246,7 @@ wolfhece/mesh2d/config_manager.py,sha256=DcdxCIIs_dyC6ayJOBULeY364LONogL9PBaqBtC
244
246
  wolfhece/mesh2d/cst_2D_boundary_conditions.py,sha256=r43pHHdCtmNp5R2zh1Ckb7EzwQDf6C4YMLwRFTl4KMc,5006
245
247
  wolfhece/mesh2d/gpu_2d.py,sha256=xyZst3ZSYmRp9G0kxlUvTahAiMC9sNEH0MRUlEjqFZI,25999
246
248
  wolfhece/mesh2d/simple_2d.py,sha256=wqENJwpUPxKQcpGIcymQXUj2KgkGWCVH6cs4Os9h9Gs,112581
247
- wolfhece/mesh2d/wolf2dprev.py,sha256=823RckzGGCQ00h0uti-nL7JoVsAZ_Hv9C02lnvizDIg,495518
249
+ wolfhece/mesh2d/wolf2dprev.py,sha256=4tH4BBslnnfhq8UcFa0qGH7oSUoe9O6xilIp-xBYtMI,495225
248
250
  wolfhece/models/5_coul.pal,sha256=OI1UqcNIDBpJn2k_VDel__r-hKjjvdob0eqinGCI3QY,160
249
251
  wolfhece/models/6_coul.pal,sha256=z7NK2dg0tAQBUweRQV54dIwJbPM1U5y1AR2LLw19Idw,148
250
252
  wolfhece/models/7_coul.pal,sha256=XTnnUyCE8ONokScB2YzYDnSTft7E6sppmr7P-XwMsCE,205
@@ -283,9 +285,10 @@ wolfhece/rem/REMMaker.py,sha256=zkiAo36MmusPhgv1qJmpDgtoTWbh_eJ6qJqtCfeC1M8,3148
283
285
  wolfhece/rem/RasterViz.py,sha256=fnyMfAJZDoS-rjagsNRGLndS-UYNUzMY4DgenjD3Y_4,29068
284
286
  wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
285
287
  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
288
+ wolfhece/report/common.py,sha256=7nRf1DEXancWsh3V-mqSIqqleaquxn7HemTPTR-8cZ0,21311
289
+ wolfhece/report/compare_arrays.py,sha256=vduobNVgrhWC1LNgCNP7MJ5Dv1Bs-6omUqacbV9-H4w,44050
290
+ wolfhece/report/compare_cs_dem.py,sha256=KujOAaHoHEFyDYrRpAzkUqHgeTFhBpe4xi2efTCz_ig,59517
291
+ wolfhece/report/pdf.py,sha256=WNz-uPDASvAtnP-rJaRRdz0nwiSs8XXWe4622FmeVVM,1953
289
292
  wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,19494
290
293
  wolfhece/report/simplesimgpu.py,sha256=nQK1lY9-uSNTA34N9D5U_ftgCVaSMjtq1zPzz2nO7ts,58622
291
294
  wolfhece/report/tools.py,sha256=ZA4PfHQXgvDtTnrSZh-oSwhQT_cQtb49LuZB8VI7nyI,96852
@@ -321,8 +324,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=u4C7CXe_bUyGKx7c_Bi0x9
321
324
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
322
325
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
326
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
324
- wolfhece-2.2.45.dist-info/METADATA,sha256=eV92Icaf_qIZmocjxaECy1zeighi9PKM0imSWbAUXDM,2792
325
- wolfhece-2.2.45.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
326
- wolfhece-2.2.45.dist-info/entry_points.txt,sha256=Jr187pyvA3EeJiQLjZK9yo6mJX7IAn6ygZU9T8qF_gQ,658
327
- wolfhece-2.2.45.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
328
- wolfhece-2.2.45.dist-info/RECORD,,
327
+ wolfhece-2.2.47.dist-info/METADATA,sha256=E2D4W6SdupEluafVKCe7arDTdJcFpE5BniIeE35l0AU,2792
328
+ wolfhece-2.2.47.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
329
+ wolfhece-2.2.47.dist-info/entry_points.txt,sha256=Jr187pyvA3EeJiQLjZK9yo6mJX7IAn6ygZU9T8qF_gQ,658
330
+ wolfhece-2.2.47.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
331
+ wolfhece-2.2.47.dist-info/RECORD,,