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.
Files changed (42) hide show
  1. wolfhece/GraphNotebook.py +0 -1
  2. wolfhece/GraphProfile.py +5 -14
  3. wolfhece/Lidar2002.py +0 -1
  4. wolfhece/PyCrosssections.py +21 -26
  5. wolfhece/PyDraw.py +219 -58
  6. wolfhece/PyGui.py +6 -3
  7. wolfhece/PyPalette.py +2 -2
  8. wolfhece/PyParams.py +48 -48
  9. wolfhece/PyVertex.py +1 -1
  10. wolfhece/PyVertexvectors.py +40 -4
  11. wolfhece/Results2DGPU.py +7 -6
  12. wolfhece/apps/WolfPython.png +0 -0
  13. wolfhece/bernoulli/NetworkOpenGL.py +1 -1
  14. wolfhece/cli.py +7 -0
  15. wolfhece/flow_SPWMI.py +1 -1
  16. wolfhece/friction_law.py +6 -6
  17. wolfhece/gpuview.py +1 -1
  18. wolfhece/hydrology/PyWatershed.py +9 -10
  19. wolfhece/lagrangian/emitter.py +1 -1
  20. wolfhece/lagrangian/example_domain.py +1 -1
  21. wolfhece/lagrangian/velocity_field.py +4 -4
  22. wolfhece/libs/WolfDll.dll +0 -0
  23. wolfhece/libs/WolfDll_CD.dll +0 -0
  24. wolfhece/libs/WolfOGL.c +28187 -28187
  25. wolfhece/mar/Interface_MAR_WOLF_objet.py +1004 -0
  26. wolfhece/mar/commontools.py +1289 -59
  27. wolfhece/mesh2d/bc_manager.py +89 -13
  28. wolfhece/mesh2d/cst_2D_boundary_conditions.py +12 -0
  29. wolfhece/mesh2d/wolf2dprev.py +1 -2
  30. wolfhece/pydike.py +1 -1
  31. wolfhece/pyshields.py +43 -43
  32. wolfhece/pywalous.py +2 -2
  33. wolfhece/scenario/config_manager.py +3 -1
  34. wolfhece/ui/wolf_multiselection_collapsiblepane.py +10 -10
  35. wolfhece/wolf_array.py +1298 -418
  36. wolfhece/wolf_texture.py +1 -1
  37. wolfhece/wolfresults_2D.py +124 -19
  38. {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/METADATA +5 -1
  39. {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/RECORD +42 -39
  40. {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/WHEEL +0 -0
  41. {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/entry_points.txt +0 -0
  42. {wolfhece-2.0.4.dist-info → wolfhece-2.0.6.dist-info}/top_level.txt +0 -0
@@ -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 refernce in indices - Numpy array - shape (2,nbx),dtype=np.integer
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.ID_FILE,"Load from file...")
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.ID_SAVEAS,"Write to file...")
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.ID_APPLY,"Set BC")
113
+ self.butSet = wx.Button(self,wx.ID_ANY,"Set BC")
114
114
  self.butSet.Bind(wx.EVT_BUTTON,self.OnApplyBC)
115
- self.butGet = wx.Button(self,wx.ID_FIND,"Get BC")
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.butReset = wx.Button(self,wx.ID_FIND,"Reset BC")
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
- self.FileCmd=wx.Button(self,label='Apply\n<<<')
228
+
229
+ self.FileCmd=wx.Button(self,label='Apply to memory')
222
230
  self.FileCmd.Bind(wx.EVT_BUTTON,self.OnFileCmd)
223
- self.sizerfile.Add(self.File,0,wx.EXPAND)
224
- self.sizerfile.Add(self.FileCmd,1)
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 -- Correct and Retry !!'))
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
- self.File.Clear()
687
- self._Populate_FileContent()
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.),
@@ -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 fils present on your desktop')
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 orienté de l'aval vers l'amont
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
- @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)]
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
- @param d : grain diameter [m]
251
- @param rhom : sediment density [kg/m3]
252
- @param rho : water density [kg/m3]
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
- @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]
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
- @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]
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
- @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]
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
- @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]
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
- @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]
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
- @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')
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
- @param force : force to read even read was done before
28
- @param bounds : [xmin, ymin, xmax, ymax] or [[xmin, xmax], [ymin, ymax]]
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._load_data()
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
- @param parent : wx.Window
10
- @param kwargs : dict - other arguments for wx.Panel (example : max_selected_items=3, delete_if_transfer=True)
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
- @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])
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)"