wolfhece 2.1.126__py3-none-any.whl → 2.1.127__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/PyConfig.py +77 -4
- wolfhece/PyDraw.py +713 -10
- wolfhece/PyVertexvectors.py +33 -1
- wolfhece/apps/version.py +1 -1
- wolfhece/eikonal.py +495 -0
- wolfhece/lazviewer/laz_viewer.py +28 -3
- wolfhece/scenario/config_manager.py +12 -12
- wolfhece/wolf_array.py +219 -7
- {wolfhece-2.1.126.dist-info → wolfhece-2.1.127.dist-info}/METADATA +1 -1
- {wolfhece-2.1.126.dist-info → wolfhece-2.1.127.dist-info}/RECORD +13 -12
- {wolfhece-2.1.126.dist-info → wolfhece-2.1.127.dist-info}/WHEEL +0 -0
- {wolfhece-2.1.126.dist-info → wolfhece-2.1.127.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.126.dist-info → wolfhece-2.1.127.dist-info}/top_level.txt +0 -0
@@ -472,13 +472,13 @@ class Config_Manager_2D_GPU:
|
|
472
472
|
|
473
473
|
logging.info(_('Number of tif files : {}'.format(len(list_tif))))
|
474
474
|
|
475
|
-
standard_files = ['bathymetry.tif',
|
476
|
-
'manning.tif',
|
477
|
-
'infiltration.tif',
|
478
|
-
'h.tif',
|
479
|
-
'qx.tif',
|
480
|
-
'qy.tif',
|
481
|
-
'roof.tif',
|
475
|
+
standard_files = ['bathymetry.tif',
|
476
|
+
'manning.tif',
|
477
|
+
'infiltration.tif',
|
478
|
+
'h.tif',
|
479
|
+
'qx.tif',
|
480
|
+
'qy.tif',
|
481
|
+
'roof.tif',
|
482
482
|
'deck.tif']
|
483
483
|
|
484
484
|
log = ''
|
@@ -1217,7 +1217,7 @@ class Config_Manager_2D_GPU:
|
|
1217
1217
|
logging.error(_("No 'bathymetry.tif' file found in the root directory !"))
|
1218
1218
|
|
1219
1219
|
|
1220
|
-
def combine_bath_roof_deck(self, bathymetry:WolfArray,
|
1220
|
+
def combine_bath_roof_deck(self, bathymetry:WolfArray,
|
1221
1221
|
bridge_roof:WolfArray, bridge_deck:WolfArray,
|
1222
1222
|
threshold:float = .05) -> str:
|
1223
1223
|
""" Verify bathymetry, roof and deck """
|
@@ -1231,7 +1231,7 @@ class Config_Manager_2D_GPU:
|
|
1231
1231
|
if ret != '':
|
1232
1232
|
logging.error(ret)
|
1233
1233
|
return ret
|
1234
|
-
|
1234
|
+
|
1235
1235
|
# si la matrice de toit de pont est plus basse que la bathymétrie, on met à 99999
|
1236
1236
|
# la bathymétrie et le toit de pont.
|
1237
1237
|
# Ainsi, ces maille seront infranchissables.
|
@@ -1257,7 +1257,7 @@ class Config_Manager_2D_GPU:
|
|
1257
1257
|
ret += _(' -- Bathymetry values will be set to max(bath, deck)\n')
|
1258
1258
|
ret += _(' -- These cells will remain impassable until the water level rises above them\n')
|
1259
1259
|
bridge_roof.array.data[mask] = 99999.
|
1260
|
-
bathymetry.array.data[mask] = np.maximum(bridge_deck.array.data[mask], bathymetry.array.data[mask])
|
1260
|
+
bathymetry.array.data[mask] = np.maximum(bridge_deck.array.data[mask], bathymetry.array.data[mask])
|
1261
1261
|
|
1262
1262
|
mask = np.where(bridge_roof.array.data - bathymetry.array.data < threshold)
|
1263
1263
|
if mask[0].shape[0] > 0:
|
@@ -1273,7 +1273,7 @@ class Config_Manager_2D_GPU:
|
|
1273
1273
|
logging.warning(ret)
|
1274
1274
|
|
1275
1275
|
return ret
|
1276
|
-
|
1276
|
+
|
1277
1277
|
def create_simulation(self,
|
1278
1278
|
dir:Path,
|
1279
1279
|
idx_hydros:list[int] = [-1],
|
@@ -1576,7 +1576,7 @@ class Config_Manager_2D_GPU:
|
|
1576
1576
|
for cursim in allsims:
|
1577
1577
|
cursim:Path
|
1578
1578
|
batch += 'cd {}\n'.format(str(cursim.parent))
|
1579
|
-
batch += str(cursim.name) + '\n'
|
1579
|
+
batch += 'call ' + str(cursim.name) + '\n'
|
1580
1580
|
|
1581
1581
|
with open(path, 'w', encoding='utf-8') as f:
|
1582
1582
|
f.write(batch)
|
wolfhece/wolf_array.py
CHANGED
@@ -1576,6 +1576,14 @@ class CropDialog(wx.Dialog):
|
|
1576
1576
|
self.ex.SetValue(str(header.origx + header.nbx * header.dx))
|
1577
1577
|
self.ey.SetValue(str(header.origy + header.nby * header.dy))
|
1578
1578
|
|
1579
|
+
def get_crop(self):
|
1580
|
+
""" Return the crop values """
|
1581
|
+
try:
|
1582
|
+
return [[float(self.ox.Value), float(self.oy.Value)], [float(self.ex.Value), float(self.ey.Value)]]
|
1583
|
+
except:
|
1584
|
+
logging.error(_('Values must be numbers'))
|
1585
|
+
return None
|
1586
|
+
|
1579
1587
|
import string
|
1580
1588
|
class IntValidator(wx.Validator):
|
1581
1589
|
''' Validates data as it is entered into the text controls. '''
|
@@ -5122,7 +5130,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
5122
5130
|
:param fname: filename/filepath - if provided, the file will be read on disk
|
5123
5131
|
:param mold: initialize from a copy a the mold object --> must be a WolArray if not None
|
5124
5132
|
:param masknull: mask data based on the nullvalue
|
5125
|
-
:param crop: crop data based on the spatial extent [[xmin, xmax],[ymin,ymax]]
|
5133
|
+
:param crop: crop data based on the spatial extent [[xmin, xmax], [ymin,ymax]]
|
5126
5134
|
:param whichtype: type of the numpy array (float32 as default)
|
5127
5135
|
:param preload: True = load data during initialization ; False = waits for the display to be required
|
5128
5136
|
:param create: True = create a new array from wxDialog
|
@@ -6073,12 +6081,16 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6073
6081
|
|
6074
6082
|
fn_crop = fn + '_crop.tif'
|
6075
6083
|
if type(crop) is np.ndarray:
|
6076
|
-
|
6084
|
+
if crop.shape == (4,):
|
6085
|
+
logging.error(_('Crop must be a list or a numpy array with 4 values - [[xmin, xmax], [ymin, ymax]]'))
|
6086
|
+
crop = [[crop[0], crop[1]], [crop[2], crop[3]]]
|
6077
6087
|
elif type(crop) is list:
|
6078
|
-
|
6088
|
+
if len(crop) == 4:
|
6089
|
+
logging.error(_('Crop must be a list or a numpy array with 4 values - [[xmin, xmax], [ymin, ymax]]'))
|
6090
|
+
crop = [[crop[0], crop[1]], [crop[2], crop[3]]]
|
6079
6091
|
else:
|
6080
6092
|
if not self.wx_exists:
|
6081
|
-
logging.error(_('
|
6093
|
+
logging.error(_('WX App is required to display the UI'))
|
6082
6094
|
return
|
6083
6095
|
|
6084
6096
|
raster_in:gdal.Dataset
|
@@ -6141,8 +6153,8 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6141
6153
|
newcrop.Destroy()
|
6142
6154
|
return
|
6143
6155
|
else:
|
6144
|
-
crop = [float(newcrop.ox.Value), float(newcrop.ex.Value),
|
6145
|
-
float(newcrop.oy.Value), float(newcrop.ey.Value)]
|
6156
|
+
crop = [[float(newcrop.ox.Value), float(newcrop.ex.Value)],
|
6157
|
+
[float(newcrop.oy.Value), float(newcrop.ey.Value)]]
|
6146
6158
|
|
6147
6159
|
tmpdx = float(newcrop.dx.Value)
|
6148
6160
|
tmpdy = float(newcrop.dy.Value)
|
@@ -6153,7 +6165,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6153
6165
|
|
6154
6166
|
newcrop.Destroy()
|
6155
6167
|
|
6156
|
-
xmin, xmax, ymin, ymax = crop
|
6168
|
+
[xmin, xmax], [ymin, ymax] = crop
|
6157
6169
|
|
6158
6170
|
gdal.Translate(tmpfile, fn, projWin=[xmin, ymax, xmax, ymin])
|
6159
6171
|
else:
|
@@ -9847,6 +9859,206 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
9847
9859
|
|
9848
9860
|
return zones
|
9849
9861
|
|
9862
|
+
def inpaint(self, mask_array:"WolfArray" = None, test_array:"WolfArray" = None, ignore_last:int = 1):
|
9863
|
+
""" InPaintaing holes in the array
|
9864
|
+
|
9865
|
+
:param mask_array: where computation is done
|
9866
|
+
:param test_array: used in test -- interpolation is accepted if new value is over test_array
|
9867
|
+
:param ignore_last: number of last patches to ignore
|
9868
|
+
|
9869
|
+
"""
|
9870
|
+
|
9871
|
+
from .eikonal import inpaint_array
|
9872
|
+
|
9873
|
+
if mask_array is None:
|
9874
|
+
mask_array = self.array.mask
|
9875
|
+
elif isinstance(mask_array, WolfArray):
|
9876
|
+
mask_array = mask_array.array.data
|
9877
|
+
|
9878
|
+
if test_array is None:
|
9879
|
+
test_array = np.ones(self.array.data.shape) * self.array.data.min()
|
9880
|
+
elif isinstance(test_array, WolfArray):
|
9881
|
+
test_array = test_array.array.data
|
9882
|
+
|
9883
|
+
time, wl_np, wd_np = inpaint_array(self.array.data,
|
9884
|
+
mask_array,
|
9885
|
+
test_array,
|
9886
|
+
ignore_last_patches= ignore_last,
|
9887
|
+
dx = self.dx,
|
9888
|
+
dy = self.dy,
|
9889
|
+
NoDataValue = self.nullvalue,
|
9890
|
+
inplace=True,
|
9891
|
+
multiprocess= True)
|
9892
|
+
|
9893
|
+
wd = WolfArray(mold=self)
|
9894
|
+
wd.array[:,:] = wd_np[:,:]
|
9895
|
+
wd.mask_data(self.nullvalue)
|
9896
|
+
|
9897
|
+
wl = self
|
9898
|
+
|
9899
|
+
self.mask_data(self.nullvalue)
|
9900
|
+
self.reset_plot()
|
9901
|
+
return time, wl, wd
|
9902
|
+
|
9903
|
+
def _inpaint_waterlevel_dem_dtm(self, dem:"WolfArray", dtm:"WolfArray", ignore_last:int = 1, use_fortran:bool = False):
|
9904
|
+
""" InPaintaing waterlevel holes in the array.
|
9905
|
+
|
9906
|
+
We use DEM and DTM to mask and constraint the inpainting process.
|
9907
|
+
|
9908
|
+
:param dem: Digital Elevation Model (same as simulation model)
|
9909
|
+
:param dtm: Digital Terrain Model
|
9910
|
+
:param ignore_last: number of last patches to ignore
|
9911
|
+
:param use_fortran: use Fortran inpainting code
|
9912
|
+
"""
|
9913
|
+
|
9914
|
+
if use_fortran:
|
9915
|
+
import shutil
|
9916
|
+
from tempfile import TemporaryDirectory
|
9917
|
+
# check if hoels.exe is available in PATH
|
9918
|
+
if shutil.which('holes.exe') is None:
|
9919
|
+
logging.error(_('holes.exe not found in PATH'))
|
9920
|
+
logging.info(_('We use the Python version of inpainting'))
|
9921
|
+
use_fortran = False
|
9922
|
+
|
9923
|
+
else:
|
9924
|
+
with TemporaryDirectory() as tmpdirname:
|
9925
|
+
# create mask from DEM, DTM and WL
|
9926
|
+
|
9927
|
+
mask = self._create_building_holes_dem_dtm(dem, dtm, ignore_last)
|
9928
|
+
|
9929
|
+
# save mask and dtm to temporary files
|
9930
|
+
locdir = Path(tmpdirname)
|
9931
|
+
wl_name = locdir / 'array.bin'
|
9932
|
+
mask_name = locdir / 'mask.bin'
|
9933
|
+
dtm_name = locdir / 'dtm.bin'
|
9934
|
+
|
9935
|
+
mask.write_all(mask_name)
|
9936
|
+
dtm.write_all(dtm_name)
|
9937
|
+
|
9938
|
+
oldname = self.filename
|
9939
|
+
self.write_all(wl_name)
|
9940
|
+
self.filename = oldname
|
9941
|
+
|
9942
|
+
# call holes.exe
|
9943
|
+
olddir = os.getcwd()
|
9944
|
+
|
9945
|
+
# change to temporary directory
|
9946
|
+
os.chdir(locdir)
|
9947
|
+
shell_command = f'holes.exe inpaint in={wl_name} mask={mask_name} dem={dtm_name} avoid_last={ignore_last} out=temp'
|
9948
|
+
logging.info(shell_command)
|
9949
|
+
logging.info('Inpainting holes using holes.exe')
|
9950
|
+
os.system(shell_command)
|
9951
|
+
logging.info('Done - reading inpainted array')
|
9952
|
+
|
9953
|
+
# read inpainted array
|
9954
|
+
wl = WolfArray(locdir / 'temp_combl.tif')
|
9955
|
+
wd = WolfArray(locdir / 'temp_h.tif')
|
9956
|
+
|
9957
|
+
wd.array[wd.array < 0.] = 0.
|
9958
|
+
wd.mask_data(0.)
|
9959
|
+
|
9960
|
+
os.chdir(olddir)
|
9961
|
+
|
9962
|
+
self.array.data[:,:] = wl.array.data[:,:]
|
9963
|
+
|
9964
|
+
time = None
|
9965
|
+
|
9966
|
+
if not use_fortran:
|
9967
|
+
|
9968
|
+
from .eikonal import inpaint_waterlevel
|
9969
|
+
|
9970
|
+
time, wl_np, wd_np = inpaint_waterlevel(self.array.data,
|
9971
|
+
dem.array.data,
|
9972
|
+
dtm.array.data,
|
9973
|
+
ignore_last_patches= ignore_last,
|
9974
|
+
dx = self.dx,
|
9975
|
+
dy = self.dy,
|
9976
|
+
NoDataValue = self.nullvalue,
|
9977
|
+
inplace=True,
|
9978
|
+
multiprocess= True)
|
9979
|
+
|
9980
|
+
wd = WolfArray(mold=self)
|
9981
|
+
wd.array[:,:] = wd_np[:,:]
|
9982
|
+
wd.mask_data(self.nullvalue)
|
9983
|
+
|
9984
|
+
wl = self
|
9985
|
+
|
9986
|
+
self.mask_data(self.nullvalue)
|
9987
|
+
self.reset_plot()
|
9988
|
+
return time, wl, wd
|
9989
|
+
|
9990
|
+
def count_holes(self, mask:"WolfArray" = None):
|
9991
|
+
""" Count holes in the array """
|
9992
|
+
from .eikonal import count_holes
|
9993
|
+
|
9994
|
+
if mask is None:
|
9995
|
+
mask = self.array.mask
|
9996
|
+
elif isinstance(mask, WolfArray):
|
9997
|
+
mask = mask.array.data
|
9998
|
+
|
9999
|
+
return count_holes(mask)
|
10000
|
+
|
10001
|
+
def select_holes(self, mask:"WolfArray" = None, ignore_last:int = 1):
|
10002
|
+
""" Select holes in the array """
|
10003
|
+
|
10004
|
+
if mask is None:
|
10005
|
+
mask = self.array.mask
|
10006
|
+
elif isinstance(mask, WolfArray):
|
10007
|
+
mask = mask.array.data
|
10008
|
+
|
10009
|
+
labels, numfeatures = label(mask)
|
10010
|
+
|
10011
|
+
# count cells in holes
|
10012
|
+
nb_cells = np.bincount(labels.ravel())
|
10013
|
+
|
10014
|
+
# sort by number of cells
|
10015
|
+
idx = np.argsort(nb_cells)
|
10016
|
+
|
10017
|
+
for i in range(ignore_last):
|
10018
|
+
labels[labels == idx[-1-i]] = 0
|
10019
|
+
|
10020
|
+
# select holes but ignoring last ones
|
10021
|
+
ij = np.argwhere(labels)
|
10022
|
+
|
10023
|
+
# Convert i,j to x,y
|
10024
|
+
|
10025
|
+
xy = self.ij2xy_np(ij)
|
10026
|
+
|
10027
|
+
self.SelectionData.myselection = list(xy)
|
10028
|
+
self.SelectionData.update_nb_nodes_selection()
|
10029
|
+
|
10030
|
+
def create_mask_holes(self, ignore_last:int = 1) -> "WolfArray":
|
10031
|
+
""" Select holes in the array and create a new aray """
|
10032
|
+
|
10033
|
+
labels, numfeatures = label(self.array.mask)
|
10034
|
+
|
10035
|
+
# count cells in holes
|
10036
|
+
nb_cells = np.bincount(labels.ravel())
|
10037
|
+
|
10038
|
+
# sort by number of cells
|
10039
|
+
idx = np.argsort(nb_cells)
|
10040
|
+
|
10041
|
+
for i in range(ignore_last):
|
10042
|
+
labels[labels == idx[-1-i]] = 0
|
10043
|
+
|
10044
|
+
newarray = WolfArray(mold=self)
|
10045
|
+
# newarray.allocate_ressources()
|
10046
|
+
newarray.array.data[:,:] = labels
|
10047
|
+
newarray.array.mask[:,:] = ~labels.astype(bool)
|
10048
|
+
newarray.set_nullvalue_in_mask()
|
10049
|
+
|
10050
|
+
return newarray
|
10051
|
+
|
10052
|
+
def _create_building_holes_dem_dtm(self, dem:"WolfArray", dtm:"WolfArray", ignore_last:int = 1) -> "WolfArray":
|
10053
|
+
""" Select holes in the array and create a new aray """
|
10054
|
+
|
10055
|
+
buildings = dem - dtm
|
10056
|
+
buildings.array[buildings.array < 0.] = 0.
|
10057
|
+
buildings.array[buildings.array > 0.] = dtm.array[buildings.array > 0.]
|
10058
|
+
buildings.array[buildings.array == 0.] = dem.array.max() + 1.
|
10059
|
+
|
10060
|
+
return buildings
|
10061
|
+
|
9850
10062
|
class WolfArrayMB(WolfArray):
|
9851
10063
|
"""
|
9852
10064
|
Matrice multiblocks
|
@@ -5,9 +5,9 @@ wolfhece/GraphProfile.py,sha256=OCgJo0YFFBI6H1z-5egJsOOoWF_iziiza0-bbPejNMc,6965
|
|
5
5
|
wolfhece/Lidar2002.py,sha256=bX-nIzdpjD7rOfEgJpTeaW6rIdAXwDp_z4YTM9CgANY,6068
|
6
6
|
wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
|
7
7
|
wolfhece/Model1D.py,sha256=SI4oNF_J3MdjiWZoizS8kuRXLMVyymX9dYfYJNVCQVI,476989
|
8
|
-
wolfhece/PyConfig.py,sha256=
|
8
|
+
wolfhece/PyConfig.py,sha256=Y0wtSIFpAMYa7IByh7hbW-WEOVjNsQEduq7vhIYdZQw,16716
|
9
9
|
wolfhece/PyCrosssections.py,sha256=igU_ELrg5VrHU6RNbF5tHxPyVImpR3xdpfopJYc7haw,114711
|
10
|
-
wolfhece/PyDraw.py,sha256=
|
10
|
+
wolfhece/PyDraw.py,sha256=hh_iBS9lNtJrNNwrLcL7mgFIvfzVFEt2XP7ekaFNU04,597283
|
11
11
|
wolfhece/PyGui.py,sha256=5ANCUmsBwsx_h-GWqV9xwnSQyGJ16mSObOm-h3_7LIQ,144708
|
12
12
|
wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
|
13
13
|
wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
|
@@ -16,7 +16,7 @@ wolfhece/PyParams.py,sha256=u_yGvrUqgLLkytZ7lGCIFi-7rQC0H2vRDw-MtmdvKPQ,99394
|
|
16
16
|
wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
|
17
17
|
wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
|
18
18
|
wolfhece/PyVertex.py,sha256=qFf8UPvkbwumRRfjpBcgZmqpHtcEtIEoUh30rWFF-lQ,45205
|
19
|
-
wolfhece/PyVertexvectors.py,sha256
|
19
|
+
wolfhece/PyVertexvectors.py,sha256=-12nKF7OZxMbwzilr0thhZiCsq0xjgn2MfkVe2gXq0M,307022
|
20
20
|
wolfhece/PyWMS.py,sha256=WmOzHP02wVcB5RGJAlENL_NzF9rYfvLxslRFyxaEt1Q,6615
|
21
21
|
wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
|
22
22
|
wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
|
@@ -29,6 +29,7 @@ wolfhece/analyze_vect.py,sha256=3lkMwaQ4KRddBVRvlP9PcM66wZwwC0eCmypP91AW-os,6015
|
|
29
29
|
wolfhece/cli.py,sha256=U8D7e_OezfrRfgMsa4TyQ7rI4voLKSY3RK-c8fb6rrw,3156
|
30
30
|
wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
|
31
31
|
wolfhece/drawing_obj.py,sha256=7vY04B6r08nurTTFmBXHyR5tVIF1YzAEw_uz4pqTDIw,4233
|
32
|
+
wolfhece/eikonal.py,sha256=5UuCtzcLb3oIhBzuTYxQ6z2qo8iL8xMG1m2J-r-PukI,22891
|
32
33
|
wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
|
33
34
|
wolfhece/friction_law.py,sha256=MtZJLo-pTj3-Fw-w12z1LSgSIDrH-JGR0iD9wer_fpQ,5498
|
34
35
|
wolfhece/gpuview.py,sha256=Jql8pLZ0PpvZ_ScT-U4jsXANZ9j4-m_RWhsLA2HISuQ,24544
|
@@ -52,7 +53,7 @@ wolfhece/pywalous.py,sha256=mWB7UxlYMIbPxNUDlONQEjcOOy9VSaRU9aYWZ5IFLu8,19164
|
|
52
53
|
wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
|
53
54
|
wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
|
54
55
|
wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
|
55
|
-
wolfhece/wolf_array.py,sha256=
|
56
|
+
wolfhece/wolf_array.py,sha256=_Bim7x1c9kg9MBVuabCCYfq2azduJ3DNeYt5iaJRnGQ,449995
|
56
57
|
wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
|
57
58
|
wolfhece/wolf_texture.py,sha256=ecoXXmmcLuyG1oPqU2dB_k03qMTCLTVQoSq1xi1EalU,17359
|
58
59
|
wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
|
@@ -80,7 +81,7 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
|
|
80
81
|
wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
|
81
82
|
wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
|
82
83
|
wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
|
83
|
-
wolfhece/apps/version.py,sha256=
|
84
|
+
wolfhece/apps/version.py,sha256=TteRO85B5WMJKYbXiSKkK2SnPGY1celHFBzcAcXnb-A,389
|
84
85
|
wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
|
85
86
|
wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
|
86
87
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -154,7 +155,7 @@ wolfhece/lagrangian/particles.py,sha256=S52_-3rzgVhift6l4Gznvsf_RTggzvNaD1dPvQUr
|
|
154
155
|
wolfhece/lagrangian/velocity_field.py,sha256=oGVjNm98gEpawreFIrC1lDyC5bEhkk2CsyYAlF1Kq50,10574
|
155
156
|
wolfhece/lazviewer/__init__.py,sha256=lz60EpQOBZ-zjvYzff6Y11jzAmC7mjOaxRYAfoqizQs,473
|
156
157
|
wolfhece/lazviewer/_add_path.py,sha256=XgMEXRhFhx9-B1hUsP7Zr199zNljYwT5dGMYSB9jRa4,639
|
157
|
-
wolfhece/lazviewer/laz_viewer.py,sha256=
|
158
|
+
wolfhece/lazviewer/laz_viewer.py,sha256=IZpNW-rvzn6__YOvhPCJmObQEJsOqgDobUwrX82lmlk,81614
|
158
159
|
wolfhece/lazviewer/libs/Qt5Core.dll,sha256=sTJ_ctYFY9KHMNytF-lzH_078zIvnKTjN-71FDkOWPw,4924928
|
159
160
|
wolfhece/lazviewer/libs/Qt5Gui.dll,sha256=07BeaOeYByraGkKYeDiSDYLawHM8tyd55pVJlKbZ4Y0,5436416
|
160
161
|
wolfhece/lazviewer/libs/Qt5Network.dll,sha256=U-9FiLE9LUKru8r8EQxTnwwlMpwS8JzUtenhkKTCox0,1038336
|
@@ -272,7 +273,7 @@ wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,
|
|
272
273
|
wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
|
273
274
|
wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
274
275
|
wolfhece/scenario/check_scenario.py,sha256=d-LWa_FxmPxTSc_H1lDHwqLB6TCqj1IUrRJhatfPMMA,5623
|
275
|
-
wolfhece/scenario/config_manager.py,sha256=
|
276
|
+
wolfhece/scenario/config_manager.py,sha256=uJvMry-ApxSDnrlDANkF_8a67VH5tOCbRIQQCtPu9SI,113836
|
276
277
|
wolfhece/scenario/imposebc_void.py,sha256=PqA_99hKcaqK5zsK6IRIc5Exgg3WVpgWU8xpwNL49zQ,5571
|
277
278
|
wolfhece/scenario/update_void.py,sha256=Yb7TMIUx9Gzm9_6qRMJnF39Uqi17dIkMmscSXo2WaTs,10033
|
278
279
|
wolfhece/shaders/fragment_shader_texture.glsl,sha256=w6h8d5mJqFaGbao0LGmjRcFFdcEQ3ICIl9JpuT71K5k,177
|
@@ -299,8 +300,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
|
|
299
300
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
|
300
301
|
wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
301
302
|
wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
|
302
|
-
wolfhece-2.1.
|
303
|
-
wolfhece-2.1.
|
304
|
-
wolfhece-2.1.
|
305
|
-
wolfhece-2.1.
|
306
|
-
wolfhece-2.1.
|
303
|
+
wolfhece-2.1.127.dist-info/METADATA,sha256=-Jot_0JOTpm62mVxzR7ly0uucGGknPoR5CfbEF1DfOQ,2587
|
304
|
+
wolfhece-2.1.127.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
305
|
+
wolfhece-2.1.127.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
|
306
|
+
wolfhece-2.1.127.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
307
|
+
wolfhece-2.1.127.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|