wolfhece 2.0.4__py3-none-any.whl → 2.0.6__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/GraphNotebook.py +0 -1
- wolfhece/GraphProfile.py +5 -14
- wolfhece/Lidar2002.py +0 -1
- wolfhece/PyCrosssections.py +21 -26
- wolfhece/PyDraw.py +219 -58
- wolfhece/PyGui.py +6 -3
- wolfhece/PyPalette.py +2 -2
- wolfhece/PyParams.py +48 -48
- wolfhece/PyVertex.py +1 -1
- wolfhece/PyVertexvectors.py +40 -4
- wolfhece/Results2DGPU.py +7 -6
- wolfhece/apps/WolfPython.png +0 -0
- wolfhece/bernoulli/NetworkOpenGL.py +1 -1
- wolfhece/cli.py +7 -0
- wolfhece/flow_SPWMI.py +1 -1
- wolfhece/friction_law.py +6 -6
- wolfhece/gpuview.py +1 -1
- wolfhece/hydrology/PyWatershed.py +9 -10
- wolfhece/lagrangian/emitter.py +1 -1
- wolfhece/lagrangian/example_domain.py +1 -1
- wolfhece/lagrangian/velocity_field.py +4 -4
- wolfhece/libs/WolfDll.dll +0 -0
- wolfhece/libs/WolfDll_CD.dll +0 -0
- wolfhece/libs/WolfOGL.c +28187 -28187
- wolfhece/mar/Interface_MAR_WOLF_objet.py +1004 -0
- wolfhece/mar/commontools.py +1289 -59
- wolfhece/mesh2d/bc_manager.py +89 -13
- wolfhece/mesh2d/cst_2D_boundary_conditions.py +12 -0
- wolfhece/mesh2d/wolf2dprev.py +1 -2
- wolfhece/pydike.py +1 -1
- wolfhece/pyshields.py +43 -43
- wolfhece/pywalous.py +2 -2
- wolfhece/scenario/config_manager.py +3 -1
- wolfhece/ui/wolf_multiselection_collapsiblepane.py +10 -10
- wolfhece/wolf_array.py +1298 -418
- wolfhece/wolf_texture.py +1 -1
- wolfhece/wolfresults_2D.py +124 -19
- {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/METADATA +5 -1
- {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/RECORD +42 -39
- {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/WHEEL +0 -0
- {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/top_level.txt +0 -0
wolfhece/mesh2d/bc_manager.py
CHANGED
@@ -61,9 +61,9 @@ class BcManager(wx.Frame):
|
|
61
61
|
|
62
62
|
# bordersX and bordersY will contain
|
63
63
|
#
|
64
|
-
# 'bc' : dict where keys are 'i-j' and containing all BC value and type
|
64
|
+
# 'bc' : dict where keys are 'i-j' (1-based) and containing all BC value and type
|
65
65
|
# 'selected' : numpy array of boolean
|
66
|
-
# 'indices' : border's
|
66
|
+
# 'indices' : border's reference in indices - Numpy array - shape (2,nbx),dtype=np.integer
|
67
67
|
# 'indicesstr' : list with string 'ii-jj'
|
68
68
|
# 'coords' : border's extremities - Numpy array - shape (2,2,nbx/nby),dtype=float
|
69
69
|
# 'coordscg' : border's gravity center - Numpy array - shape (2,nbx/nby),dtype=float
|
@@ -100,22 +100,28 @@ class BcManager(wx.Frame):
|
|
100
100
|
#Premiers boutons
|
101
101
|
self.sizerbut1 = wx.BoxSizer(wx.HORIZONTAL)
|
102
102
|
|
103
|
-
self.butLoad = wx.Button(self,wx.
|
103
|
+
self.butLoad = wx.Button(self,wx.ID_ANY,"Load from file...")
|
104
104
|
self.butLoad.Bind(wx.EVT_BUTTON,self.OnLoad)
|
105
105
|
|
106
|
-
self.butSave = wx.Button(self,wx.
|
106
|
+
self.butSave = wx.Button(self,wx.ID_ANY,"Write to file...")
|
107
107
|
self.butSave.Bind(wx.EVT_BUTTON,self.OnSave)
|
108
108
|
|
109
109
|
self.sizerbut1.Add(self.butLoad,1,wx.EXPAND)
|
110
110
|
self.sizerbut1.Add(self.butSave,1,wx.EXPAND)
|
111
111
|
|
112
112
|
self.sizerbut2 = wx.BoxSizer(wx.HORIZONTAL)
|
113
|
-
self.butSet = wx.Button(self,wx.
|
113
|
+
self.butSet = wx.Button(self,wx.ID_ANY,"Set BC")
|
114
114
|
self.butSet.Bind(wx.EVT_BUTTON,self.OnApplyBC)
|
115
|
-
self.
|
115
|
+
self.butSet.SetToolTip(_('Impose BC for the selected borders'))
|
116
|
+
|
117
|
+
self.butGet = wx.Button(self,wx.ID_ANY,"Get BC")
|
116
118
|
self.butGet.Bind(wx.EVT_BUTTON,self.OnGetBC)
|
117
|
-
self.
|
119
|
+
self.butGet.SetToolTip(_('Retrieve BC for the selected borders'))
|
120
|
+
|
121
|
+
self.butReset = wx.Button(self,wx.ID_ANY,"Reset BC")
|
118
122
|
self.butReset.Bind(wx.EVT_BUTTON,self.OnResetBC)
|
123
|
+
self.butReset.SetToolTip(_('Reset all BC values'))
|
124
|
+
|
119
125
|
self.sizerbut2.Add(self.butSet,1,wx.EXPAND)
|
120
126
|
self.sizerbut2.Add(self.butGet,1,wx.EXPAND)
|
121
127
|
self.sizerbut2.Add(self.butReset,1,wx.EXPAND)
|
@@ -217,11 +223,22 @@ class BcManager(wx.Frame):
|
|
217
223
|
win.SetSizer(self.sizerselect)
|
218
224
|
|
219
225
|
self.sizerfile = wx.BoxSizer(wx.HORIZONTAL)
|
226
|
+
self.sizerButtonSAction = wx.BoxSizer(wx.VERTICAL)
|
220
227
|
self.File = wx.TextCtrl(self,size=(500,250),style=wx.TE_MULTILINE|wx.TE_PROCESS_TAB)
|
221
|
-
|
228
|
+
|
229
|
+
self.FileCmd=wx.Button(self,label='Apply to memory')
|
222
230
|
self.FileCmd.Bind(wx.EVT_BUTTON,self.OnFileCmd)
|
223
|
-
self.
|
224
|
-
|
231
|
+
self.FileCmd.SetToolTip(_('Apply modifications from the textbox to memory'))
|
232
|
+
|
233
|
+
self.to_clipboard=wx.Button(self,label='Copy script to clipboard')
|
234
|
+
self.to_clipboard.Bind(wx.EVT_BUTTON,self.OnCopyToClipboard)
|
235
|
+
self.to_clipboard.SetToolTip(_('Copy script lines to clipboard'))
|
236
|
+
|
237
|
+
self.sizerfile.Add(self.File,3,wx.EXPAND)
|
238
|
+
self.sizerfile.Add(self.sizerButtonSAction,1,wx.EXPAND)
|
239
|
+
|
240
|
+
self.sizerButtonSAction.Add(self.FileCmd,1,wx.EXPAND)
|
241
|
+
self.sizerButtonSAction.Add(self.to_clipboard,1,wx.EXPAND)
|
225
242
|
|
226
243
|
self.sizer.Add(self.sizerbut1,0,wx.EXPAND)
|
227
244
|
self.sizer.Add(self.sizerbut2,0,wx.EXPAND)
|
@@ -414,7 +431,11 @@ class BcManager(wx.Frame):
|
|
414
431
|
self.resetBC()
|
415
432
|
|
416
433
|
def GetBC(self):
|
434
|
+
"""
|
435
|
+
Get BC for selected borders
|
436
|
+
"""
|
417
437
|
|
438
|
+
# create dictionary for all BC values
|
418
439
|
values={}
|
419
440
|
for curbc in self.bc_type:
|
420
441
|
valbc, tbc = curbc.value
|
@@ -423,6 +444,7 @@ class BcManager(wx.Frame):
|
|
423
444
|
values[tbc]['same']=True
|
424
445
|
values[tbc]['nb']=0
|
425
446
|
|
447
|
+
# iterate along X == 0 and Y == 1
|
426
448
|
for xy in range(2):
|
427
449
|
if xy==0:
|
428
450
|
sel=self.BCx.Value.splitlines()
|
@@ -431,11 +453,13 @@ class BcManager(wx.Frame):
|
|
431
453
|
sel=self.BCy.Value.splitlines()
|
432
454
|
curbord=self.bordersY
|
433
455
|
|
456
|
+
# iterate on borders
|
434
457
|
for cursel in sel:
|
435
458
|
i,j=cursel.split('\t')
|
436
459
|
txt=str(i)+'-'+str(j)
|
437
460
|
|
438
461
|
try:
|
462
|
+
# count number of BC of each type and determine if all BC are the same
|
439
463
|
mybc= curbord['bc'][txt]
|
440
464
|
|
441
465
|
for ibc,tbc in enumerate(mybc):
|
@@ -452,6 +476,7 @@ class BcManager(wx.Frame):
|
|
452
476
|
except:
|
453
477
|
pass
|
454
478
|
|
479
|
+
# update widgets
|
455
480
|
for curbc in self.bc_type:
|
456
481
|
valbc, tbc = curbc.value
|
457
482
|
if values[tbc]['nb']>0:
|
@@ -612,16 +637,46 @@ class BcManager(wx.Frame):
|
|
612
637
|
self._filecontent += text+'\n'
|
613
638
|
self._filecontent += 'version {}'.format(self._version)
|
614
639
|
|
640
|
+
self._filecontent += '\n\n'
|
641
|
+
|
642
|
+
self._filecontent += self._script_bc()
|
643
|
+
|
615
644
|
if self.wx_exists:
|
616
645
|
self.File.Clear()
|
617
646
|
self.File.Value=self._filecontent
|
618
647
|
|
648
|
+
def _script_bc(self):
|
649
|
+
""" Return script to apply BC """
|
650
|
+
|
651
|
+
text = ""
|
652
|
+
for orient in range(1,3):
|
653
|
+
if orient==1:
|
654
|
+
curlist=self.bordersX['bc']
|
655
|
+
direction='LEFT'
|
656
|
+
else:
|
657
|
+
curlist=self.bordersY['bc']
|
658
|
+
direction='BOTTOM'
|
659
|
+
curlist:dict
|
660
|
+
ij:str
|
661
|
+
allbc:dict
|
662
|
+
for ij, allbc in curlist.items():
|
663
|
+
for tbc, val in allbc.items():
|
664
|
+
i,j=ij.split('-')
|
665
|
+
namebc=self._find_EnumName_TypeBC(tbc)
|
666
|
+
|
667
|
+
if(str(val)!='99999.0'):
|
668
|
+
text+= "simul.add_boundary_condition(i={}, j={},bc_type=BoundaryConditionsTypes.{}, bc_value={}, border=Direction.{}\n".format(i,j,namebc,val,direction)
|
669
|
+
return text
|
670
|
+
|
619
671
|
def FillFromString(self, text:str):
|
620
672
|
|
621
673
|
self._filecontent = text
|
622
674
|
|
623
675
|
text=text.splitlines()
|
624
676
|
|
677
|
+
if len(text) == 0:
|
678
|
+
return
|
679
|
+
|
625
680
|
nb=int(float(text[0]))
|
626
681
|
|
627
682
|
try:
|
@@ -629,7 +684,7 @@ class BcManager(wx.Frame):
|
|
629
684
|
i,j,orient,type,value=text[i].split('\t')
|
630
685
|
|
631
686
|
except:
|
632
|
-
logging.info(_('Bad text values --
|
687
|
+
logging.info(_('Bad text values -- Check and Retry !!'))
|
633
688
|
return
|
634
689
|
|
635
690
|
self.bordersX['bc']={}
|
@@ -683,8 +738,16 @@ class BcManager(wx.Frame):
|
|
683
738
|
def OnFileCmd(self,event:wx.Event):
|
684
739
|
""" Apply <<< button"""
|
685
740
|
self.FillFromString(self.File.Value)
|
686
|
-
|
687
|
-
|
741
|
+
|
742
|
+
def OnCopyToClipboard(self,event:wx.Event):
|
743
|
+
""" Copy to clipboard"""
|
744
|
+
if self.wx_exists:
|
745
|
+
if wx.TheClipboard.Open():
|
746
|
+
wx.TheClipboard.Clear()
|
747
|
+
wx.TheClipboard.SetData(wx.TextDataObject(self._script_bc()))
|
748
|
+
wx.TheClipboard.Close()
|
749
|
+
else:
|
750
|
+
logging.warning(_('Cannot open the clipboard'))
|
688
751
|
|
689
752
|
def FindBorders(self,array : np.ma.array = None):
|
690
753
|
"""Find all borders where we can impose BC"""
|
@@ -837,7 +900,12 @@ class BcManager(wx.Frame):
|
|
837
900
|
self.bordersY['selected']=selectedY
|
838
901
|
|
839
902
|
def _count_nbbc(self, bc:str, axis:Literal['x', 'y']):
|
903
|
+
"""
|
904
|
+
Count number of BC type for border 'bc' along axis 'axis'
|
840
905
|
|
906
|
+
:param bc: str 'ii-jj' of the border
|
907
|
+
:param axis: axis of BC -- 'x' or 'y'
|
908
|
+
"""
|
841
909
|
nb=0
|
842
910
|
|
843
911
|
if axis.lower()=='x':
|
@@ -856,6 +924,7 @@ class BcManager(wx.Frame):
|
|
856
924
|
return nb
|
857
925
|
|
858
926
|
def plot(self):
|
927
|
+
""" Plot borders -- OpenGL """
|
859
928
|
|
860
929
|
nbx = self.bordersX['nb']
|
861
930
|
nby = self.bordersY['nb']
|
@@ -1013,6 +1082,13 @@ class BcManager(wx.Frame):
|
|
1013
1082
|
if name_bc==name:
|
1014
1083
|
return val_bc
|
1015
1084
|
|
1085
|
+
def _find_EnumName_TypeBC(self,name:str):
|
1086
|
+
"""Convert nameBC to intBC"""
|
1087
|
+
for curbc in self.bc_type:
|
1088
|
+
val_bc, name_bc = curbc.value
|
1089
|
+
if name_bc==name:
|
1090
|
+
return curbc.name
|
1091
|
+
|
1016
1092
|
def get_lists_for_GPU(self) -> tuple[list[boundary_condition_2D], list[boundary_condition_2D]]:
|
1017
1093
|
"""
|
1018
1094
|
Return list of BC for GPU computing
|
@@ -14,6 +14,16 @@ class Direction(Enum):
|
|
14
14
|
BOTTOM= 2
|
15
15
|
X = 1
|
16
16
|
Y = 2
|
17
|
+
|
18
|
+
class BCType_2D_GPU(Enum):
|
19
|
+
# The numbers match the numbers in Wolf's simulations parameters.
|
20
|
+
# H = (1,_('Water level [m]'))
|
21
|
+
QX = (2,_('Flow rate along X [m²/s]'))
|
22
|
+
QY = (3,_('Flow rate along Y [m²/s]'))
|
23
|
+
NONE = (4,_('None'))
|
24
|
+
HMOD = (7,_('Water level [m] / impervious if entry point'))
|
25
|
+
FROUDE_NORMAL = (8,_('Froude normal to the border [-]'))
|
26
|
+
|
17
27
|
class BCType_2D(Enum):
|
18
28
|
# The numbers match the numbers in Wolf's 2D simulations parameters.
|
19
29
|
H = (1,_('Water level [m]'))
|
@@ -52,6 +62,8 @@ def choose_bc_type(version:Union[int,str] = 1):
|
|
52
62
|
return BCType_2D
|
53
63
|
elif version==2 or version =='oo':
|
54
64
|
return BCType_2D_OO
|
65
|
+
elif version==3 or version =='gpu':
|
66
|
+
return BCType_2D_GPU
|
55
67
|
|
56
68
|
# Color associated to a number of BC per border
|
57
69
|
ColorsNb = {1 : (0.,0.,1.),
|
wolfhece/mesh2d/wolf2dprev.py
CHANGED
@@ -6,7 +6,7 @@ try:
|
|
6
6
|
except:
|
7
7
|
msg=_('Error importing OpenGL library')
|
8
8
|
msg+=_(' Python version : ' + sys.version)
|
9
|
-
msg+=_(' Please check your version of opengl32.dll -- conflict may exist between different
|
9
|
+
msg+=_(' Please check your version of opengl32.dll -- conflict may exist between different files present on your desktop')
|
10
10
|
raise Exception(msg)
|
11
11
|
|
12
12
|
import numpy as np
|
@@ -2285,7 +2285,6 @@ class prev_parameters_simul:
|
|
2285
2285
|
assert i >= 1 and i <= self.nxfin, f"1 <= i:{i} <= {self.nxfin+1}"
|
2286
2286
|
assert j >= 1 and j <= self.nyfin, f"1 <= j:{j} <= {self.nyfin+1}"
|
2287
2287
|
self.weak_bc_y.add(i,j,ntype,value,orient='y')
|
2288
|
-
self.impfbygen += 1
|
2289
2288
|
|
2290
2289
|
def to_yaml(self):
|
2291
2290
|
global_params = f"""\
|
wolfhece/pydike.py
CHANGED
@@ -47,7 +47,7 @@ class Dike(Triangulation,Zones):
|
|
47
47
|
for curv in curpar.myvertices:
|
48
48
|
curv.z=zmin
|
49
49
|
|
50
|
-
# on dispose de 5 vecteurs dans la zone
|
50
|
+
# on dispose de 5 vecteurs dans la zone, orientés de l'aval vers l'amont
|
51
51
|
|
52
52
|
self.trace.update_lengths()
|
53
53
|
nb = int(self.trace.length3D/ds)
|
wolfhece/pyshields.py
CHANGED
@@ -219,13 +219,13 @@ def get_d_cr(q:float, h:float, K:float, rhom:float=2650., rho:float=RHO_PUREWATE
|
|
219
219
|
- Shields
|
220
220
|
- Izbach
|
221
221
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
222
|
+
:param q : discharge [m3/s]
|
223
|
+
:param h : water depth [m]
|
224
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
225
|
+
:param rhom : sediment density [kg/m3]
|
226
|
+
:param rho : water density [kg/m3]
|
227
|
+
:param method : method to solve the equation (default 'brenth')
|
228
|
+
:param which : which formula to use (default 2) -- see funcs = [(get_sadim,get_psi_cr),(get_dstar,get_psi_cr2),(get_dstar,get_psi_cr3)]
|
229
229
|
"""
|
230
230
|
if q==0.:
|
231
231
|
return 0.,0.
|
@@ -247,9 +247,9 @@ def get_settling_vel(d:float, rhom:float=2650., rho:float=RHO_PUREWATER) -> floa
|
|
247
247
|
"""
|
248
248
|
Vitesse de chute
|
249
249
|
|
250
|
-
|
251
|
-
|
252
|
-
|
250
|
+
:param d : grain diameter [m]
|
251
|
+
:param rhom : sediment density [kg/m3]
|
252
|
+
:param rho : water density [kg/m3]
|
253
253
|
"""
|
254
254
|
dstar = get_dstar(d,rhom,rho)
|
255
255
|
ws = KIN_VISCOSITY/d*(math.sqrt(25+1.2*dstar**2.)-5)**(3./2.)
|
@@ -259,12 +259,12 @@ def get_Rouse(d:float, q:float, h:float, K:float, rhom:float=2650., rho:float=RH
|
|
259
259
|
"""
|
260
260
|
Vitesse de chute
|
261
261
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
262
|
+
:param d : grain diameter [m]
|
263
|
+
:param q : discharge [m3/s]
|
264
|
+
:param h : water depth [m]
|
265
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
266
|
+
:param rhom : sediment density [kg/m3]
|
267
|
+
:param rho : water density [kg/m3]
|
268
268
|
"""
|
269
269
|
# tau_cr = (q/K)**2 / h**(7/3) * rho * GRAVITY
|
270
270
|
# shear_vel = math.sqrt(tau_cr/rho)
|
@@ -279,12 +279,12 @@ def _get_Rouse(d:float, q:float, h:float, K:float, rhom:float=2650., rho:float=R
|
|
279
279
|
"""
|
280
280
|
Settling velocity function -- used in root_scalar
|
281
281
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
282
|
+
:param d : grain diameter [m]
|
283
|
+
:param q : discharge [m3/s]
|
284
|
+
:param h : water depth [m]
|
285
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
286
|
+
:param rhom : sediment density [kg/m3]
|
287
|
+
:param rho : water density [kg/m3]
|
288
288
|
"""
|
289
289
|
# tau_cr = (q/K)**2 / h**(7/3) * rho * GRAVITY
|
290
290
|
# shear_vel = math.sqrt(tau_cr/rho)
|
@@ -309,12 +309,12 @@ def get_transport_mode(d:float, q:float, h:float, K:float, rhom:float=2650., rho
|
|
309
309
|
|
310
310
|
return in [BED_LOAD, SUSPENDED_LOAD_50, SUSPENDED_LOAD_100, WASH_LOAD]
|
311
311
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
312
|
+
:param d : grain diameter [m]
|
313
|
+
:param q : discharge [m3/s]
|
314
|
+
:param h : water depth [m]
|
315
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
316
|
+
:param rhom : sediment density [kg/m3]
|
317
|
+
:param rho : water density [kg/m3]
|
318
318
|
|
319
319
|
"""
|
320
320
|
|
@@ -332,11 +332,11 @@ def get_d_cr_susp(q:float, h:float, K:float, rhom:float=2650., rho:float=RHO_PUR
|
|
332
332
|
"""
|
333
333
|
Diamètre critique d'emportement par suspension à 50% --> cf Rouse 1.2
|
334
334
|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
335
|
+
:param q : discharge [m3/s]
|
336
|
+
:param h : water depth [m]
|
337
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
338
|
+
:param rhom : sediment density [kg/m3]
|
339
|
+
:param rho : water density [kg/m3]
|
340
340
|
|
341
341
|
"""
|
342
342
|
if q==0.:
|
@@ -507,11 +507,11 @@ def get_Shields_2D_Manning(s:float, d:float, q:float, h:float, K:float) -> float
|
|
507
507
|
"""
|
508
508
|
Compute Shields dimensionless parameter for 2D flow with Manning friction law
|
509
509
|
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
510
|
+
:param s : sediment density / water density [-]
|
511
|
+
:param d : sediment diameter [m]
|
512
|
+
:param q : discharge [m3/s]
|
513
|
+
:param h : water depth [m]
|
514
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
515
515
|
"""
|
516
516
|
# calcul de terme de pente de frottement
|
517
517
|
|
@@ -535,11 +535,11 @@ def izbach_d_cr(q:float, h:float, rhom:float=2650, rho:float=RHO_PUREWATER, meth
|
|
535
535
|
|
536
536
|
--> d = (0.85 * q/h)**2 / (s * g) / 1.7**2
|
537
537
|
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
538
|
+
:param q : discharge [m3/s]
|
539
|
+
:param h : water depth [m]
|
540
|
+
:param rhom : sediment density [kg/m3]
|
541
|
+
:param rho : water density [kg/m3]
|
542
|
+
:param method : method to solve the equation (default 'ridder')
|
543
543
|
"""
|
544
544
|
s = rhom/rho
|
545
545
|
# (0.85 * q/h)**2. / ((s-1.) * GRAVITY) / 1.7**2.
|
wolfhece/pywalous.py
CHANGED
@@ -24,8 +24,8 @@ class Walous_data():
|
|
24
24
|
"""
|
25
25
|
Read the file
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
:param force : force to read even read was done before
|
28
|
+
:param bounds : [xmin, ymin, xmax, ymax] or [[xmin, xmax], [ymin, ymax]]
|
29
29
|
"""
|
30
30
|
|
31
31
|
if self._gdf is None or force:
|
@@ -622,6 +622,8 @@ class Config_Manager_2D_GPU:
|
|
622
622
|
logging.info(_('infiltration_zones.tif created and set to -1 ! -- Please edit it !'))
|
623
623
|
else:
|
624
624
|
logging.error(_("infiltration_zones.tif not created ! -- Does 'bathymetry.tif' or any '.tif' file exist in the root directory ?"))
|
625
|
+
else:
|
626
|
+
logging.error(_("No 'bathymetry.tif' file found in the root directory !"))
|
625
627
|
|
626
628
|
def create_simulation(self, dir:Path, idx_hydros:list[int] = [-1], delete_existing:bool = False) -> list[Path]:
|
627
629
|
""" Create a simulation from different hydrographs """
|
@@ -981,7 +983,7 @@ class UI_Manager_2D_GPU():
|
|
981
983
|
def oncreate_void_infil(self, e:wx.MouseEvent):
|
982
984
|
""" Création d'un fichier d'infiltration vide """
|
983
985
|
self._parent.create_void_infil()
|
984
|
-
self._parent.
|
986
|
+
self._parent.load_data()
|
985
987
|
|
986
988
|
def oncreate_void_scripts(self,e:wx.MouseEvent):
|
987
989
|
""" Création d'un script vide """
|
@@ -6,8 +6,8 @@ class Wolf_TwoLists_Transfer(wx.Panel):
|
|
6
6
|
|
7
7
|
def __init__(self, parent, **kwargs):
|
8
8
|
"""
|
9
|
-
|
10
|
-
|
9
|
+
:param parent : wx.Window
|
10
|
+
:param kwargs : dict - other arguments for wx.Panel (example : max_selected_items=3, delete_if_transfer=True)
|
11
11
|
"""
|
12
12
|
|
13
13
|
super().__init__(parent)
|
@@ -174,14 +174,14 @@ class Wolf_MultipleSelection(wx.Dialog):
|
|
174
174
|
destroyOK = False,
|
175
175
|
**kwargs):
|
176
176
|
"""
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
177
|
+
:param parent : wx.Window
|
178
|
+
:param title : str - title of the frame
|
179
|
+
:param values_dict : dict - {'label1':[item1, item2, ...], 'label2':[item1, item2, ...], ...}
|
180
|
+
:param callback : function - callback function when OK or Apply button is pressed
|
181
|
+
:param info : str - information to display upper the collapsiblepanes
|
182
|
+
:param cmdApply : bool - if True, Apply button is displayed
|
183
|
+
:param styles : wx.ListBox styles - wx constant or list of wx constants
|
184
|
+
:param kwargs : dict - other arguments for wx.Frame (example : max_selected_items=[1, 2, 3], delete_if_transfer=[True, False, True])
|
185
185
|
"""
|
186
186
|
if isinstance(styles, list):
|
187
187
|
assert len(styles) == len(values_dict), "styles must be a list of len(values_dict)"
|