wolfhece 2.0.21__py3-none-any.whl → 2.0.23__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 +110 -32
- wolfhece/PyGui.py +27 -25
- wolfhece/apps/ManageParams.py +7 -6
- wolfhece/apps/Optimisation_hydro.py +7 -7
- wolfhece/apps/check_install.py +20 -0
- wolfhece/apps/curvedigitizer.py +1 -4
- wolfhece/apps/isocurrent.py +2 -4
- wolfhece/apps/version.py +20 -0
- wolfhece/apps/wolf.py +6 -9
- wolfhece/apps/wolf2D.py +6 -2
- wolfhece/apps/wolfcompare2Darrays.py +3 -8
- wolfhece/apps/wolfhydro.py +8 -7
- wolfhece/cli.py +6 -1
- wolfhece/libs/WolfDll.dll +0 -0
- wolfhece/mesh2d/wolf2dprev.py +90 -1
- wolfhece/pyshields.py +29 -4
- wolfhece/ui/wolf_times_selection_comparison_models.py +7 -0
- wolfhece/wolfresults_2D.py +2 -2
- {wolfhece-2.0.21.dist-info → wolfhece-2.0.23.dist-info}/METADATA +1 -1
- {wolfhece-2.0.21.dist-info → wolfhece-2.0.23.dist-info}/RECORD +23 -21
- {wolfhece-2.0.21.dist-info → wolfhece-2.0.23.dist-info}/entry_points.txt +1 -0
- {wolfhece-2.0.21.dist-info → wolfhece-2.0.23.dist-info}/WHEEL +0 -0
- {wolfhece-2.0.21.dist-info → wolfhece-2.0.23.dist-info}/top_level.txt +0 -0
wolfhece/PyDraw.py
CHANGED
@@ -235,6 +235,9 @@ class WolfMapViewer(wx.Frame):
|
|
235
235
|
compareitem = self.menugltf.Append(wx.ID_ANY, _('Compare...'), _('Create new frames to compare sculpting'))
|
236
236
|
updategltf = self.menugltf.Append(wx.ID_ANY, _('Update...'), _('Update data from gltf files'))
|
237
237
|
|
238
|
+
self.filemenu.AppendSeparator()
|
239
|
+
check2D = self.filemenu.Append(wx.ID_ANY, _('Check 2D simulation headers'), _('Check 2D sim'))
|
240
|
+
|
238
241
|
self.filemenu.AppendSeparator()
|
239
242
|
compareitem = self.filemenu.Append(wx.ID_ANY, _('Set comparison'), _('Set comparison'))
|
240
243
|
multiview = self.filemenu.Append(wx.ID_ANY, _('Multiviewer'), _('Multiviewer'))
|
@@ -392,6 +395,7 @@ class WolfMapViewer(wx.Frame):
|
|
392
395
|
# Help
|
393
396
|
self.helpmenu = wx.Menu()
|
394
397
|
self.helpmenu.Append(wx.ID_ANY, _('Shortcuts'), _('Shortcuts'))
|
398
|
+
self.helpmenu.Append(wx.ID_ANY, _('About'), _('About'))
|
395
399
|
|
396
400
|
self.menubar.Append(self.helpmenu, _('&Help'))
|
397
401
|
|
@@ -477,7 +481,7 @@ class WolfMapViewer(wx.Frame):
|
|
477
481
|
self.cloudmenu=None
|
478
482
|
self._configuration = None
|
479
483
|
|
480
|
-
self.compare_results=
|
484
|
+
self.compare_results = None
|
481
485
|
|
482
486
|
self.InitUI()
|
483
487
|
|
@@ -760,7 +764,7 @@ class WolfMapViewer(wx.Frame):
|
|
760
764
|
|
761
765
|
if 'domain' in ret_dict:
|
762
766
|
if len(ret_dict['domain']) == 1:
|
763
|
-
domain = self.
|
767
|
+
domain = self.getobj_from_id(ret_dict['domain'][0])
|
764
768
|
self.active_particle_system.set_domain(domain)
|
765
769
|
if 'u' in ret_dict and 'v' in ret_dict:
|
766
770
|
if len(ret_dict['u']) >0:
|
@@ -768,8 +772,8 @@ class WolfMapViewer(wx.Frame):
|
|
768
772
|
|
769
773
|
time = 0.
|
770
774
|
for u,v in zip(ret_dict['u'], ret_dict['v']):
|
771
|
-
u = self.
|
772
|
-
v = self.
|
775
|
+
u = self.getobj_from_id(u)
|
776
|
+
v = self.getobj_from_id(v)
|
773
777
|
u:WolfArray
|
774
778
|
v:WolfArray
|
775
779
|
assert u.array.shape == v.array.shape, _('Please select arrays with the same shape')
|
@@ -782,7 +786,7 @@ class WolfMapViewer(wx.Frame):
|
|
782
786
|
|
783
787
|
if 'emitters' in ret_dict:
|
784
788
|
if len(ret_dict['emitters'])>0:
|
785
|
-
emitters = [self.
|
789
|
+
emitters = [self.getobj_from_id(cur) for cur in ret_dict['emitters']]
|
786
790
|
self.active_particle_system.set_emitters(emitters)
|
787
791
|
|
788
792
|
if self.active_particle_system._ui is not None:
|
@@ -3027,6 +3031,10 @@ class WolfMapViewer(wx.Frame):
|
|
3027
3031
|
# show shortcuts in log
|
3028
3032
|
self.print_shortcuts(True)
|
3029
3033
|
|
3034
|
+
elif itemlabel == _('About'):
|
3035
|
+
#print About Frame
|
3036
|
+
self.print_About()
|
3037
|
+
|
3030
3038
|
elif itemlabel == _("Plot active vector..."):
|
3031
3039
|
|
3032
3040
|
|
@@ -3187,6 +3195,9 @@ class WolfMapViewer(wx.Frame):
|
|
3187
3195
|
fig.show()
|
3188
3196
|
|
3189
3197
|
elif itemlabel == _("Change current view"):
|
3198
|
+
|
3199
|
+
# Change view for results
|
3200
|
+
|
3190
3201
|
autoscale = False
|
3191
3202
|
choices = [cur.value for cur in views_2D]
|
3192
3203
|
dlg = wx.SingleChoiceDialog(None, _("Pick a view"), "Choices", choices)
|
@@ -3215,6 +3226,18 @@ class WolfMapViewer(wx.Frame):
|
|
3215
3226
|
logging.warning(_("Bad value -- Rety"))
|
3216
3227
|
return
|
3217
3228
|
|
3229
|
+
dlg = wx.TextEntryDialog(None,_("Density grain [-] ?"), value = str(self.active_res2d.sediment_density))
|
3230
|
+
ret = dlg.ShowModal()
|
3231
|
+
if ret == wx.ID_CANCEL:
|
3232
|
+
dlg.Destroy()
|
3233
|
+
return
|
3234
|
+
try:
|
3235
|
+
density = float(dlg.GetValue())
|
3236
|
+
except:
|
3237
|
+
dlg.Destroy()
|
3238
|
+
logging.warning(_("Bad value -- Rety"))
|
3239
|
+
return
|
3240
|
+
|
3218
3241
|
if len(self.myres2D)>1:
|
3219
3242
|
|
3220
3243
|
dlg = wx.MessageDialog(None, _('Apply to all results?'), style=wx.YES_NO)
|
@@ -3222,6 +3245,7 @@ class WolfMapViewer(wx.Frame):
|
|
3222
3245
|
if ret == wx.ID_NO:
|
3223
3246
|
if diamsize is not None:
|
3224
3247
|
self.active_res2d.sediment_diameter = diamsize
|
3248
|
+
self.active_res2d.sediment_density = density
|
3225
3249
|
self.active_res2d.load_default_colormap('shields_cst')
|
3226
3250
|
self.active_res2d.set_currentview(method, True)
|
3227
3251
|
else:
|
@@ -3229,14 +3253,20 @@ class WolfMapViewer(wx.Frame):
|
|
3229
3253
|
curarray:Wolfresults_2D
|
3230
3254
|
if diamsize is not None:
|
3231
3255
|
curarray.sediment_diameter = diamsize
|
3256
|
+
curarray.sediment_density = density
|
3232
3257
|
curarray.load_default_colormap('shields_cst')
|
3233
3258
|
curarray.set_currentview(method)
|
3234
3259
|
|
3235
3260
|
else:
|
3236
|
-
if
|
3237
|
-
|
3238
|
-
|
3239
|
-
|
3261
|
+
if self.active_res2d is not None:
|
3262
|
+
if diamsize is not None:
|
3263
|
+
self.active_res2d.sediment_diameter = diamsize
|
3264
|
+
self.active_res2d.sediment_density = density
|
3265
|
+
self.active_res2d.load_default_colormap('shields_cst')
|
3266
|
+
self.active_res2d.set_currentview(method, True)
|
3267
|
+
|
3268
|
+
if self.compare_results is not None:
|
3269
|
+
self.compare_results.update_type_result(method)
|
3240
3270
|
|
3241
3271
|
elif itemlabel == _("Read last result"):
|
3242
3272
|
|
@@ -3538,6 +3568,23 @@ class WolfMapViewer(wx.Frame):
|
|
3538
3568
|
|
3539
3569
|
pass
|
3540
3570
|
|
3571
|
+
elif itemlabel == _('Check 2D simulation headers'):
|
3572
|
+
|
3573
|
+
# Check 2D simulation
|
3574
|
+
dlg = wx.FileDialog(self, _("Choose 2D simulation file"), wildcard="all (*.*)|*.*", style=wx.FD_OPEN)
|
3575
|
+
if dlg.ShowModal() == wx.ID_CANCEL:
|
3576
|
+
dlg.Destroy()
|
3577
|
+
return
|
3578
|
+
|
3579
|
+
filename = dlg.GetPath()
|
3580
|
+
dlg.Destroy()
|
3581
|
+
|
3582
|
+
from .mesh2d.wolf2dprev import prev_sim2D
|
3583
|
+
|
3584
|
+
sim = prev_sim2D(filename)
|
3585
|
+
sim.verify_files()
|
3586
|
+
|
3587
|
+
|
3541
3588
|
elif itemlabel == _('Set comparison'):
|
3542
3589
|
|
3543
3590
|
self.compare_results = Compare_Arrays_Results(self, True, True)
|
@@ -4457,7 +4504,7 @@ class WolfMapViewer(wx.Frame):
|
|
4457
4504
|
|
4458
4505
|
if file.ShowModal() == wx.ID_CANCEL:
|
4459
4506
|
file.Destroy()
|
4460
|
-
return
|
4507
|
+
return -1
|
4461
4508
|
else:
|
4462
4509
|
# récuparétaion du nom de fichier avec chemin d'accès
|
4463
4510
|
filename = file.GetPath()
|
@@ -4470,7 +4517,7 @@ class WolfMapViewer(wx.Frame):
|
|
4470
4517
|
if filename != '':
|
4471
4518
|
if (not (os.path.exists(filename))):
|
4472
4519
|
logging.warning("Warning : the following file is not present here : " + filename)
|
4473
|
-
return
|
4520
|
+
return -1
|
4474
4521
|
|
4475
4522
|
if which.lower() == 'array' or which.lower() == 'array_crop':
|
4476
4523
|
curdict = self.myarrays
|
@@ -4525,7 +4572,7 @@ class WolfMapViewer(wx.Frame):
|
|
4525
4572
|
|
4526
4573
|
logging.info(_('End of importing arrays from npz file'))
|
4527
4574
|
del wait
|
4528
|
-
return
|
4575
|
+
return -1
|
4529
4576
|
else:
|
4530
4577
|
testobj = WolfArray()
|
4531
4578
|
testobj.filename = filename
|
@@ -4563,7 +4610,7 @@ class WolfMapViewer(wx.Frame):
|
|
4563
4610
|
ret = dlg_pos.ShowModal()
|
4564
4611
|
if ret == wx.ID_CANCEL:
|
4565
4612
|
newcrop.Destroy()
|
4566
|
-
return
|
4613
|
+
return -1
|
4567
4614
|
else:
|
4568
4615
|
cropini = [[float(dlg_pos.ox.Value), float(dlg_pos.ex.Value)],
|
4569
4616
|
[float(dlg_pos.oy.Value), float(dlg_pos.ey.Value)]]
|
@@ -4623,7 +4670,7 @@ class WolfMapViewer(wx.Frame):
|
|
4623
4670
|
file = wx.DirDialog(self, "Choose directory containing data")
|
4624
4671
|
if file.ShowModal() == wx.ID_CANCEL:
|
4625
4672
|
file.Destroy()
|
4626
|
-
return
|
4673
|
+
return -1
|
4627
4674
|
else:
|
4628
4675
|
# récuparétaion du nom de fichier avec chemin d'accès
|
4629
4676
|
dirname = file.GetPath()
|
@@ -4633,7 +4680,7 @@ class WolfMapViewer(wx.Frame):
|
|
4633
4680
|
file = wx.DirDialog(self, "Choose directory containing comparison data")
|
4634
4681
|
if file.ShowModal() == wx.ID_CANCEL:
|
4635
4682
|
file.Destroy()
|
4636
|
-
return
|
4683
|
+
return -1
|
4637
4684
|
else:
|
4638
4685
|
# récuparétaion du nom de fichier avec chemin d'accès
|
4639
4686
|
dirname_comp = file.GetPath()
|
@@ -4671,7 +4718,7 @@ class WolfMapViewer(wx.Frame):
|
|
4671
4718
|
ret = newcrop.ShowModal()
|
4672
4719
|
if ret == wx.ID_CANCEL:
|
4673
4720
|
newcrop.Destroy()
|
4674
|
-
return
|
4721
|
+
return -1
|
4675
4722
|
else:
|
4676
4723
|
cropini = [[float(newcrop.ox.Value), float(newcrop.ex.Value)],
|
4677
4724
|
[float(newcrop.oy.Value), float(newcrop.ey.Value)]]
|
@@ -4705,7 +4752,7 @@ class WolfMapViewer(wx.Frame):
|
|
4705
4752
|
myhead.nby = int(np.max(myxyz[:, 1]) - myhead.origy) + 1
|
4706
4753
|
|
4707
4754
|
if len(myxyz) == 0:
|
4708
|
-
return
|
4755
|
+
return -1
|
4709
4756
|
|
4710
4757
|
newobj = WolfArray()
|
4711
4758
|
|
@@ -4740,7 +4787,7 @@ class WolfMapViewer(wx.Frame):
|
|
4740
4787
|
ret = newcrop.ShowModal()
|
4741
4788
|
if ret == wx.ID_CANCEL:
|
4742
4789
|
newcrop.Destroy()
|
4743
|
-
return
|
4790
|
+
return -1
|
4744
4791
|
else:
|
4745
4792
|
cropini = [[float(newcrop.ox.Value), float(newcrop.ex.Value)],
|
4746
4793
|
[float(newcrop.oy.Value), float(newcrop.ey.Value)]]
|
@@ -4753,7 +4800,7 @@ class WolfMapViewer(wx.Frame):
|
|
4753
4800
|
|
4754
4801
|
if which.lower() == 'array_lidar_first':
|
4755
4802
|
if len(first) == 0:
|
4756
|
-
return
|
4803
|
+
return -1
|
4757
4804
|
|
4758
4805
|
newobj = Lidar2002.create_wolfarray(first, bounds=cropini)
|
4759
4806
|
|
@@ -4769,7 +4816,7 @@ class WolfMapViewer(wx.Frame):
|
|
4769
4816
|
id = 'lidar2002_firstecho'
|
4770
4817
|
else:
|
4771
4818
|
if len(sec) == 0:
|
4772
|
-
return
|
4819
|
+
return -1
|
4773
4820
|
newobj = Lidar2002.create_wolfarray(sec, bounds=cropini)
|
4774
4821
|
if min(tmpdx, tmpdy) != 1.:
|
4775
4822
|
newobj.rebin(min(tmpdx, tmpdy))
|
@@ -4995,6 +5042,8 @@ class WolfMapViewer(wx.Frame):
|
|
4995
5042
|
if self.active_cs is None:
|
4996
5043
|
self.active_cs = self.get_cross_sections()
|
4997
5044
|
|
5045
|
+
return 0
|
5046
|
+
|
4998
5047
|
def get_obj_from_treeitem(self, treeitem):
|
4999
5048
|
""" Find the object associated with treeitem """
|
5000
5049
|
return self.treelist.GetItemData(treeitem)
|
@@ -5164,14 +5213,6 @@ class WolfMapViewer(wx.Frame):
|
|
5164
5213
|
id = self.treelist.GetItemText(self.selected_treeitem).lower()
|
5165
5214
|
|
5166
5215
|
self.removeobj_from_id(id)
|
5167
|
-
# myobj = self.getobj_from_id(id)
|
5168
|
-
|
5169
|
-
# if myobj is not None:
|
5170
|
-
# self.treelist.DeleteItem(self.selected_treeitem)
|
5171
|
-
|
5172
|
-
# for curlist in self.all_lists:
|
5173
|
-
# if myobj in curlist:
|
5174
|
-
# curlist.pop(curlist.index(myobj))
|
5175
5216
|
|
5176
5217
|
def removeobj_from_id(self, id:str):
|
5177
5218
|
|
@@ -6465,6 +6506,15 @@ class WolfMapViewer(wx.Frame):
|
|
6465
6506
|
self.Refresh()
|
6466
6507
|
self.mimicme()
|
6467
6508
|
|
6509
|
+
def print_About(self):
|
6510
|
+
""" Print the About window """
|
6511
|
+
from .apps.version import WolfVersion
|
6512
|
+
|
6513
|
+
version = WolfVersion()
|
6514
|
+
dlg = wx.MessageDialog(None, _('Wolf - Version {}\n\n'.format(str(version))) + _('Developed by : ') + 'HECE ULiège\n' + _('Contact : pierre.archambeau@uliege.be'), _('About'), wx.OK | wx.ICON_INFORMATION)
|
6515
|
+
dlg.ShowModal()
|
6516
|
+
dlg.Destroy()
|
6517
|
+
|
6468
6518
|
def print_shortcuts(self, inframe:bool = None):
|
6469
6519
|
""" Print the list of shortcuts into logging """
|
6470
6520
|
|
@@ -7557,13 +7607,36 @@ class Compare_Arrays_Results():
|
|
7557
7607
|
self.linked_elts.append(curelt.as_WolfArray())
|
7558
7608
|
|
7559
7609
|
for curelt, curlink in zip(self.elements, self.linked_elts):
|
7560
|
-
curlink.idx = curelt.idx
|
7610
|
+
curlink.idx = curelt.idx + ' ' + curelt.get_currentview().value
|
7561
7611
|
|
7562
7612
|
self.set_diff()
|
7563
7613
|
|
7564
7614
|
if self._initialized_viewers:
|
7565
7615
|
self.update_viewers()
|
7566
7616
|
|
7617
|
+
def update_type_result(self, newtype):
|
7618
|
+
"""
|
7619
|
+
Update the result type for each element
|
7620
|
+
|
7621
|
+
"""
|
7622
|
+
assert newtype in views_2D, 'This type is not a 2D result'
|
7623
|
+
assert self.type in (Comp_Type.RES2D, Comp_Type.RES2D_GPU), 'This method is only for 2D results'
|
7624
|
+
|
7625
|
+
for curelt in self.elements:
|
7626
|
+
curelt.set_currentview(newtype)
|
7627
|
+
|
7628
|
+
# remove elements
|
7629
|
+
for baselt, curelt, curmap in zip(self.elements, self.linked_elts, self.mapviewers):
|
7630
|
+
|
7631
|
+
curmap.removeobj_from_id(curelt.idx)
|
7632
|
+
|
7633
|
+
for curdiff, curmap in zip(self.diff, self.mapviewers_diff):
|
7634
|
+
|
7635
|
+
curmap.removeobj_from_id(curdiff.idx)
|
7636
|
+
|
7637
|
+
|
7638
|
+
self.update_comp(self.times.get_times_idx())
|
7639
|
+
|
7567
7640
|
def set_elements(self):
|
7568
7641
|
""" Set the elements to compare with the right type """
|
7569
7642
|
from .ui.wolf_times_selection_comparison_models import Times_Selection
|
@@ -7572,6 +7645,7 @@ class Compare_Arrays_Results():
|
|
7572
7645
|
self.type = self.paths[0][0]
|
7573
7646
|
|
7574
7647
|
if self.type == Comp_Type.RES2D_GPU:
|
7648
|
+
self.parent.menu_wolf2d()
|
7575
7649
|
self.elements = [wolfres2DGPU(cur[1], plotted=False, idx = cur[1].name + '_' + str(idx)) for idx, cur in enumerate(self.paths)]
|
7576
7650
|
|
7577
7651
|
times = [curmod.get_times_steps()[0] for curmod in self.elements]
|
@@ -7580,6 +7654,7 @@ class Compare_Arrays_Results():
|
|
7580
7654
|
self.times.Show()
|
7581
7655
|
|
7582
7656
|
elif self.type == Comp_Type.RES2D:
|
7657
|
+
self.parent.menu_wolf2d()
|
7583
7658
|
self.elements = [Wolfresults_2D(cur[1], plotted=False, idx = cur[1].name + '_' + str(idx)) for idx, cur in enumerate(self.paths)]
|
7584
7659
|
|
7585
7660
|
times = [curmod.get_times_steps()[0] for curmod in self.elements]
|
@@ -7672,7 +7747,10 @@ class Compare_Arrays_Results():
|
|
7672
7747
|
|
7673
7748
|
# on attribue une matrice par interface graphique
|
7674
7749
|
ref = elts[0]
|
7675
|
-
for curelt, curmap in zip(elts, self.mapviewers):
|
7750
|
+
for baselt, curelt, curmap in zip(self.elements, elts, self.mapviewers):
|
7751
|
+
|
7752
|
+
# if self.type in (Comp_Type.RES2D, Comp_Type.RES2D_GPU):
|
7753
|
+
# curmap.active_res2d = baselt
|
7676
7754
|
|
7677
7755
|
curmap.removeobj_from_id(curelt.idx)
|
7678
7756
|
|
@@ -7683,7 +7761,7 @@ class Compare_Arrays_Results():
|
|
7683
7761
|
# diff = self.diff[0]
|
7684
7762
|
for curdiff, curmap in zip(self.diff, self.mapviewers_diff):
|
7685
7763
|
|
7686
|
-
curmap.removeobj_from_id(
|
7764
|
+
curmap.removeobj_from_id(curdiff.idx)
|
7687
7765
|
|
7688
7766
|
curdiff.change_gui(curmap)
|
7689
7767
|
curmap.active_array = curdiff
|
@@ -7731,7 +7809,7 @@ class Compare_Arrays_Results():
|
|
7731
7809
|
curmap.add_object('array', newobj = curelt, ToCheck = True, id = curelt.idx)
|
7732
7810
|
|
7733
7811
|
for curdiff, curmap in zip(self.diff, self.mapviewers_diff):
|
7734
|
-
curmap.add_object('array', newobj = curdiff, ToCheck = True, id =
|
7812
|
+
curmap.add_object('array', newobj = curdiff, ToCheck = True, id = curdiff.idx)
|
7735
7813
|
|
7736
7814
|
if self.independent:
|
7737
7815
|
for curmap in self.mapviewers + self.mapviewers_diff:
|
wolfhece/PyGui.py
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
from os import scandir, getcwd, makedirs
|
2
|
-
|
2
|
+
from os.path import exists, join, isdir, isfile, dirname, normpath, splitext
|
3
3
|
from pathlib import Path
|
4
4
|
import numpy.ma as ma
|
5
5
|
import wx
|
6
6
|
from wx.lib.busy import BusyInfo
|
7
|
+
import logging
|
8
|
+
from pathlib import Path
|
7
9
|
|
8
10
|
from .apps.splashscreen import WolfLauncher
|
9
11
|
from .wolf_array import WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_MB_SINGLE, WolfArray,getkeyblock, WolfArray_Sim2D
|
10
12
|
from .PyTranslate import _
|
11
13
|
from .PyDraw import WolfMapViewer,imagetexture
|
12
|
-
from .PyParams import Wolf_Param
|
13
|
-
from .PyVertexvectors import Grid
|
14
|
-
from .RatingCurve import SPWMIGaugingStations,SPWDCENNGaugingStations
|
15
|
-
from .PyGuiHydrology import GuiHydrology
|
16
|
-
from .Results2DGPU import wolfres2DGPU
|
17
|
-
from .hydrology.Catchment import Catchment
|
18
|
-
from .hydrology.forcedexchanges import forced_exchanges
|
19
|
-
from .mesh2d.wolf2dprev import *
|
20
14
|
|
21
15
|
try:
|
22
16
|
from .hydrometry_hece.kiwis_hece import hydrometry_hece as hydrometry
|
@@ -27,6 +21,15 @@ except:
|
|
27
21
|
from .PyConfig import WolfConfiguration, ConfigurationKeys
|
28
22
|
from .pylogging import create_wxlogwindow
|
29
23
|
|
24
|
+
from .RatingCurve import SPWMIGaugingStations,SPWDCENNGaugingStations
|
25
|
+
from .mesh2d.wolf2dprev import *
|
26
|
+
from .Results2DGPU import wolfres2DGPU
|
27
|
+
from .PyGuiHydrology import GuiHydrology
|
28
|
+
from .RatingCurve import SPWMIGaugingStations,SPWDCENNGaugingStations
|
29
|
+
from .hydrology.Catchment import Catchment
|
30
|
+
from .hydrology.forcedexchanges import forced_exchanges
|
31
|
+
from .PyParams import Wolf_Param
|
32
|
+
|
30
33
|
# FIXME : Is it necessary to override wx.Frame ? WolfMapManager is a wx.Frame.
|
31
34
|
# Is it sufficient to run a wx.App ?
|
32
35
|
class GenMapManager(wx.Frame):
|
@@ -143,7 +146,7 @@ class MapManager(GenMapManager):
|
|
143
146
|
|
144
147
|
self.setup_mapviewer(title = 'Wolf - main data manager', wolfparent=self)
|
145
148
|
|
146
|
-
dir_hydro =
|
149
|
+
dir_hydro = join(getcwd(),'data\\hydrometry')
|
147
150
|
if not exists(dir_hydro):
|
148
151
|
makedirs(dir_hydro, exist_ok=True)
|
149
152
|
|
@@ -171,11 +174,11 @@ class GPU2DModel(GenMapManager):
|
|
171
174
|
return
|
172
175
|
self.mydir =idir.GetPath()
|
173
176
|
else:
|
174
|
-
self.mydir=
|
177
|
+
self.mydir=normpath(dir)
|
175
178
|
|
176
179
|
ext=['.top','.frott','.cls_pos','.cls_Z','.hbin','.zbin','.srcq']
|
177
180
|
for myext in ext:
|
178
|
-
if
|
181
|
+
if exists(self.mydir+'//simul'+myext):
|
179
182
|
|
180
183
|
self.mapviewer.add_object(which='array',
|
181
184
|
filename=self.mydir+'//simul'+myext,
|
@@ -240,10 +243,10 @@ class HydrologyModel(GenMapManager):
|
|
240
243
|
return
|
241
244
|
self.mydir =idir.GetPath()
|
242
245
|
else:
|
243
|
-
self.mydir=
|
246
|
+
self.mydir=normpath(dir)
|
244
247
|
|
245
|
-
self.mydircharact=
|
246
|
-
self.mydirwhole=
|
248
|
+
self.mydircharact=join(self.mydir,'Characteristic_maps\\Drainage_basin')
|
249
|
+
self.mydirwhole=join(self.mydir,'Whole_basin\\')
|
247
250
|
|
248
251
|
self.mycatchment = Catchment('Mysim',self.mydir,False,True)
|
249
252
|
self.myexchanges = forced_exchanges(self.mydir)
|
@@ -291,7 +294,7 @@ class HydrologyModel(GenMapManager):
|
|
291
294
|
for curfile in self.files_hydrology_vectors['Whole_basin']:
|
292
295
|
curext=curfile[0]
|
293
296
|
curidx=curfile[1]
|
294
|
-
if
|
297
|
+
if exists(self.mydirwhole+curext):
|
295
298
|
self.mapviewer.add_object(which='vector',filename=self.mydirwhole+curext,id=curidx,ToCheck=False)
|
296
299
|
|
297
300
|
self.mapviewer.add_object(which='vector',newobj=self.myexchanges.mysegs,id='Forced exchanges',ToCheck=False)
|
@@ -372,7 +375,7 @@ class Wolf2DModel(GenMapManager):
|
|
372
375
|
@base_file Directroy where the model should reside.
|
373
376
|
@myparam The parameters to build the model with.
|
374
377
|
"""
|
375
|
-
assert
|
378
|
+
assert isdir(Path(base_file).parent), \
|
376
379
|
f"When creating from parameters you must give a path containing the generic final name, prepended by a an existing directory (you gave a directory: {base_file} which doesn't exist)"
|
377
380
|
|
378
381
|
self.mydir = Path(base_file).parent.as_posix()
|
@@ -518,8 +521,7 @@ class Wolf2DModel(GenMapManager):
|
|
518
521
|
if dir != '':
|
519
522
|
# Either a directory or a file "/_/_/_/dir/simul" for example.
|
520
523
|
|
521
|
-
assert
|
522
|
-
#assert os.path.isdir(dir), f"'{dir}' is not a directory"
|
524
|
+
assert exists(dir) or dirname(dir), f"'{dir}' does nto exists"
|
523
525
|
|
524
526
|
if dir=='':
|
525
527
|
if self.wx_exists:
|
@@ -535,14 +537,14 @@ class Wolf2DModel(GenMapManager):
|
|
535
537
|
|
536
538
|
self.mydir =idir.GetPath()
|
537
539
|
else:
|
538
|
-
self.mydir=
|
540
|
+
self.mydir=normpath(dir)
|
539
541
|
|
540
542
|
if self.wx_exists:
|
541
543
|
wait_dlg, wait_cursor = BusyInfo(_('Opening 2D model')), wx.BusyCursor()
|
542
544
|
self.setup_mapviewer(title='2D model : '+self.mydir, wolfparent=self)
|
543
545
|
|
544
546
|
try:
|
545
|
-
if
|
547
|
+
if exists(self.mydir) and isfile(self.mydir): # Either a file or doesn't exist
|
546
548
|
assert not Path(self.mydir).suffix, \
|
547
549
|
"A generic file path should have no extension," \
|
548
550
|
f" we have {self.mydir}"
|
@@ -554,8 +556,8 @@ class Wolf2DModel(GenMapManager):
|
|
554
556
|
# or a path to the generic file. Morevoer the
|
555
557
|
# MNAP code confuses the generic name and the
|
556
558
|
# .MNAP name when checking if it can load an array.
|
557
|
-
if not
|
558
|
-
self.mydir =
|
559
|
+
if not exists(self.mydir):
|
560
|
+
self.mydir = dirname(self.mydir)
|
559
561
|
|
560
562
|
self.filenamegen=""
|
561
563
|
second_choice = None
|
@@ -563,9 +565,9 @@ class Wolf2DModel(GenMapManager):
|
|
563
565
|
scandir_obj = scandir(self.mydir)
|
564
566
|
for curfile in scandir_obj:
|
565
567
|
if curfile.is_file():
|
566
|
-
ext=
|
568
|
+
ext=splitext(curfile)
|
567
569
|
if len(ext[1])==0:
|
568
|
-
self.filenamegen =
|
570
|
+
self.filenamegen = join(self.mydir,curfile.name)
|
569
571
|
break
|
570
572
|
elif ext[1] == ".sux":
|
571
573
|
# Some extension present, we choose .sux because
|
wolfhece/apps/ManageParams.py
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
import wx
|
2
2
|
|
3
|
-
|
4
|
-
from ..PyTranslate import _
|
5
|
-
from ..PyParams import Wolf_Param
|
6
|
-
except:
|
7
|
-
from wolfhece.PyTranslate import _
|
8
|
-
from wolfhece.PyParams import Wolf_Param
|
3
|
+
from ..PyTranslate import _
|
9
4
|
|
10
5
|
def main():
|
11
6
|
ex = wx.App()
|
7
|
+
|
8
|
+
from .splashscreen import WolfLauncher
|
9
|
+
first_launch = WolfLauncher(play_sound=False)
|
10
|
+
|
11
|
+
from ..PyParams import Wolf_Param
|
12
|
+
|
12
13
|
frame = Wolf_Param(None,"Params")
|
13
14
|
ex.MainLoop()
|
14
15
|
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import wx
|
2
2
|
|
3
|
-
|
4
|
-
from ..PyTranslate import _
|
5
|
-
from ..hydrology.Optimisation import Optimisation
|
6
|
-
except:
|
7
|
-
from wolfhece.PyTranslate import _
|
8
|
-
from wolfhece.hydrology.Optimisation import Optimisation
|
3
|
+
from ..PyTranslate import _
|
9
4
|
|
10
5
|
def main():
|
11
6
|
app = wx.App()
|
7
|
+
|
8
|
+
from .splashscreen import WolfLauncher
|
9
|
+
first_launch = WolfLauncher(play_sound=False)
|
10
|
+
|
11
|
+
from ..hydrology.Optimisation import Optimisation
|
12
|
+
|
12
13
|
myOpti = Optimisation()
|
13
14
|
myOpti.Show()
|
14
15
|
app.MainLoop()
|
@@ -16,4 +17,3 @@ def main():
|
|
16
17
|
|
17
18
|
if __name__=='__main__':
|
18
19
|
main()
|
19
|
-
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
def main():
|
3
|
+
# Check if installation is complete
|
4
|
+
ret = 'Checking installation\n---------------------\n\n'
|
5
|
+
try:
|
6
|
+
from osgeo import ogr, gdal
|
7
|
+
ret += 'GDAL/OGR installed\n\n'
|
8
|
+
except:
|
9
|
+
ret += 'GDAL/OGR not installed\n Please install GDAL from https://github.com/cgohlke/geospatial-wheels/releases\n\n'
|
10
|
+
|
11
|
+
try:
|
12
|
+
from ..PyGui import MapManager
|
13
|
+
ret += 'Wolfhece installed\n\n'
|
14
|
+
except:
|
15
|
+
ret += 'Wolfhece not installed\n Retry installation : pip install wolfhece or pip install wolfhece --upgrade\n\n'
|
16
|
+
|
17
|
+
print(ret)
|
18
|
+
|
19
|
+
if __name__=='__main__':
|
20
|
+
main()
|
wolfhece/apps/curvedigitizer.py
CHANGED
wolfhece/apps/isocurrent.py
CHANGED
wolfhece/apps/version.py
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
class WolfVersion():
|
3
|
+
|
4
|
+
def __init__(self):
|
5
|
+
|
6
|
+
self.major = 2
|
7
|
+
self.minor = 0
|
8
|
+
self.patch = 23
|
9
|
+
|
10
|
+
def __str__(self):
|
11
|
+
|
12
|
+
return self.get_version()
|
13
|
+
|
14
|
+
def get_version(self):
|
15
|
+
|
16
|
+
return f'{self.major}.{self.minor}.{self.patch}'
|
17
|
+
|
18
|
+
def print_version(self):
|
19
|
+
|
20
|
+
print(f'WolfHece version {self.major}.{self.minor}.{self.patch}')
|
wolfhece/apps/wolf.py
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
import wx
|
2
|
-
|
3
2
|
from ..PyTranslate import _
|
4
|
-
from ..PyGui import MapManager
|
5
|
-
|
6
|
-
# try:
|
7
|
-
# from ..PyTranslate import _
|
8
|
-
# from ..PyGui import MapManager
|
9
|
-
# except:
|
10
|
-
# from wolfhece.PyTranslate import _
|
11
|
-
# from wolfhece.PyGui import MapManager
|
12
3
|
|
13
4
|
def main():
|
14
5
|
ex = wx.App()
|
6
|
+
|
7
|
+
from .splashscreen import WolfLauncher
|
8
|
+
first_launch = WolfLauncher(play_sound=False)
|
9
|
+
|
10
|
+
from ..PyGui import MapManager
|
11
|
+
|
15
12
|
mywolf=MapManager()
|
16
13
|
ex.MainLoop()
|
17
14
|
|
wolfhece/apps/wolf2D.py
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
import wx
|
2
|
-
from wolfhece.PyGui import Wolf2DModel
|
3
2
|
|
4
3
|
def main():
|
5
4
|
ex = wx.App()
|
5
|
+
|
6
|
+
from .splashscreen import WolfLauncher
|
7
|
+
first_launch = WolfLauncher(play_sound=False)
|
8
|
+
|
9
|
+
from ..PyGui import Wolf2DModel
|
10
|
+
|
6
11
|
mydro=Wolf2DModel()
|
7
12
|
ex.MainLoop()
|
8
13
|
|
9
14
|
if __name__=='__main__':
|
10
15
|
main()
|
11
|
-
|
@@ -6,14 +6,9 @@ from pathlib import Path
|
|
6
6
|
from typing import Union
|
7
7
|
|
8
8
|
#Import des modules WOLF
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
from ..wolf_array import WolfArray
|
13
|
-
except:
|
14
|
-
from wolfhece.PyTranslate import _
|
15
|
-
from wolfhece.PyDraw import WolfMapViewer
|
16
|
-
from wolfhece.wolf_array import WolfArray
|
9
|
+
from ..PyTranslate import _
|
10
|
+
from ..PyDraw import WolfMapViewer
|
11
|
+
from ..wolf_array import WolfArray
|
17
12
|
|
18
13
|
def main(mydir:Path=None, ListArrays:list[WolfArray]=None):
|
19
14
|
"""
|
wolfhece/apps/wolfhydro.py
CHANGED
@@ -1,14 +1,15 @@
|
|
1
|
-
import os
|
2
1
|
import wx
|
3
|
-
|
4
|
-
|
5
|
-
from ..PyGui import HydrologyModel
|
6
|
-
except:
|
7
|
-
from wolfhece.PyTranslate import _
|
8
|
-
from wolfhece.PyGui import HydrologyModel
|
2
|
+
|
3
|
+
from ..PyTranslate import _
|
9
4
|
|
10
5
|
def main(strmydir=''):
|
11
6
|
ex = wx.App()
|
7
|
+
|
8
|
+
from .splashscreen import WolfLauncher
|
9
|
+
first_launch = WolfLauncher(play_sound=False)
|
10
|
+
|
11
|
+
from ..PyGui import HydrologyModel
|
12
|
+
|
12
13
|
exLocale = wx.Locale()
|
13
14
|
exLocale.Init(wx.LANGUAGE_ENGLISH)
|
14
15
|
mydro=HydrologyModel()
|
wolfhece/cli.py
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
|
2
|
+
def check():
|
3
|
+
""" Main wolf application : Check """
|
4
|
+
from .apps.check_install import main
|
5
|
+
main()
|
6
|
+
|
2
7
|
def wolf():
|
3
8
|
""" Main wolf application : Map Manager"""
|
4
9
|
from .apps.wolf import main
|
@@ -44,7 +49,7 @@ def compare():
|
|
44
49
|
# arguments
|
45
50
|
print("Total arguments passed:", n)
|
46
51
|
assert n in [2,3], _('Usage : wolfcompare <directory> or wolfcompare <file1> <file2>')
|
47
|
-
|
52
|
+
|
48
53
|
if n==2:
|
49
54
|
mydir = Path(sys.argv[1])
|
50
55
|
if mydir.exists():
|
wolfhece/libs/WolfDll.dll
CHANGED
Binary file
|
wolfhece/mesh2d/wolf2dprev.py
CHANGED
@@ -19,7 +19,8 @@ import logging
|
|
19
19
|
from enum import Enum
|
20
20
|
|
21
21
|
from ..wolf_array import WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_SINGLE, WolfArray, WolfArrayMB, WolfArrayMNAP, \
|
22
|
-
header_wolf,WolfArray_Sim2D
|
22
|
+
header_wolf, WolfArray_Sim2D, WolfArrayMNAP, WOLF_ARRAY_MB_SINGLE, WOLF_ARRAY_FULL_LOGICAL, WOLF_ARRAY_FULL_SINGLE, getkeyblock
|
23
|
+
|
23
24
|
from ..PyVertexvectors import *
|
24
25
|
from ..PyVertex import getIfromRGB
|
25
26
|
from ..PyTranslate import _
|
@@ -2985,3 +2986,91 @@ class xy_file():
|
|
2985
2986
|
myvect.add_vertex(curvert)
|
2986
2987
|
|
2987
2988
|
self.myzones.find_minmax(True)
|
2989
|
+
|
2990
|
+
|
2991
|
+
class prev_sim2D():
|
2992
|
+
|
2993
|
+
def __init__(self, fname:str) -> None:
|
2994
|
+
|
2995
|
+
from pathlib import Path
|
2996
|
+
|
2997
|
+
self.filename = fname
|
2998
|
+
self.mydir = Path(fname).parent.as_posix()
|
2999
|
+
self.filenamegen = self.filename
|
3000
|
+
self.myparam = prev_parameters_simul(self)
|
3001
|
+
self.myparam.read_file()
|
3002
|
+
self.mymnap = WolfArrayMNAP(self.filenamegen)
|
3003
|
+
|
3004
|
+
self.files_MB_array={'Initial Conditions':[
|
3005
|
+
('.topini','Bed elevation [m]',WOLF_ARRAY_MB_SINGLE),
|
3006
|
+
('.hbinb','Water depth [m]',WOLF_ARRAY_MB_SINGLE),
|
3007
|
+
('.qxbinb','Discharge X [m²/s]',WOLF_ARRAY_MB_SINGLE),
|
3008
|
+
('.qybinb','Discharge Y [m²/s]',WOLF_ARRAY_MB_SINGLE),
|
3009
|
+
('.frotini','Roughness coeff',WOLF_ARRAY_MB_SINGLE)
|
3010
|
+
]}
|
3011
|
+
|
3012
|
+
self.files_fine_array={'Characteristics':[
|
3013
|
+
('.napbin','Mask [-]',WOLF_ARRAY_FULL_LOGICAL),
|
3014
|
+
('.top','Bed Elevation [m]',WOLF_ARRAY_FULL_SINGLE),
|
3015
|
+
('.topini_fine','Bed Elevation - computed [m]',WOLF_ARRAY_FULL_SINGLE),
|
3016
|
+
('.frot','Roughness coefficient [law dependent]',WOLF_ARRAY_FULL_SINGLE),
|
3017
|
+
('.inf','Infiltration zone [-]',WOLF_ARRAY_FULL_SINGLE),
|
3018
|
+
('.hbin','Initial water depth [m]',WOLF_ARRAY_FULL_SINGLE),
|
3019
|
+
('.qxbin','Initial discharge along X [m^2/s]',WOLF_ARRAY_FULL_SINGLE),
|
3020
|
+
('.qybin','Initial discharge along Y [m^2/s]',WOLF_ARRAY_FULL_SINGLE)
|
3021
|
+
]}
|
3022
|
+
|
3023
|
+
def get_header(self):
|
3024
|
+
curhead = header_wolf()
|
3025
|
+
|
3026
|
+
curhead.nbx = self.myparam.nxfin
|
3027
|
+
curhead.nby = self.myparam.nyfin
|
3028
|
+
|
3029
|
+
curhead.dx = self.myparam.dxfin
|
3030
|
+
curhead.dy = self.myparam.dyfin
|
3031
|
+
|
3032
|
+
curhead.origx = self.myparam.xminfin
|
3033
|
+
curhead.origy = self.myparam.yminfin
|
3034
|
+
|
3035
|
+
curhead.translx = self.myparam.translx
|
3036
|
+
curhead.transly = self.myparam.transly
|
3037
|
+
|
3038
|
+
return curhead
|
3039
|
+
|
3040
|
+
def get_header_MB(self,abs=False):
|
3041
|
+
"""#> Renvoit un header avec les infos multi-blocs"""
|
3042
|
+
myheader:header_wolf
|
3043
|
+
myheader = self.mymnap.get_header(abs=abs)
|
3044
|
+
for curblock in self.mymnap.myblocks.values():
|
3045
|
+
myheader.head_blocks[getkeyblock(curblock.blockindex)] = curblock.get_header(abs=abs)
|
3046
|
+
return myheader
|
3047
|
+
|
3048
|
+
def verify_files(self):
|
3049
|
+
"""
|
3050
|
+
Vérification de la présence des en-têtes dans les différents fichiers
|
3051
|
+
"""
|
3052
|
+
|
3053
|
+
fhead = self.get_header()
|
3054
|
+
mbhead = self.get_header_MB()
|
3055
|
+
|
3056
|
+
fine = self.files_fine_array['Characteristics']
|
3057
|
+
for curextent,text,wolftype in fine:
|
3058
|
+
fname = self.filenamegen + curextent
|
3059
|
+
if exists(fname):
|
3060
|
+
logging.info(f'Verifying header for {fname}')
|
3061
|
+
fname += '.txt'
|
3062
|
+
fhead.write_txt_header(fname,wolftype)
|
3063
|
+
|
3064
|
+
mb = self.files_MB_array['Initial Conditions']
|
3065
|
+
for curextent,text,wolftype in mb:
|
3066
|
+
fname = self.filenamegen + curextent
|
3067
|
+
if exists(fname):
|
3068
|
+
logging.info(f'Verifying header for {fname}')
|
3069
|
+
fname += '.txt'
|
3070
|
+
mbhead.write_txt_header(fname,wolftype)
|
3071
|
+
|
3072
|
+
fname = self.filenamegen + '.lst'
|
3073
|
+
if not exists(fname):
|
3074
|
+
logging.warning(f'File {fname} does not exist -- Creating it')
|
3075
|
+
with open(fname,'w') as f:
|
3076
|
+
f.write('0\n')
|
wolfhece/pyshields.py
CHANGED
@@ -503,24 +503,49 @@ def shieldsdia_dim(figax=None) -> tuple[plt.Figure,plt.Axes]:
|
|
503
503
|
|
504
504
|
return fig,ax
|
505
505
|
|
506
|
-
def get_Shields_2D_Manning(s:float, d:float, q:float, h:float,
|
506
|
+
def get_Shields_2D_Manning(s:float, d:float, q:float, h:float, n:float) -> float:
|
507
507
|
"""
|
508
|
-
Compute Shields dimensionless parameter for 2D flow with Manning friction law
|
508
|
+
Compute Shields dimensionless parameter for 2D flow with Manning/Strickler friction law
|
509
509
|
|
510
510
|
:param s : sediment density / water density [-]
|
511
511
|
:param d : sediment diameter [m]
|
512
512
|
:param q : discharge [m3/s]
|
513
513
|
:param h : water depth [m]
|
514
|
-
:param
|
514
|
+
:param n : Manning friction coefficient [m-1/3.s]
|
515
|
+
|
516
|
+
See also get_Shields_2D_Strickler
|
515
517
|
"""
|
516
518
|
# calcul de terme de pente de frottement
|
517
519
|
|
518
|
-
j = (q/h)**2.0 / K**2. / h**(4./3.)
|
520
|
+
# j = (q/h)**2.0 / K**2. / h**(4./3.)
|
521
|
+
denom = h**(4./3.)
|
522
|
+
if denom > 0.:
|
523
|
+
j = (q/h * n)**2.0 / denom
|
524
|
+
else:
|
525
|
+
j = 0.
|
519
526
|
|
520
527
|
shields = j*h / (d*(s-1))
|
521
528
|
|
522
529
|
return shields
|
523
530
|
|
531
|
+
def get_Shields_2D_Strickler(s:float, d:float, q:float, h:float, K:float) -> float:
|
532
|
+
"""
|
533
|
+
Compute Shields dimensionless parameter for 2D flow with Manning/Strickler friction law
|
534
|
+
|
535
|
+
:param s : sediment density / water density [-]
|
536
|
+
:param d : sediment diameter [m]
|
537
|
+
:param q : discharge [m3/s]
|
538
|
+
:param h : water depth [m]
|
539
|
+
:param K : Strickler friction coefficient [m1/3/s]
|
540
|
+
|
541
|
+
See also get_Shields_2D_Manning
|
542
|
+
"""
|
543
|
+
# calcul de terme de pente de frottement
|
544
|
+
|
545
|
+
n = 1./K
|
546
|
+
return get_Shields_2D_Manning(s, d, q, h, n)
|
547
|
+
|
548
|
+
|
524
549
|
def izbach_d_cr(q:float, h:float, rhom:float=2650, rho:float=RHO_PUREWATER, method='ridder') -> float:
|
525
550
|
"""
|
526
551
|
https://en.wikipedia.org/wiki/Izbash_formula
|
@@ -142,3 +142,10 @@ class Times_Selection(wx.Dialog):
|
|
142
142
|
self.times = times
|
143
143
|
for cur, curlb in zip(self.times, self.lb):
|
144
144
|
curlb[1].Set([str(curtime) for curtime in cur])
|
145
|
+
|
146
|
+
def get_times_idx(self):
|
147
|
+
"""
|
148
|
+
Retourne les index des temps sélectionnés dans les listes de temps.
|
149
|
+
|
150
|
+
"""
|
151
|
+
return [curlb[1].GetSelection() for curlb in self.lb]
|
wolfhece/wolfresults_2D.py
CHANGED
@@ -1374,7 +1374,7 @@ class OneWolfResult:
|
|
1374
1374
|
self._min_field_size = .1
|
1375
1375
|
|
1376
1376
|
self._sedimentdiam = 1e-3
|
1377
|
-
self._sedimentdensity = 2.
|
1377
|
+
self._sedimentdensity = 2.65
|
1378
1378
|
self._force_update_shields = True # Force la MAJ du Shields si le diametre ou la densité change
|
1379
1379
|
|
1380
1380
|
@property
|
@@ -1735,7 +1735,7 @@ class OneWolfResult:
|
|
1735
1735
|
self.sediment_diameter,
|
1736
1736
|
qnorm.array[i,j],
|
1737
1737
|
self.waterdepth.array[i,j],
|
1738
|
-
|
1738
|
+
self.rough_n.array.data[i,j]) for i,j in ij])
|
1739
1739
|
|
1740
1740
|
shields.array[ij[:,0],ij[:,1]] = _shields
|
1741
1741
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: wolfhece
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.23
|
4
4
|
Author-email: Stéphane Champailler <stephane.champailler@uliege.be>, Pierre Archambeau <pierre.archambeau@uliege.be>
|
5
5
|
Project-URL: Homepage, https://uee.uliege.be/hece
|
6
6
|
Project-URL: Issues, https://uee.uliege.be/hece
|
@@ -5,8 +5,8 @@ wolfhece/Lidar2002.py,sha256=sXZ6p8_EKI5l8fJswIMAABT6dqHKVexU52Tjl1uuisU,5770
|
|
5
5
|
wolfhece/ManageParams.py,sha256=Wgt5Zh7QBtyiwTAltPHunSLqt4XuVuRH76GTUrXabS4,219
|
6
6
|
wolfhece/PyConfig.py,sha256=oGSL1WsLM9uinlNP4zGBLK3uHPmBfduUi7R-VtWuRFA,8034
|
7
7
|
wolfhece/PyCrosssections.py,sha256=wdq-KYaLDBAa-gu3plWFBJN0Stx-oZX2dxs-iKjGBHo,111109
|
8
|
-
wolfhece/PyDraw.py,sha256=
|
9
|
-
wolfhece/PyGui.py,sha256=
|
8
|
+
wolfhece/PyDraw.py,sha256=C501ZkqfL42RBw0ytO7u3amB3bFiz5W4bobqratdt4A,322796
|
9
|
+
wolfhece/PyGui.py,sha256=TLhXjfEZhMRucPmtu1ntz-wlvX4phntPHG6jYhGPMUk,52687
|
10
10
|
wolfhece/PyGuiHydrology.py,sha256=t7EqOMyA1mkVg_aATMaduR-aqs04V-uRCifyHVmPqRs,7133
|
11
11
|
wolfhece/PyHydrographs.py,sha256=h2OfgmRkKc5XZn0iPFOVy60pGTSa5EFoUOEya0SeG7o,3411
|
12
12
|
wolfhece/PyPalette.py,sha256=nb9oPLZF-xx-yvOWvw2XVVmis6XTmYT2i7hvH3qPwAg,21932
|
@@ -23,7 +23,7 @@ wolfhece/ReadDataDCENN.py,sha256=4OMDBgkZ_v7OWmVhyQ-reab7MPxGhFEDY2qS8yThhdM,124
|
|
23
23
|
wolfhece/Results2DGPU.py,sha256=IyBOwA_S72rABMARCJp3xLSv9s8lQgDjWHsvCYwqohM,16579
|
24
24
|
wolfhece/__init__.py,sha256=FRDE8PiJAWxX9PMXsShRMZ8YADAY4WIgKMRh52rmhiw,23
|
25
25
|
wolfhece/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
|
26
|
-
wolfhece/cli.py,sha256=
|
26
|
+
wolfhece/cli.py,sha256=rHxZGgs_R776VCWhs36pYFoiuiQycwgGTVOLK-JNzjE,1937
|
27
27
|
wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
|
28
28
|
wolfhece/drawing_obj.py,sha256=rHMGdiihIv68WZnWFNdgiA51QhSm8EX-pykdyTSOdoo,3136
|
29
29
|
wolfhece/flow_SPWMI.py,sha256=mdiupyOem6_FZ0OSKn8Vq5Nmr9Av-j83d2YyRPLZFlQ,20658
|
@@ -38,7 +38,7 @@ wolfhece/pybridges.py,sha256=BVUESKoTdL1i_rdoe_jEsItgjKS0oqLohwrHj8snjxQ,57190
|
|
38
38
|
wolfhece/pydike.py,sha256=G4jfSZaAHHr4VWEJqnXSvEswXvlOz1yhbhQ6uu3AqyM,1943
|
39
39
|
wolfhece/pylogging.py,sha256=i9Zugx3t9dPc7nBwcP20L_R4_k_WawpAQsvbZU8l9Hg,4230
|
40
40
|
wolfhece/pypolygons_scen.py,sha256=lrUty990vT1iiILiIuTY8pNStiaZOi2dXWJuL9C-4Ps,26211
|
41
|
-
wolfhece/pyshields.py,sha256=
|
41
|
+
wolfhece/pyshields.py,sha256=YS6VVjjzoA-ZR6YRccqjMcW3McNqNLoQODC6TNNkmPw,22983
|
42
42
|
wolfhece/pyviews.py,sha256=hYdyrEvWF48dGBDOLIwmC28C0L8I28U4ohXk9nltF94,9666
|
43
43
|
wolfhece/pywalous.py,sha256=jwp251AzGBc0VmMzOqA0IJiRRa6yQIfccRM8lVGszIY,4474
|
44
44
|
wolfhece/rain_SPWMI.py,sha256=YqsF-yFro3y_a6MfVRFfr-Rxi7NR1gl_i8VX7scmzes,13548
|
@@ -49,19 +49,21 @@ wolfhece/wolf_hist.py,sha256=JpRXvzJLUP-RkSkvth3DQWglgTMFI2ZEUDb4RYOfeeI,3284
|
|
49
49
|
wolfhece/wolf_texture.py,sha256=quflEvi32lWSvOPa0aDCDl-8Jv-jGtLHbR2rdx67LsI,14883
|
50
50
|
wolfhece/wolf_tiles.py,sha256=F2JsJHdAP8fIffNJdG_J26bonCIRtIwMmxKFqdSCRDA,10088
|
51
51
|
wolfhece/wolf_vrt.py,sha256=wuMPAXNYTByNGNtvWhwW1fQelPstAPTQZECgXHZ0oTM,5180
|
52
|
-
wolfhece/wolfresults_2D.py,sha256=
|
52
|
+
wolfhece/wolfresults_2D.py,sha256=gGXTg1nKS3lPd8eYUsyUtMuzTcgNy8GpUBw5pbKUKTA,145714
|
53
53
|
wolfhece/xyz_file.py,sha256=aQOcTHkHRhXHxL_WxTHwzygp6e47San7SHSpxKQU0dw,5457
|
54
|
-
wolfhece/apps/ManageParams.py,sha256=
|
55
|
-
wolfhece/apps/Optimisation_hydro.py,sha256=
|
54
|
+
wolfhece/apps/ManageParams.py,sha256=heg5L4fMn0ettR7Bad_Q680o_JWnTbe3WFkL_9IziAk,312
|
55
|
+
wolfhece/apps/Optimisation_hydro.py,sha256=mHazBazTUGyxPbHPXhaQim8vqIeOOuKPjH0B48VWduA,374
|
56
56
|
wolfhece/apps/WolfPython.png,sha256=K3dcbeZUiJCFNwOAAlGMaRGLJ56yM8WD2I_0bk0xT1g,104622
|
57
57
|
wolfhece/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
|
-
wolfhece/apps/
|
59
|
-
wolfhece/apps/
|
58
|
+
wolfhece/apps/check_install.py,sha256=jrKR-njqnpIh6ZJqvP6KbDUPVCfwTNQj4glQhcyzs9o,630
|
59
|
+
wolfhece/apps/curvedigitizer.py,sha256=avWERHuVxPnJBOD_ibczwW_XG4vAenqWS8W1zjhBox8,4898
|
60
|
+
wolfhece/apps/isocurrent.py,sha256=4XnNWPa8mYUK7V4zdDRFrHFIXNG2AN2og3TqWKKcqjY,3811
|
60
61
|
wolfhece/apps/splashscreen.py,sha256=9BNArfcoRcyWglzFDQdLv2Dlvqz8w5qYKdE5zA66-Kw,2117
|
61
|
-
wolfhece/apps/
|
62
|
-
wolfhece/apps/
|
63
|
-
wolfhece/apps/
|
64
|
-
wolfhece/apps/
|
62
|
+
wolfhece/apps/version.py,sha256=AR5VuDo0rvldetfOPlc0jtls3HgiewRprm7x_oDnjKM,388
|
63
|
+
wolfhece/apps/wolf.py,sha256=gqfm-ZaUJqNsfCzmdtemSeqLw-GVdSVix-evg5WArJI,293
|
64
|
+
wolfhece/apps/wolf2D.py,sha256=gWD9ee2-1pw_nUxjgRaJMuSe4kUT-RWhOeoTt_Lh1mM,267
|
65
|
+
wolfhece/apps/wolfcompare2Darrays.py,sha256=MucG5h4sU4jicDVCKohiCDUVUqx_RQ1qKrZKokpnxhQ,3743
|
66
|
+
wolfhece/apps/wolfhydro.py,sha256=UK_YtyhsozvHQW_TRNccFHUr_bGOwHONMCqNjqoiqpM,381
|
65
67
|
wolfhece/blender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
68
|
wolfhece/blender/array2polygons.py,sha256=r7wIAsP2M4qJQqdhIRaLFwyQ8P0b9DeSBorBXG0Lyx8,8559
|
67
69
|
wolfhece/blender/ply.py,sha256=jTRUqRGD_XyGdE865Iv214DE8-m_ZscqlfTJP99lUOE,555
|
@@ -146,7 +148,7 @@ wolfhece/lazviewer/viewer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
146
148
|
wolfhece/lazviewer/viewer/viewer.exe,sha256=pF5nwE8vMWlEzkk-SOekae9zpOsPhTWhZbqaJntumJc,202240
|
147
149
|
wolfhece/lazviewer/viewer/viewer.py,sha256=8_MQCaQOS0Z_oRPiGoRy1lq-aCirReX3hWEBjQID0ig,24665
|
148
150
|
wolfhece/libs/MSVCP140.dll,sha256=2GrBWBI6JFuSdZLIDMAg_qKcjErdwURGbEYloAypx3o,565640
|
149
|
-
wolfhece/libs/WolfDll.dll,sha256=
|
151
|
+
wolfhece/libs/WolfDll.dll,sha256=s-Fwboq8EethHHmipZZjdniEQtyqZv6vS-bQRKNTVgs,132915712
|
150
152
|
wolfhece/libs/WolfDll_CD.dll,sha256=kC1svCwD1qSmppsiVfHwDkIvoJO_1l6TG1GfIxgiqQQ,131415040
|
151
153
|
wolfhece/libs/WolfOGL.c,sha256=tBWGfpFFe8gfRjImUUlqdxhcRpQ6ytEWU7Z6PC0v9as,1085242
|
152
154
|
wolfhece/libs/WolfOGL.pyx,sha256=kc1uxbO2wQx0Qoe7BVQnqTJgUWYx_Vtf1wzXMxzf8bI,65911
|
@@ -199,7 +201,7 @@ wolfhece/mesh2d/bc_manager.py,sha256=vSVogXy1x3A6fZKWA6mPZSGX2e3EAUVmEjD9Bgww_hU
|
|
199
201
|
wolfhece/mesh2d/cell_tracker.py,sha256=AR-Bty-QnrY1ni8Lwak2kU2UWMAJSBCF2ugl2YpfsB4,8660
|
200
202
|
wolfhece/mesh2d/config_manager.py,sha256=5im8G1efNXH-7km6JR__lTIKp93L4SlfXbAZwuVzfqs,14407
|
201
203
|
wolfhece/mesh2d/cst_2D_boundary_conditions.py,sha256=BaJeKHyJiKEFWBkTQeYsDBW86703ooj65MFVpPMgjLg,2810
|
202
|
-
wolfhece/mesh2d/wolf2dprev.py,sha256=
|
204
|
+
wolfhece/mesh2d/wolf2dprev.py,sha256=TAgIRb8X0-Ktoa5PtZQ8Z_ev99MlDw-VmeJgq8IeRZo,136108
|
203
205
|
wolfhece/models/HECE_169.pptx,sha256=OWJtsWz504A-REFaaxw8lwStHyQU2l7KEeiE7IZvtbk,3396930
|
204
206
|
wolfhece/models/blue.pal,sha256=NnjJnjnYVdQkG54RyPXvo4Tl9ytB0cN7zpiHtj1N6bw,33
|
205
207
|
wolfhece/models/diff16.pal,sha256=Pkp9kQ1GvmAKz3lgwohsw8eQySjVVKHbjhoWw-gZ6Nc,303
|
@@ -243,9 +245,9 @@ wolfhece/sounds/sonsw1.wav,sha256=HhuGeZ3iIyJdDALmM-jvGZDkKw3IZ3JXCuQZkN3Zjtc,21
|
|
243
245
|
wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,110636
|
244
246
|
wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
247
|
wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
|
246
|
-
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=
|
247
|
-
wolfhece-2.0.
|
248
|
-
wolfhece-2.0.
|
249
|
-
wolfhece-2.0.
|
250
|
-
wolfhece-2.0.
|
251
|
-
wolfhece-2.0.
|
248
|
+
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
|
249
|
+
wolfhece-2.0.23.dist-info/METADATA,sha256=ILTWNh7V6XuNr1w9QKnT4QnoEI10GW-NAZgHg06UJAg,2239
|
250
|
+
wolfhece-2.0.23.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
251
|
+
wolfhece-2.0.23.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
|
252
|
+
wolfhece-2.0.23.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
253
|
+
wolfhece-2.0.23.dist-info/RECORD,,
|
File without changes
|
File without changes
|