wolfhece 2.1.90__py3-none-any.whl → 2.1.92__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/PyDraw.py +9 -0
- wolfhece/apps/version.py +1 -1
- wolfhece/pyshields.py +35 -6
- wolfhece/rem/REMMaker.py +10 -2
- wolfhece/wolf_array.py +98 -0
- wolfhece/wolfresults_2D.py +36 -1
- {wolfhece-2.1.90.dist-info → wolfhece-2.1.92.dist-info}/METADATA +1 -2
- {wolfhece-2.1.90.dist-info → wolfhece-2.1.92.dist-info}/RECORD +11 -11
- {wolfhece-2.1.90.dist-info → wolfhece-2.1.92.dist-info}/WHEEL +0 -0
- {wolfhece-2.1.90.dist-info → wolfhece-2.1.92.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.90.dist-info → wolfhece-2.1.92.dist-info}/top_level.txt +0 -0
wolfhece/PyDraw.py
CHANGED
@@ -7441,6 +7441,13 @@ class WolfMapViewer(wx.Frame):
|
|
7441
7441
|
if bc is not None:
|
7442
7442
|
bc.Show()
|
7443
7443
|
|
7444
|
+
elif text == _('Contours'):
|
7445
|
+
if isinstance(self.selected_object, WolfArray):
|
7446
|
+
cont = self.selected_object.contour()
|
7447
|
+
cont.prep_listogl()
|
7448
|
+
self.add_object('vector', newobj= cont, id= cont.idx)
|
7449
|
+
self.Paint()
|
7450
|
+
|
7444
7451
|
elif _('Convert to mono-block') in text:
|
7445
7452
|
|
7446
7453
|
if isinstance(self.selected_object, WolfArrayMB):
|
@@ -9611,6 +9618,7 @@ class WolfMapViewer(wx.Frame):
|
|
9611
9618
|
|
9612
9619
|
# Chaînes à supprimer
|
9613
9620
|
tracks=[]
|
9621
|
+
tracks.append(_('Contours'))
|
9614
9622
|
tracks.append(_('Boundary conditions'))
|
9615
9623
|
tracks.append(_('Convert to mono-block'))
|
9616
9624
|
tracks.append(_('Convert to mono-block (result)'))
|
@@ -9641,6 +9649,7 @@ class WolfMapViewer(wx.Frame):
|
|
9641
9649
|
bc = self.get_boundary_manager(self.selected_object)
|
9642
9650
|
if bc is not None:
|
9643
9651
|
self.popupmenu.Append(wx.ID_ANY, _('Boundary conditions'), _('Boundary conditions'))
|
9652
|
+
self.popupmenu.Append(wx.ID_ANY, _('Contours'))
|
9644
9653
|
|
9645
9654
|
# Add specific menu items for WolfArrayMB
|
9646
9655
|
if isinstance(self.selected_object, WolfArrayMB):
|
wolfhece/apps/version.py
CHANGED
wolfhece/pyshields.py
CHANGED
@@ -278,7 +278,7 @@ def get_Rouse(d:float, q:float, h:float, K:float, rhom:float=2650., rho:float=RH
|
|
278
278
|
"""
|
279
279
|
# tau_cr = (q/K)**2 / h**(7/3) * rho * GRAVITY
|
280
280
|
# shear_vel = math.sqrt(tau_cr/rho)
|
281
|
-
shear_vel = q/K / h**(7
|
281
|
+
shear_vel = q/K / h**(7./6.)* math.sqrt(GRAVITY)
|
282
282
|
ws = get_settling_vel(d,rhom,rho)
|
283
283
|
# von Kármán constant
|
284
284
|
k = 0.40
|
@@ -513,6 +513,39 @@ def shieldsdia_dim(figax=None) -> tuple[plt.Figure,plt.Axes]:
|
|
513
513
|
|
514
514
|
return fig,ax
|
515
515
|
|
516
|
+
def get_friction_slope_2D_Manning(q:float, h:float, n:float) -> float:
|
517
|
+
"""
|
518
|
+
Compute friction slope j for 2D flow with Manning/Strickler friction law
|
519
|
+
|
520
|
+
:param q : discharge [m3/s]
|
521
|
+
:param h : water depth [m]
|
522
|
+
:param n : Manning friction coefficient [m-1/3.s]
|
523
|
+
"""
|
524
|
+
|
525
|
+
denom = h**(4./3.)
|
526
|
+
if denom > 0.:
|
527
|
+
j = (q/h * n)**2.0 / denom
|
528
|
+
else:
|
529
|
+
j = 0.
|
530
|
+
|
531
|
+
return j
|
532
|
+
|
533
|
+
def get_shear_velocity_2D_Manning(q:float, h:float, n:float) -> float:
|
534
|
+
"""
|
535
|
+
Compute shear velocity u_* for 2D flow with Manning/Strickler friction law
|
536
|
+
|
537
|
+
:param j : friction slope [-]
|
538
|
+
:param h : water depth [m]
|
539
|
+
:param q : discharge [m3/s]
|
540
|
+
:param n : Manning friction coefficient [m-1/3.s]
|
541
|
+
"""
|
542
|
+
|
543
|
+
j = get_friction_slope_2D_Manning(q,h,n)
|
544
|
+
|
545
|
+
ushear = (h*j*GRAVITY)**0.5
|
546
|
+
|
547
|
+
return ushear
|
548
|
+
|
516
549
|
def get_Shields_2D_Manning(s:float, d:float, q:float, h:float, n:float) -> float:
|
517
550
|
"""
|
518
551
|
Compute Shields dimensionless parameter for 2D flow with Manning/Strickler friction law
|
@@ -528,11 +561,7 @@ def get_Shields_2D_Manning(s:float, d:float, q:float, h:float, n:float) -> float
|
|
528
561
|
# calcul de terme de pente de frottement
|
529
562
|
|
530
563
|
# j = (q/h)**2.0 / K**2. / h**(4./3.)
|
531
|
-
|
532
|
-
if denom > 0.:
|
533
|
-
j = (q/h * n)**2.0 / denom
|
534
|
-
else:
|
535
|
-
j = 0.
|
564
|
+
j = get_friction_slope_2D_Manning(q,h,n)
|
536
565
|
|
537
566
|
shields = j*h / (d*(s-1))
|
538
567
|
|
wolfhece/rem/REMMaker.py
CHANGED
@@ -10,13 +10,13 @@ from osgeo import ogr
|
|
10
10
|
from shapely.geometry import box # for cropping centerlines to extent of DEM
|
11
11
|
import geopandas as gpd
|
12
12
|
from geopandas import clip, read_file
|
13
|
-
import
|
13
|
+
import logging
|
14
|
+
|
14
15
|
import requests
|
15
16
|
from scipy.spatial import KDTree as KDTree # for finding nearest neighbors/interpolating
|
16
17
|
from itertools import combinations
|
17
18
|
import time
|
18
19
|
from .RasterViz import RasterViz
|
19
|
-
import logging
|
20
20
|
|
21
21
|
level = logging.INFO
|
22
22
|
fmt = '[%(levelname)s] %(asctime)s - %(message)s'
|
@@ -281,6 +281,14 @@ class REMMaker(object):
|
|
281
281
|
|
282
282
|
def get_river_centerline(self):
|
283
283
|
"""Find centerline of river(s) within DEM area using OSM Ways"""
|
284
|
+
|
285
|
+
try:
|
286
|
+
import osmnx # for querying OpenStreetMaps data to get river centerlines
|
287
|
+
except ImportError:
|
288
|
+
logging.error("osmnx not installed. Please install osmnx to use this script.")
|
289
|
+
logging.error("Install with: 'pip install osmnx' but beware of dependencies especially Shapely, which may be forced to an older version.")
|
290
|
+
raise ImportError("osmnx not installed. Please install osmnx to use this script.")
|
291
|
+
|
284
292
|
logging.info("Finding river centerline.")
|
285
293
|
# get OSM Ways within bbox of DEM (returns geopandas geodataframe)
|
286
294
|
osmnx.settings.cache_folder = './.osm_cache'
|
wolfhece/wolf_array.py
CHANGED
@@ -1484,6 +1484,8 @@ class Ops_Array(wx.Frame):
|
|
1484
1484
|
|
1485
1485
|
self.myzones.mapviewer = mapviewer
|
1486
1486
|
|
1487
|
+
self._levels = []
|
1488
|
+
|
1487
1489
|
if self.wx_exists:
|
1488
1490
|
self.set_GUI()
|
1489
1491
|
|
@@ -1746,12 +1748,20 @@ class Ops_Array(wx.Frame):
|
|
1746
1748
|
|
1747
1749
|
self.extract_selection = wx.Button(self.tools, wx.ID_ANY, _("Extract selection"), wx.DefaultPosition,wx.DefaultSize, 0)
|
1748
1750
|
|
1751
|
+
cont_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
1752
|
+
self._contour_int = wx.Button(self.tools, wx.ID_ANY, _("Contour"), wx.DefaultPosition, wx.DefaultSize, 0)
|
1753
|
+
self._contour_list = wx.Button(self.tools, wx.ID_ANY, _("Contour specific"), wx.DefaultPosition, wx.DefaultSize, 0)
|
1754
|
+
|
1755
|
+
cont_sizer.Add(self._contour_int, 1, wx.EXPAND)
|
1756
|
+
cont_sizer.Add(self._contour_list, 1, wx.EXPAND)
|
1757
|
+
|
1749
1758
|
Toolssizer.Add(hbox, 0, wx.EXPAND)
|
1750
1759
|
Toolssizer.Add(self.ApplyTools, 1, wx.EXPAND)
|
1751
1760
|
Toolssizer.Add(self.nullborder, 1, wx.EXPAND)
|
1752
1761
|
Toolssizer.Add(self.filter_zone, 1, wx.EXPAND)
|
1753
1762
|
Toolssizer.Add(self.labelling, 1, wx.EXPAND)
|
1754
1763
|
Toolssizer.Add(self.extract_selection, 1, wx.EXPAND)
|
1764
|
+
Toolssizer.Add(cont_sizer, 1, wx.EXPAND)
|
1755
1765
|
|
1756
1766
|
self.ApplyTools.SetToolTip(_("Apply Nullvalue into memory/object"))
|
1757
1767
|
self.nullborder.SetToolTip(_("Set null value on the border of the array\n\nYou will be asked for the width of the border (in cells)"))
|
@@ -2130,6 +2140,8 @@ class Ops_Array(wx.Frame):
|
|
2130
2140
|
self.filter_zone.Bind(wx.EVT_BUTTON, self.OnFilterZone)
|
2131
2141
|
self.labelling.Bind(wx.EVT_BUTTON, self.OnLabelling)
|
2132
2142
|
self.extract_selection.Bind(wx.EVT_BUTTON, self.OnExtractSelection)
|
2143
|
+
self._contour_int.Bind(wx.EVT_BUTTON, self.OnContourInt)
|
2144
|
+
self._contour_list.Bind(wx.EVT_BUTTON, self.OnContourList)
|
2133
2145
|
|
2134
2146
|
self.SelectOp.Bind(wx.EVT_BUTTON, self.OnApplyOpSelect)
|
2135
2147
|
self.palapply.Bind(wx.EVT_BUTTON, self.Onupdatepal)
|
@@ -2586,6 +2598,70 @@ class Ops_Array(wx.Frame):
|
|
2586
2598
|
|
2587
2599
|
self.parentarray.extract_selection()
|
2588
2600
|
|
2601
|
+
def OnContourInt(self, event:wx.MouseEvent):
|
2602
|
+
""" Create contour - number of contours """
|
2603
|
+
|
2604
|
+
with wx.NumberEntryDialog(None, 'Number of contours', 'Number of contours', 'Number of contours', 20, 1, 1000) as dlg:
|
2605
|
+
if dlg.ShowModal() == wx.ID_OK:
|
2606
|
+
nbcontours = dlg.GetValue()
|
2607
|
+
|
2608
|
+
logging.info(_('Baking contour'))
|
2609
|
+
cont = self.parentarray.contour(levels = nbcontours)
|
2610
|
+
logging.info(_('Add contour to viewer'))
|
2611
|
+
cont.prep_listogl()
|
2612
|
+
mapv = self.get_mapviewer()
|
2613
|
+
mapv.add_object('vector', newobj = cont, id = cont.idx)
|
2614
|
+
self.get_mapviewer().Paint()
|
2615
|
+
logging.info(_('Done !'))
|
2616
|
+
|
2617
|
+
def OnContourList(self, event:wx.MouseEvent):
|
2618
|
+
""" Create contour - list of values """
|
2619
|
+
|
2620
|
+
with wx.TextEntryDialog(None, 'List of specific values separated by comma or tuple (min;max;step)',
|
2621
|
+
'List of values', f'{self.parentarray.array.min()}, {self.parentarray.array.max()}') as dlg:
|
2622
|
+
|
2623
|
+
if dlg.ShowModal() == wx.ID_OK:
|
2624
|
+
txt = dlg.GetValue()
|
2625
|
+
|
2626
|
+
self._levels = []
|
2627
|
+
if ',' in txt:
|
2628
|
+
for cur in txt.split(','):
|
2629
|
+
if '(' in cur:
|
2630
|
+
cur = cur.replace('(', '').replace(')', '')
|
2631
|
+
cur = cur.split(';')
|
2632
|
+
if len(cur) == 3:
|
2633
|
+
minval = float(cur[0])
|
2634
|
+
maxval = float(cur[1])
|
2635
|
+
step = float(cur[2])
|
2636
|
+
self._levels.extend(np.arange(minval, maxval, step))
|
2637
|
+
elif '(' in txt:
|
2638
|
+
cur = txt.replace('(', '').replace(')', '')
|
2639
|
+
cur = cur.split(';')
|
2640
|
+
if len(cur) == 3:
|
2641
|
+
minval = float(cur[0])
|
2642
|
+
maxval = float(cur[1])
|
2643
|
+
step = float(cur[2])
|
2644
|
+
self._levels.extend(np.arange(minval, maxval, step))
|
2645
|
+
else:
|
2646
|
+
try:
|
2647
|
+
self._levels = float(txt)
|
2648
|
+
except:
|
2649
|
+
logging.error('Error in chain text to float')
|
2650
|
+
return
|
2651
|
+
|
2652
|
+
if isinstance(self._levels, list):
|
2653
|
+
if len(self._levels) == 0:
|
2654
|
+
logging.error('Nothing to do !')
|
2655
|
+
return
|
2656
|
+
|
2657
|
+
logging.info(_('Baking contour'))
|
2658
|
+
cont = self.parentarray.contour(levels = self._levels)
|
2659
|
+
logging.info(_('Add contour to viewer'))
|
2660
|
+
cont.prep_listogl()
|
2661
|
+
self.get_mapviewer().add_object('vector', newobj = cont, id = cont.idx)
|
2662
|
+
self.get_mapviewer().Paint()
|
2663
|
+
logging.info(_('Done !'))
|
2664
|
+
|
2589
2665
|
def OnApplyOpMath(self, event:wx.MouseEvent):
|
2590
2666
|
""" Apply math operator to the array """
|
2591
2667
|
|
@@ -8978,6 +9054,28 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
8978
9054
|
Array3 = WolfArray(output_raster_path, nullvalue=-9999)
|
8979
9055
|
return Array3
|
8980
9056
|
|
9057
|
+
def contour(self, levels:Union[int, list[float]] = 10) -> Zones:
|
9058
|
+
""" Compute contour lines """
|
9059
|
+
|
9060
|
+
if isinstance(levels, int):
|
9061
|
+
levels = np.linspace(self.array.min(), self.array.max(), levels)
|
9062
|
+
|
9063
|
+
x, y = self.meshgrid()
|
9064
|
+
cs = plt.contour(x, y, self.array, levels=levels)
|
9065
|
+
|
9066
|
+
zones = Zones(idx = self.idx + '_contour', mapviewer = self.get_mapviewer())
|
9067
|
+
for collection, level in zip(cs.collections, cs.levels):
|
9068
|
+
zone_level = zone(name=f'Contour {level}')
|
9069
|
+
for idx, path in enumerate(collection.get_paths()):
|
9070
|
+
vector_level = vector(name=f'Contour {level} - {idx}')
|
9071
|
+
for vertices in path.to_polygons(closed_only=False):
|
9072
|
+
for vertex in vertices:
|
9073
|
+
vector_level.add_vertex(wolfvertex(vertex[0], vertex[1]))
|
9074
|
+
zone_level.add_vector(vector_level, forceparent=True)
|
9075
|
+
zones.add_zone(zone_level, forceparent=True)
|
9076
|
+
|
9077
|
+
return zones
|
9078
|
+
|
8981
9079
|
class WolfArrayMB(WolfArray):
|
8982
9080
|
"""
|
8983
9081
|
Matrice multiblocks
|
wolfhece/wolfresults_2D.py
CHANGED
@@ -35,7 +35,7 @@ from .drawing_obj import Element_To_Draw
|
|
35
35
|
from .PyPalette import wolfpalette
|
36
36
|
from .PyTranslate import _
|
37
37
|
from .gpuview import GRID_N, Rectangle, VectorField
|
38
|
-
from .pyshields import get_d_cr, get_d_cr_susp, izbach_d_cr, get_Shields_2D_Manning
|
38
|
+
from .pyshields import get_d_cr, get_d_cr_susp, izbach_d_cr, get_Shields_2D_Manning, get_friction_slope_2D_Manning, get_shear_velocity_2D_Manning
|
39
39
|
from .pyviews import WolfViews
|
40
40
|
from .mesh2d.wolf2dprev import prev_parameters_simul, blocks_file
|
41
41
|
from .GraphNotebook import PlotPanel
|
@@ -1414,6 +1414,7 @@ class views_2D(Enum):
|
|
1414
1414
|
TURB_VISC_3D = _('Turbulent viscosity 3D')
|
1415
1415
|
VECTOR_FIELD_Q = _('Discharge vector field')
|
1416
1416
|
VECTOR_FIELD_U = _('Velocity vector field')
|
1417
|
+
U_SHEAR = _('Shear velocity [ms-1]')
|
1417
1418
|
SHIELDS_NUMBER = _('Shields number - Manning-Strickler')
|
1418
1419
|
CRITICAL_DIAMETER_SHIELDS = _('Critical grain diameter - Shields')
|
1419
1420
|
CRITICAL_DIAMETER_IZBACH = _('Critical grain diameter - Izbach')
|
@@ -1726,6 +1727,13 @@ class OneWolfResult:
|
|
1726
1727
|
|
1727
1728
|
nullvalue = self.waterdepth.nullvalue
|
1728
1729
|
|
1730
|
+
elif which==views_2D.U_SHEAR:
|
1731
|
+
self.U_Shear = self.get_u_shear()
|
1732
|
+
self._current = self.U_Shear
|
1733
|
+
self._view = WolfViews()
|
1734
|
+
|
1735
|
+
nullvalue = self.waterdepth.nullvalue
|
1736
|
+
|
1729
1737
|
elif which==views_2D.SHIELDS_NUMBER:
|
1730
1738
|
if self.ShieldsNumber is None or self._force_update_shields:
|
1731
1739
|
self.ShieldsNumber = self.get_shieldsnumber()
|
@@ -1891,6 +1899,33 @@ class OneWolfResult:
|
|
1891
1899
|
logging.info(_('End of computing critical diameters'))
|
1892
1900
|
|
1893
1901
|
return diamcrit
|
1902
|
+
|
1903
|
+
def get_u_shear(self) -> WolfArray:
|
1904
|
+
"""
|
1905
|
+
Calcul de la vitesse de cisaillement
|
1906
|
+
"""
|
1907
|
+
|
1908
|
+
def compute() -> WolfArray:
|
1909
|
+
|
1910
|
+
ij = np.argwhere(self.waterdepth.array>0.)
|
1911
|
+
|
1912
|
+
u_shear = WolfArray(mold=self.waterdepth)
|
1913
|
+
qnorm = (self.qx**2.+self.qy**2.)**.5
|
1914
|
+
qnorm.array.mask=self.waterdepth.array.mask
|
1915
|
+
|
1916
|
+
_u_shear = np.asarray([get_shear_velocity_2D_Manning(qnorm.array[i,j],
|
1917
|
+
self.waterdepth.array[i,j],
|
1918
|
+
self.rough_n.array.data[i,j]) for i,j in ij])
|
1919
|
+
|
1920
|
+
u_shear.array[ij[:,0],ij[:,1]] = _u_shear
|
1921
|
+
|
1922
|
+
return u_shear
|
1923
|
+
|
1924
|
+
logging.info(_('Computing shear velocity'))
|
1925
|
+
u_shear = compute()
|
1926
|
+
logging.info(_('End of computing shear velocity'))
|
1927
|
+
|
1928
|
+
return u_shear
|
1894
1929
|
|
1895
1930
|
def get_shieldsnumber(self) -> WolfArray:
|
1896
1931
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: wolfhece
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.92
|
4
4
|
Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
|
5
5
|
License: Copyright (c) 2024 University of Liege. All rights reserved.
|
6
6
|
Project-URL: Homepage, https://uee.uliege.be/hece
|
@@ -51,7 +51,6 @@ Requires-Dist: pygltflib
|
|
51
51
|
Requires-Dist: ezdxf
|
52
52
|
Requires-Dist: pyvista
|
53
53
|
Requires-Dist: tqdm==4.64.*
|
54
|
-
Requires-Dist: osmnx
|
55
54
|
Requires-Dist: tifffile
|
56
55
|
Requires-Dist: numba==0.58.*
|
57
56
|
Requires-Dist: xmltodict
|
@@ -7,7 +7,7 @@ wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
|
|
7
7
|
wolfhece/Model1D.py,sha256=SI4oNF_J3MdjiWZoizS8kuRXLMVyymX9dYfYJNVCQVI,476989
|
8
8
|
wolfhece/PyConfig.py,sha256=UNtl5UzZ399JqjJT67-4DWaIkv76sc1FiEsSDJpXlL0,10458
|
9
9
|
wolfhece/PyCrosssections.py,sha256=FnmM9DWY_SAF2EDH9Gu2PojXNtSTRF4-aYQuAAJXBh4,112771
|
10
|
-
wolfhece/PyDraw.py,sha256
|
10
|
+
wolfhece/PyDraw.py,sha256=-WHY2_slvEwaK2FilmI8oLRcXZGTk2pkBwDt1qd66zY,427847
|
11
11
|
wolfhece/PyGui.py,sha256=HY0beOMSp1JEyq8-vfVynzVrmKxvaO_sJSMwlNqCNrg,105289
|
12
12
|
wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
|
13
13
|
wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
|
@@ -42,19 +42,19 @@ wolfhece/pybridges.py,sha256=xbZPuX40c4EKqws4OKNbUVUBPKIzLTbSdYVyrNf_kIE,57418
|
|
42
42
|
wolfhece/pydike.py,sha256=hPBQsmSTW4QAp1wcOzb-TL3L7eet2WT1sJx2q-WNQ-Q,2241
|
43
43
|
wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
|
44
44
|
wolfhece/pypolygons_scen.py,sha256=C0qxVUsBHWZVkurZV-DI1GMN1J1B-ul93n2fs16UjoI,39718
|
45
|
-
wolfhece/pyshields.py,sha256=
|
45
|
+
wolfhece/pyshields.py,sha256=6YncgmcA6QvbyIl4jbFRf24uJVjhiSplQKWtZH42lXI,24108
|
46
46
|
wolfhece/pyviews.py,sha256=5Hqqo9MRw1eiomYkmc7QywNu1KmEkytLJG-wH_aG38Y,13748
|
47
47
|
wolfhece/pywalous.py,sha256=yRaWJjKckXef1d9D5devP0yFHC9uc6kRV4G5x9PNq9k,18972
|
48
48
|
wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
|
49
49
|
wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
|
50
50
|
wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
|
51
|
-
wolfhece/wolf_array.py,sha256=
|
51
|
+
wolfhece/wolf_array.py,sha256=HasKFOCiFzM55YSXPvpWJ7O4tOoxyTm_LHytE2ZQq8o,406444
|
52
52
|
wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
|
53
53
|
wolfhece/wolf_texture.py,sha256=DS5eobLxrq9ljyebYfpMSQPn8shkUAZZVfqrOKN_QUU,16951
|
54
54
|
wolfhece/wolf_tiles.py,sha256=2Ho2I20rHRY81KXxjgLOYISdF4OkJ2d6omeY4shDoGI,10386
|
55
55
|
wolfhece/wolf_vrt.py,sha256=89XoDhCJMHiwPQUuOduxtTRKuIa8RDxgNqX65S4xp9M,10569
|
56
56
|
wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
|
57
|
-
wolfhece/wolfresults_2D.py,sha256=
|
57
|
+
wolfhece/wolfresults_2D.py,sha256=p0v3FT6CAzf6aP4AEEXNkuHG01c2Eqbio_a8ghJIt7k,169709
|
58
58
|
wolfhece/xyz_file.py,sha256=Se4nCPwYAYLSA5i0zsbnZUKoAMAD0mK1FJea5WSZUkk,5755
|
59
59
|
wolfhece/acceptability/Parallels.py,sha256=h4tu3SpC_hR5Hqa68aruxhtAyhs8u666YuZ40_fR5zg,3979
|
60
60
|
wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
|
@@ -75,7 +75,7 @@ wolfhece/apps/curvedigitizer.py,sha256=Yps4bcayzbsz0AoVc_dkSk35dEhhn_esIBy1Ziefg
|
|
75
75
|
wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
|
76
76
|
wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
|
77
77
|
wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
|
78
|
-
wolfhece/apps/version.py,sha256=
|
78
|
+
wolfhece/apps/version.py,sha256=_TUgNtGFMedLigBPzswBYH6ZQUUs5BrsfxgN7xUDxWI,388
|
79
79
|
wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
|
80
80
|
wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
|
81
81
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -254,7 +254,7 @@ wolfhece/pythonfortran/example_numpy_memory.py,sha256=o3hzJDw7YtE4v0FXI3-l2VzupC
|
|
254
254
|
wolfhece/pythonfortran/tools.py,sha256=oYh9MguRYEGNGKVbHqQW2V9okZJLs3n4Qs-vLWPmBe4,2462
|
255
255
|
wolfhece/radar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
256
256
|
wolfhece/radar/wolfradar.py,sha256=mvsVf6-4KCqVF6kWsKfPuM7KPqRdYHuIZAbb8kzXAZU,10032
|
257
|
-
wolfhece/rem/REMMaker.py,sha256=
|
257
|
+
wolfhece/rem/REMMaker.py,sha256=zkiAo36MmusPhgv1qJmpDgtoTWbh_eJ6qJqtCfeC1M8,31480
|
258
258
|
wolfhece/rem/RasterViz.py,sha256=fnyMfAJZDoS-rjagsNRGLndS-UYNUzMY4DgenjD3Y_4,29068
|
259
259
|
wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
|
260
260
|
wolfhece/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -285,8 +285,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
|
|
285
285
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
|
286
286
|
wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
287
287
|
wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
|
288
|
-
wolfhece-2.1.
|
289
|
-
wolfhece-2.1.
|
290
|
-
wolfhece-2.1.
|
291
|
-
wolfhece-2.1.
|
292
|
-
wolfhece-2.1.
|
288
|
+
wolfhece-2.1.92.dist-info/METADATA,sha256=B4LcZnRdMaSUQCv2aRIMVjVyH07wlmRL60l-8kWXXck,2548
|
289
|
+
wolfhece-2.1.92.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
290
|
+
wolfhece-2.1.92.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
|
291
|
+
wolfhece-2.1.92.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
292
|
+
wolfhece-2.1.92.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|