wolfhece 2.1.126__py3-none-any.whl → 2.1.128__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.
@@ -24,6 +24,9 @@ import logging
24
24
  from tqdm import tqdm
25
25
  from datetime import datetime as dt, timedelta
26
26
 
27
+ from shapely import contains, contains_xy, prepare, destroy_prepared, is_prepared
28
+ from shapely.geometry import Point, Polygon
29
+
27
30
  try:
28
31
  from OpenGL.GL import *
29
32
  except:
@@ -3401,7 +3404,7 @@ class Wolfresults_2D(Element_To_Draw):
3401
3404
 
3402
3405
  return self.head_blocks[getkeyblock(which_block,False)]
3403
3406
 
3404
- def get_xy_infootprint_vect(self, myvect: vector, which_block=1) -> tuple[np.ndarray,np.ndarray]:
3407
+ def get_xy_infootprint_vect(self, myvect: vector | Polygon, which_block=1) -> tuple[np.ndarray,np.ndarray]:
3405
3408
 
3406
3409
  """
3407
3410
  :return numpy array content les coordonnées (x,y) des mailles dans l'empreinte du vecteur
@@ -3417,19 +3420,27 @@ class Wolfresults_2D(Element_To_Draw):
3417
3420
 
3418
3421
  return mypts,myptsij
3419
3422
 
3420
- def get_ij_infootprint_vect(self, myvect: vector, which_block=1) -> np.ndarray:
3423
+ def get_ij_infootprint_vect(self, myvect: vector | Polygon, which_block=1) -> np.ndarray:
3421
3424
 
3422
3425
  """
3423
3426
  Returns:
3424
3427
  numpy array content les indices ij des mailles dans l'empreinte du vecteur
3425
3428
  """
3426
3429
 
3430
+ if isinstance(myvect, Polygon):
3431
+ xmin, ymin, xmax, ymax = myvect.bounds
3432
+ elif isinstance(myvect, vector):
3433
+ xmin, ymin, xmax, ymax = myvect.xmin, myvect.ymin, myvect.xmax, myvect.ymax
3434
+ else:
3435
+ logging.error(_('The object must be a vector or a Polygon'))
3436
+ return np.array([])
3437
+
3427
3438
  lochead = self.get_header_block(which_block)
3428
3439
  nbx = lochead.nbx
3429
3440
  nby = lochead.nby
3430
3441
 
3431
- i1, j1 = self.get_ij_from_xy(myvect.xmin, myvect.ymin, which_block)
3432
- i2, j2 = self.get_ij_from_xy(myvect.xmax, myvect.ymax, which_block)
3442
+ i1, j1 = self.get_ij_from_xy(xmin, ymin, which_block)
3443
+ i2, j2 = self.get_ij_from_xy(xmax, ymax, which_block)
3433
3444
  i1 = max(i1,0)
3434
3445
  j1 = max(j1,0)
3435
3446
  i2 = min(i2,nbx-1)
@@ -3439,17 +3450,39 @@ class Wolfresults_2D(Element_To_Draw):
3439
3450
 
3440
3451
  return mypts
3441
3452
 
3442
- def get_xy_inside_polygon(self, myvect: vector, usemask=True):
3453
+ def get_xy_inside_polygon(self, myvect: vector | Polygon,
3454
+ usemask:bool=True, method:Literal['mpl','shapely']='shapely'):
3443
3455
  """
3444
3456
  Obtention des coordonnées contenues dans un polygone
3445
- usemask = restreint les éléments aux éléments non masqués de la matrice
3457
+
3458
+ :param myvect: polygone
3459
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3460
+ :param method: méthode de calcul ('mpl' == Matplotlib ou 'shapely')
3446
3461
  """
3447
3462
 
3448
- myvect.find_minmax()
3463
+ if method=='mpl':
3464
+ return self.get_xy_inside_polygon_mpl(myvect, usemask)
3465
+ elif method=='shapely':
3466
+ return self.get_xy_inside_polygon_shapely(myvect, usemask)
3467
+
3468
+
3469
+ def get_xy_inside_polygon_mpl(self, myvect: vector | Polygon, usemask:bool=True):
3470
+ """
3471
+ Obtention des coordonnées contenues dans un polygone
3472
+
3473
+ :param myvect: polygone
3474
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3475
+ """
3476
+
3477
+ if isinstance(myvect, vector):
3478
+ # force la mise à jour des min/max
3479
+ myvect.find_minmax()
3480
+ myvert = myvect.asnparray()
3481
+ elif isinstance(myvect, Polygon):
3482
+ myvert = myvect.exterior.coords
3449
3483
 
3450
3484
  mypointsxy={}
3451
3485
 
3452
- myvert = myvect.asnparray()
3453
3486
  path = mpltPath.Path(myvert)
3454
3487
 
3455
3488
  for curblock in range(self.nb_blocks):
@@ -3467,6 +3500,56 @@ class Wolfresults_2D(Element_To_Draw):
3467
3500
 
3468
3501
  return mypointsxy
3469
3502
 
3503
+ def get_xy_inside_polygon_shapely(self, myvect: vector | Polygon,
3504
+ usemask:bool=True, strictly:bool=False):
3505
+ """
3506
+ Obtention des coordonnées contenues dans un polygone
3507
+
3508
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3509
+ :param strictly: si True, les points sur le bord du polygone ne sont pas considérés comme à l'intérieur
3510
+ """
3511
+
3512
+ if isinstance(myvect, vector):
3513
+ # force la mise à jour des min/max
3514
+ myvect.find_minmax()
3515
+ polygon = myvect.polygon
3516
+ elif isinstance(myvect, Polygon):
3517
+ polygon = myvect
3518
+
3519
+ mypointsxy={}
3520
+
3521
+ if not is_prepared(polygon):
3522
+ prepare(polygon) # Prepare the polygon for **faster** contains check -- VERY IMPORTANT
3523
+ to_destroy = True
3524
+ else:
3525
+ to_destroy = False
3526
+
3527
+ for curblock in range(self.nb_blocks):
3528
+ locpointsxy,locpointsij = self.get_xy_infootprint_vect(myvect,curblock+1)
3529
+
3530
+ if strictly:
3531
+ inside = contains_xy(polygon, mypointsxy[:,0], mypointsxy[:,1])
3532
+ else:
3533
+ points= np.array([Point(x,y) for x,y in mypointsxy])
3534
+ boundary = polygon.boundary
3535
+ inside = contains(polygon, points)
3536
+ on_border = list(map(lambda point: boundary.contains(point), points))
3537
+ inside = np.logical_or(inside, on_border)
3538
+
3539
+ if usemask and len(locpointsxy)>0:
3540
+ locpointsij = locpointsij[np.where(inside)]
3541
+ mymask = np.logical_not(self.myblocks[getkeyblock(curblock)].current.array.mask[locpointsij[:, 0], locpointsij[:, 1]])
3542
+ locpointsxy = locpointsxy[np.where(mymask)]
3543
+
3544
+ locpointsxy = locpointsxy[np.where(inside)]
3545
+ mypointsxy[getkeyblock(curblock)]=locpointsxy
3546
+
3547
+ if to_destroy:
3548
+ destroy_prepared(polygon) # Release the prepared polygon
3549
+
3550
+ return mypointsxy
3551
+
3552
+
3470
3553
  def get_xy_under_polyline(self, myvect: vector) -> dict[str, (int,int)]:
3471
3554
  """
3472
3555
  Obtention des coordonnées (x,y) sous une polyligne avec séparation des points par bloc
@@ -3487,7 +3570,9 @@ class Wolfresults_2D(Element_To_Draw):
3487
3570
 
3488
3571
  return mypoints
3489
3572
 
3490
- def get_values_insidepoly(self, myvect:vector, usemask:bool=True, agglo:bool=True, getxy:bool=False):
3573
+ def get_values_insidepoly(self, myvect:vector | Polygon,
3574
+ usemask:bool=True, agglo:bool=True, getxy:bool=False,
3575
+ method:Literal['mpl','shapely']='mpl'):
3491
3576
  """
3492
3577
  Retourne les valeurs des mailles contenues dans un polygone
3493
3578
  Traite la matrice courante et l'altitude de fond si on est en vue 'views_2D.WATERLEVEL'
@@ -3502,7 +3587,7 @@ class Wolfresults_2D(Element_To_Draw):
3502
3587
  """
3503
3588
  myvalues={}
3504
3589
  myvaluesel={}
3505
- mypoints = self.get_xy_inside_polygon(myvect, usemask)
3590
+ mypoints = self.get_xy_inside_polygon(myvect, usemask, method=method)
3506
3591
 
3507
3592
  for curblock in range(self.nb_blocks):
3508
3593
  curkey = getkeyblock(curblock)
@@ -3535,7 +3620,9 @@ class Wolfresults_2D(Element_To_Draw):
3535
3620
  else:
3536
3621
  return myvalues,None
3537
3622
 
3538
- def get_all_values_insidepoly(self, myvect:vector, usemask:bool= True, agglo:bool= True, getxy:bool= False):
3623
+ def get_all_values_insidepoly(self, myvect:vector, usemask:bool= True,
3624
+ agglo:bool= True, getxy:bool= False,
3625
+ method:Literal['mpl','shapely']='mpl'):
3539
3626
  """
3540
3627
  Récupération de toutes les valeurs dans un polygone
3541
3628
 
@@ -3548,7 +3635,7 @@ class Wolfresults_2D(Element_To_Draw):
3548
3635
  """
3549
3636
 
3550
3637
  myvalues={}
3551
- mypoints = self.get_xy_inside_polygon(myvect, usemask)
3638
+ mypoints = self.get_xy_inside_polygon(myvect, usemask, method=method)
3552
3639
 
3553
3640
  for curblock in range(self.nb_blocks):
3554
3641
  if len(mypoints[getkeyblock(curblock)])>0:
@@ -4876,6 +4963,7 @@ class Wolfresults_2D(Element_To_Draw):
4876
4963
  :param start: start time step - 0-based
4877
4964
  :param end: end time step - 0-based
4878
4965
  :param every: step interval
4966
+ :param callback: optional callback to update progress
4879
4967
 
4880
4968
  :return : tuple of WolfArray or WolfArrayMB - H, U_norm, Q_norm, Z, Head
4881
4969
  """
@@ -5296,4 +5384,107 @@ class Wolfresults_2D(Element_To_Draw):
5296
5384
  band.WriteArray(arr.array.transpose())
5297
5385
  band.FlushCache()
5298
5386
  band.ComputeStatistics(True)
5299
- out_ds = None
5387
+ out_ds = None
5388
+
5389
+ def get_time_averaged_results(self, start:int=0, end:int=-1, every:int=1, time_averaging:bool=True, callback=None) -> Union[tuple[WolfArray, WolfArray, WolfArray], tuple[WolfArrayMB, WolfArrayMB, WolfArrayMB]]:
5390
+ """
5391
+ Get time averaged results (or simply, average over all saved indicies)
5392
+
5393
+ :param start: start time step - 0-based
5394
+ :param end: end time step - 0-based
5395
+ :param every: step interval
5396
+ :param time_averaging: True -> Time-averaging, False -> Average over all saved indicies
5397
+ :param callback: optional callback to update progress
5398
+
5399
+ :return : WolfArray - h, qx, qy
5400
+ """
5401
+
5402
+ number_of_time_steps = self.get_nbresults()
5403
+ if end ==-1:
5404
+ end = number_of_time_steps
5405
+
5406
+ assert start>=0, 'Start index must be greater or equal to 0'
5407
+ assert end>0, 'End index must be greater than 0 (or -1 to use all time steps)'
5408
+ assert every>0, 'Step interval must be greater than 0'
5409
+ assert start<end, 'Start index must be less than end index'
5410
+
5411
+ if (end-start)%every != 0:
5412
+ logging.warning('The difference between start and end indices is not a multiple of the step interval. The last time step will not be included in the averaging.')
5413
+
5414
+ if time_averaging:
5415
+ deltaTot = self.times[end-1] - self.times[start]
5416
+ else:
5417
+ deltaTot = (end - start)//every
5418
+
5419
+ # Initialise time-averaged matrices based on results type
5420
+ # If only one block --> WolfArray
5421
+ # If only multiple blocks --> WolfArrayMB
5422
+ h_avg = self.as_WolfArray(copyarray=True)
5423
+ qx_avg = self.as_WolfArray(copyarray=True)
5424
+ qy_avg = self.as_WolfArray(copyarray=True)
5425
+
5426
+ averaged = [h_avg, qx_avg, qy_avg]
5427
+
5428
+ for curavg in averaged:
5429
+ curavg.nullvalue = 0.
5430
+ curavg.reset()
5431
+ curavg.mask_reset()
5432
+
5433
+ for time_step in tqdm(range(start, end, every)):
5434
+
5435
+ if callback is not None:
5436
+ callback(time_step, "Step {} / {}".format(time_step+1, end))
5437
+
5438
+ self.read_oneresult(time_step+1)
5439
+
5440
+ if time_averaging:
5441
+ # Weight for time averaging. At the last time step, the weight is the same as the previous one.
5442
+ if time_step<end-every:
5443
+ delta = self.times[time_step+every] - self.times[time_step]
5444
+ else:
5445
+ delta = 1
5446
+
5447
+ if self.nb_blocks>1:
5448
+ for curblock in self.myblocks.keys():
5449
+
5450
+ # Get WolfArray
5451
+ wd = self.get_h_for_block(curblock)
5452
+ qx = self.get_qx_for_block(curblock)
5453
+ qy = self.get_qy_for_block(curblock)
5454
+
5455
+ # Add the values to the corresponding block in the time-averaged matrix
5456
+ h_avg[curblock].array += wd.array * delta
5457
+ qx_avg[curblock].array += qx.array * delta
5458
+ qy_avg[curblock].array += qy.array * delta
5459
+
5460
+ else:
5461
+ curblock = getkeyblock(0)
5462
+
5463
+ # Get WolfArray
5464
+ wd = self.get_h_for_block(curblock)
5465
+ qx = self.get_qx_for_block(curblock)
5466
+ qy = self.get_qy_for_block(curblock)
5467
+
5468
+ # Add the values to the corresponding block in the time-averaged matrix
5469
+ h_avg[curblock].array += wd.array * delta
5470
+ qx_avg[curblock].array += qx.array * delta
5471
+ qy_avg[curblock].array += qy.array * delta
5472
+
5473
+ # Calculate the average
5474
+ for curavg in averaged:
5475
+ if self.nb_blocks>1:
5476
+ for i in range(self.nb_blocks):
5477
+ curavg[i].array /= deltaTot
5478
+ else:
5479
+ curblock = getkeyblock(0)
5480
+ curavg[curblock].array /= deltaTot
5481
+
5482
+ if self.nb_blocks>1:
5483
+ for i in range(self.nb_blocks):
5484
+ qx_avg[i].array.mask[:,:] = h_avg[i].array.mask[:,:]
5485
+ qy_avg[i].array.mask[:,:] = h_avg[i].array.mask[:,:]
5486
+ else:
5487
+ qx_avg.array.mask[:,:] = h_avg.array.mask[:,:]
5488
+ qy_avg.array.mask[:,:] = h_avg.array.mask[:,:]
5489
+
5490
+ return h_avg, qx_avg, qy_avg
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: wolfhece
3
- Version: 2.1.126
3
+ Version: 2.1.128
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
- License: Copyright (c) 2024 University of Liege. All rights reserved.
6
5
  Project-URL: Homepage, https://uee.uliege.be/hece
7
6
  Project-URL: Issues, https://uee.uliege.be/hece
8
7
  Classifier: Programming Language :: Python :: 3.10
@@ -5,18 +5,18 @@ 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=gyl1MesSJZaVpC1XtvD78PpnE1VD3hGM3HPQXTJ3eJg,12963
8
+ wolfhece/PyConfig.py,sha256=Y0wtSIFpAMYa7IByh7hbW-WEOVjNsQEduq7vhIYdZQw,16716
9
9
  wolfhece/PyCrosssections.py,sha256=igU_ELrg5VrHU6RNbF5tHxPyVImpR3xdpfopJYc7haw,114711
10
- wolfhece/PyDraw.py,sha256=CkNGIgPd5gSokggiJabVME1XzYDVDbBFuyMT_iJB9p0,568998
10
+ wolfhece/PyDraw.py,sha256=igUjT6PZfXW0PpZti-Xo4S2vDnIyFxab-jpVdkmrX9c,600006
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
14
- wolfhece/PyPalette.py,sha256=Ayz0lqOPfUgjPpqvxragBSd7v47Z79roEy7thwVlH7M,32370
15
- wolfhece/PyParams.py,sha256=u_yGvrUqgLLkytZ7lGCIFi-7rQC0H2vRDw-MtmdvKPQ,99394
14
+ wolfhece/PyPalette.py,sha256=cwoiYMQW8SMgtUvQwXhIYKJ2NNhAfiemKE8npIu4eqc,33724
15
+ wolfhece/PyParams.py,sha256=HTVxsJ3_HawBCi_UyCdZAP7u7NbemfYaNwpTW5S6wk0,99386
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=ZSaz6s9H4MmiTHiaZob9yDytgaObU7aoS53oNz5uNTg,305643
19
+ wolfhece/PyVertexvectors.py,sha256=ScepTi9KEwcqx3rrJB-XluIIXCdDv0DfOtZnXojNFN8,323766
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=bIlLBJkE3fYGRwDDO6OV9Zjmi2-O3Z6oTSqTOjfm0VU,23189
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
@@ -37,28 +38,29 @@ wolfhece/import_ascfiles.py,sha256=6Zl8qBR9c6VtyziookQ8YE9KC0GtW_J9WFt5ubyGp-s,4
37
38
  wolfhece/ins.py,sha256=uUeLMS1n3GPnfJhxl0Z2l-UXpmPUgthuwct282OOEzk,36184
38
39
  wolfhece/irm_qdf.py,sha256=DMdDEAYbgYxApObm6w-dZbBmA8ec6PghBLXR2lUEZLc,27457
39
40
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
41
+ wolfhece/lagrange_multiplier.py,sha256=0G-M7b2tGzLx9v0oNYYq4_tLAiHcs_39B4o4W3TUVWM,6567
40
42
  wolfhece/matplotlib_fig.py,sha256=vnFI6sghw9N9jKhR8X1Z4aWli_5fPNylZQtFuujFJDY,84075
41
43
  wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
42
44
  wolfhece/picc.py,sha256=0X_pzhSBoVxgtTfJ37pkOQO3Vbr9yurPaD1nVeurx8k,8531
43
45
  wolfhece/pidcontroller.py,sha256=PHYenOdzfyPK2pXAhyRolCxMSMRd2AFza0eVMafpPHk,5205
44
46
  wolfhece/pyGui1D.py,sha256=9g7OS3YiKsqy--6y0cBD7x2gaqTTYFXWkxImpgnTA20,121937
45
- wolfhece/pybridges.py,sha256=rundKU9sMiPNeBAPg9LqU_L5BW8gwyXwyu7KVVThDiA,65964
47
+ wolfhece/pybridges.py,sha256=bFAqjL4ColeJtwvyCPGQ8VllWoq1RbVWXxFrdfrvqm8,65954
46
48
  wolfhece/pydike.py,sha256=hPBQsmSTW4QAp1wcOzb-TL3L7eet2WT1sJx2q-WNQ-Q,2241
47
49
  wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
48
- wolfhece/pypolygons_scen.py,sha256=vMfAKXKrW6vKR7l9Fl2hEt-jihLwIiMur7qNTNfwRg4,46101
50
+ wolfhece/pypolygons_scen.py,sha256=WubNPQEk4fC--4qIHZK6mJqQnRs4mAWUpmjRL8q33Sw,46069
49
51
  wolfhece/pyshields.py,sha256=6YncgmcA6QvbyIl4jbFRf24uJVjhiSplQKWtZH42lXI,24108
50
52
  wolfhece/pyviews.py,sha256=5Hqqo9MRw1eiomYkmc7QywNu1KmEkytLJG-wH_aG38Y,13748
51
53
  wolfhece/pywalous.py,sha256=mWB7UxlYMIbPxNUDlONQEjcOOy9VSaRU9aYWZ5IFLu8,19164
52
54
  wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
53
55
  wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
54
56
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
55
- wolfhece/wolf_array.py,sha256=WeScyyq1USIOcMt2ew35QbJzk6ZDRXQRrGvwyPu3Tx8,441902
57
+ wolfhece/wolf_array.py,sha256=R8P1xlVFR2D9DG_5TGZcsC_gEwVM_9vmeWfKwQ2aFG0,485301
56
58
  wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
57
59
  wolfhece/wolf_texture.py,sha256=ecoXXmmcLuyG1oPqU2dB_k03qMTCLTVQoSq1xi1EalU,17359
58
60
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
59
61
  wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
60
62
  wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
61
- wolfhece/wolfresults_2D.py,sha256=R5KyM_m6g3h5mOXo3Fci8jfttSO0tS8oPwk1MiaJaZ0,204004
63
+ wolfhece/wolfresults_2D.py,sha256=X8Dsu9FTqKwgnYOQPD95XDLfRzr4a4uFQ9XKGALew5E,212066
62
64
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
63
65
  wolfhece/acceptability/Parallels.py,sha256=njrJFH_tTdQUg2px-QqQR6VdhImP1TEujLhpM3JEKNo,4001
64
66
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
@@ -80,7 +82,7 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
80
82
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
81
83
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
82
84
  wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
83
- wolfhece/apps/version.py,sha256=UIqgv5JPHoD2r7Ney7Go6P3kWMdWMylqgNdriVFXJKo,389
85
+ wolfhece/apps/version.py,sha256=A5vDeIsb8w6E5otXdNRqYbWS9kRMoHW6v4jPU4Jvu8U,389
84
86
  wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
85
87
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
86
88
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -103,7 +105,7 @@ wolfhece/blender/quads.py,sha256=2XwQqm-K2tvekP1qpYOMi2yz7IThU0CZnn0UaTwDJv0,120
103
105
  wolfhece/clientserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
106
  wolfhece/clientserver/clientserver.py,sha256=sNJ8STw0kqUjCB4AerqZNbzCtl5WRe_JRvhe7whNoSE,2798
105
107
  wolfhece/coupling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- wolfhece/coupling/hydrology_2d.py,sha256=0zonCPwOLbC1Zs9koKqueEo4InIq5VWlNIb24rLzfXM,48561
108
+ wolfhece/coupling/hydrology_2d.py,sha256=QBIcgujfOX1xX3ARF2PQz6Uqwu3j6EaRw0QlGjG_H7k,53090
107
109
  wolfhece/eva/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
110
  wolfhece/eva/bootstrap.py,sha256=Ys4xTDIvG_QtxCKWLYzb3_XAZU441jGX7fHIbd9Mvr0,840
109
111
  wolfhece/eva/hydrogramme_mono.py,sha256=uZFIgJJ-JogMFzt7D7OnyVaHvgxCQJPZz9W9FgnuthA,8138
@@ -116,13 +118,13 @@ wolfhece/fonts/helvetica.ttf,sha256=X4Zd3zdUmuRGMLE6UB-BMIbirpdK3Ia5czfNnuSx5P8,
116
118
  wolfhece/fonts/sanserif.ttf,sha256=Nvv5eMgTl5-bWgV37B7E1-vZpAZPNJwjtJSzMNDrl9A,42696
117
119
  wolfhece/ftp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
120
  wolfhece/ftp/downloader.py,sha256=NANzxSzdcp25dFMYin5QA9UnFexNe6-W2AqqTzUE4f4,5223
119
- wolfhece/hydrology/Catchment.py,sha256=uBNzw2Um3_2TZTo2nlMeKmq50IVTf5GPt-SLwRaEOpA,139369
121
+ wolfhece/hydrology/Catchment.py,sha256=eVP8uG_JuulxLVAY5Df3eew6AahCwMPRsmJBgt6JEbg,139148
120
122
  wolfhece/hydrology/Comparison.py,sha256=_2YU9P-AHKnP67sVJWCc6HpnZw9cYBHKjuUGULggICo,84277
121
123
  wolfhece/hydrology/Dumping.py,sha256=SHGYXr30nMOGPSLArMvAzVxGyLywLf4i267166oUHhQ,2403
122
124
  wolfhece/hydrology/Optimisation.py,sha256=GJj0VfG_AVNmyrzyML-FadQg8GAiCh3Mnm9UQMZI-Mg,142538
123
125
  wolfhece/hydrology/Outlet.py,sha256=jdjYN2gIolQJ5prf1wVfxm7cp_YguwQ0JMRsC9ks-Tg,10519
124
126
  wolfhece/hydrology/PostProcessHydrology.py,sha256=3vXOG4FyVBHCQjgIzMz0vQHbP4jKnAO9J-fAarsoU5g,7262
125
- wolfhece/hydrology/PyWatershed.py,sha256=Sloe_shGw0IuEfg18Z3gyy3k3a7N-CJSYhHKtbewdDE,98246
127
+ wolfhece/hydrology/PyWatershed.py,sha256=a26M6tVe4hrQ-a8FyAx7H9-RZcVCU5BBzFff4_YT0UU,97665
126
128
  wolfhece/hydrology/RetentionBasin.py,sha256=l73gofdFSdQcGHMM7fkM7e8b9wzd-MnNmVeJDsX21c4,82923
127
129
  wolfhece/hydrology/SubBasin.py,sha256=w7xp4lpu5gVX6E873PNtn5zSkGRw2FAJB6-pK3pntfs,171477
128
130
  wolfhece/hydrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -154,7 +156,7 @@ wolfhece/lagrangian/particles.py,sha256=S52_-3rzgVhift6l4Gznvsf_RTggzvNaD1dPvQUr
154
156
  wolfhece/lagrangian/velocity_field.py,sha256=oGVjNm98gEpawreFIrC1lDyC5bEhkk2CsyYAlF1Kq50,10574
155
157
  wolfhece/lazviewer/__init__.py,sha256=lz60EpQOBZ-zjvYzff6Y11jzAmC7mjOaxRYAfoqizQs,473
156
158
  wolfhece/lazviewer/_add_path.py,sha256=XgMEXRhFhx9-B1hUsP7Zr199zNljYwT5dGMYSB9jRa4,639
157
- wolfhece/lazviewer/laz_viewer.py,sha256=vq3IrGNnGPuBzIe4fg4mxjhWdGiBHu95Smvst5sdUmE,80822
159
+ wolfhece/lazviewer/laz_viewer.py,sha256=IZpNW-rvzn6__YOvhPCJmObQEJsOqgDobUwrX82lmlk,81614
158
160
  wolfhece/lazviewer/libs/Qt5Core.dll,sha256=sTJ_ctYFY9KHMNytF-lzH_078zIvnKTjN-71FDkOWPw,4924928
159
161
  wolfhece/lazviewer/libs/Qt5Gui.dll,sha256=07BeaOeYByraGkKYeDiSDYLawHM8tyd55pVJlKbZ4Y0,5436416
160
162
  wolfhece/lazviewer/libs/Qt5Network.dll,sha256=U-9FiLE9LUKru8r8EQxTnwwlMpwS8JzUtenhkKTCox0,1038336
@@ -223,7 +225,7 @@ wolfhece/mar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
225
  wolfhece/mar/commontools.py,sha256=SiSxpv5BFYEBCEydsE4ZmBuot3KTy0UYMx2aa-4fbuQ,52549
224
226
  wolfhece/mar/interface_MAR_WOLF.py,sha256=MWeXaHLDT4Eo9jZOAvz013lmpgGYT1v9VUYGAgBgSRU,21454
225
227
  wolfhece/math_parser/__init__.py,sha256=Mi7YTrlJtcflyrRdZHHgE-uNPUFfOWmsf8FsOwKBRPI,27961
226
- wolfhece/math_parser/calculator.py,sha256=e9KVemvVqYofWYEwu_wgMhu4EhmcL6dY790DOwDdxTs,7448
228
+ wolfhece/math_parser/calculator.py,sha256=Avyx-ikIwsficqd-Q4erX6U0zGQ3cAWfADyq6_uHpB0,7493
227
229
  wolfhece/mesh2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
230
  wolfhece/mesh2d/bc_manager.py,sha256=fKED0RhUjCmd0xd0lcOeZqiga5Glqs1ag1boYhXlq0k,54232
229
231
  wolfhece/mesh2d/cell_tracker.py,sha256=mPmnD5lEf3gLPuLqtAIo-Gp-ipAwQdPxzjWOGt0b7jM,8958
@@ -272,7 +274,7 @@ wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,
272
274
  wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
273
275
  wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
276
  wolfhece/scenario/check_scenario.py,sha256=d-LWa_FxmPxTSc_H1lDHwqLB6TCqj1IUrRJhatfPMMA,5623
275
- wolfhece/scenario/config_manager.py,sha256=HlMjAbyK9im0UrvVQIxc_MS7bakqO4OSV1c7JZrL5uk,113847
277
+ wolfhece/scenario/config_manager.py,sha256=uJvMry-ApxSDnrlDANkF_8a67VH5tOCbRIQQCtPu9SI,113836
276
278
  wolfhece/scenario/imposebc_void.py,sha256=PqA_99hKcaqK5zsK6IRIc5Exgg3WVpgWU8xpwNL49zQ,5571
277
279
  wolfhece/scenario/update_void.py,sha256=Yb7TMIUx9Gzm9_6qRMJnF39Uqi17dIkMmscSXo2WaTs,10033
278
280
  wolfhece/shaders/fragment_shader_texture.glsl,sha256=w6h8d5mJqFaGbao0LGmjRcFFdcEQ3ICIl9JpuT71K5k,177
@@ -299,8 +301,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
299
301
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
300
302
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
303
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
302
- wolfhece-2.1.126.dist-info/METADATA,sha256=hmEqfYiCm4H8SOEmJe1qoJbjBXFa1FTHc4xHjG7i9C8,2587
303
- wolfhece-2.1.126.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
304
- wolfhece-2.1.126.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
305
- wolfhece-2.1.126.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
306
- wolfhece-2.1.126.dist-info/RECORD,,
304
+ wolfhece-2.1.128.dist-info/METADATA,sha256=Z8SexVjG-o12r8I7FEqEPvmGXYuzF_kUYyh-17t16w4,2516
305
+ wolfhece-2.1.128.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
306
+ wolfhece-2.1.128.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
307
+ wolfhece-2.1.128.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
308
+ wolfhece-2.1.128.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5