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/PyCrosssections.py +215 -24
- wolfhece/PyDraw.py +18 -11
- wolfhece/PyGui.py +1 -1
- wolfhece/PyVertexvectors.py +45 -22
- wolfhece/apps/version.py +1 -1
- wolfhece/dike.py +20 -8
- wolfhece/lazviewer/laz_viewer.py +29 -6
- wolfhece/math_parser/calculator.py +1 -1
- wolfhece/matplotlib_fig.py +4 -4
- wolfhece/mesh2d/wolf2dprev.py +5 -13
- wolfhece/pydike.py +3 -274
- wolfhece/report/common.py +141 -24
- wolfhece/report/compare_arrays.py +43 -34
- wolfhece/report/compare_cs_dem.py +1453 -0
- wolfhece/report/pdf.py +1 -1
- wolfhece/synthetic_dike.py +276 -0
- wolfhece/wolf_array.py +11 -6
- wolfhece/wolfresults_2D.py +99 -0
- {wolfhece-2.2.44.dist-info → wolfhece-2.2.46.dist-info}/METADATA +1 -1
- {wolfhece-2.2.44.dist-info → wolfhece-2.2.46.dist-info}/RECORD +23 -21
- {wolfhece-2.2.44.dist-info → wolfhece-2.2.46.dist-info}/WHEEL +0 -0
- {wolfhece-2.2.44.dist-info → wolfhece-2.2.46.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.2.44.dist-info → wolfhece-2.2.46.dist-info}/top_level.txt +0 -0
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/
|
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/
|
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/
|
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
|
-
|
6501
|
-
|
6502
|
-
|
6503
|
-
|
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
|
|
wolfhece/wolfresults_2D.py
CHANGED
@@ -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)
|
@@ -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=
|
13
|
-
wolfhece/PyDraw.py,sha256=
|
14
|
-
wolfhece/PyGui.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
287
|
-
wolfhece/report/compare_arrays.py,sha256=
|
288
|
-
wolfhece/report/
|
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.
|
325
|
-
wolfhece-2.2.
|
326
|
-
wolfhece-2.2.
|
327
|
-
wolfhece-2.2.
|
328
|
-
wolfhece-2.2.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|