mirror of https://gitlab.com/pamhyr/pamhyr2
load boundary conditions from file
parent
7c4c772f43
commit
b582e133a1
|
|
@ -211,3 +211,23 @@ class TableModel(PamhyrTableModel):
|
||||||
)
|
)
|
||||||
self.layoutAboutToBeChanged.emit()
|
self.layoutAboutToBeChanged.emit()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
|
def read_from_file(self, file_name, bctype):
|
||||||
|
|
||||||
|
logger.debug(f"Import initial conditions from {file_name}")
|
||||||
|
data0 = []
|
||||||
|
data1 = []
|
||||||
|
if bctype == "ZD":
|
||||||
|
mult = 1
|
||||||
|
else:
|
||||||
|
mult = 60
|
||||||
|
with open(file_name, encoding="utf-8") as ini_file:
|
||||||
|
for line in ini_file:
|
||||||
|
if not (line.startswith("#") or
|
||||||
|
line.startswith("*") or
|
||||||
|
line.startswith("$")):
|
||||||
|
line = line.split()
|
||||||
|
data0.append(float(line[0]) * mult)
|
||||||
|
data1.append(line[1])
|
||||||
|
|
||||||
|
self.replace_data(data0, data1)
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,10 @@ from PyQt5.QtGui import (
|
||||||
QKeySequence,
|
QKeySequence,
|
||||||
)
|
)
|
||||||
|
|
||||||
from PyQt5 import QtCore
|
from PyQt5 import QtCore, QtWidgets
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
Qt, QVariant, QAbstractTableModel, QCoreApplication,
|
Qt, QVariant, QAbstractTableModel, QCoreApplication,
|
||||||
pyqtSlot, pyqtSignal,
|
pyqtSlot, pyqtSignal, QSettings,
|
||||||
)
|
)
|
||||||
|
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
|
|
@ -198,6 +198,8 @@ class EditBoundaryConditionWindow(PamhyrWindow):
|
||||||
self.find(QAction, "action_add").triggered.connect(self.add)
|
self.find(QAction, "action_add").triggered.connect(self.add)
|
||||||
self.find(QAction, "action_del").triggered.connect(self.delete)
|
self.find(QAction, "action_del").triggered.connect(self.delete)
|
||||||
self.find(QAction, "action_sort").triggered.connect(self.sort)
|
self.find(QAction, "action_sort").triggered.connect(self.sort)
|
||||||
|
self.find(QAction, "action_import").triggered\
|
||||||
|
.connect(self.import_from_file)
|
||||||
self.find(QAction, "action_generate_uniform").triggered.connect(
|
self.find(QAction, "action_generate_uniform").triggered.connect(
|
||||||
self.generate_uniform
|
self.generate_uniform
|
||||||
)
|
)
|
||||||
|
|
@ -293,6 +295,31 @@ class EditBoundaryConditionWindow(PamhyrWindow):
|
||||||
self._table.sort(False)
|
self._table.sort(False)
|
||||||
self.plot.update()
|
self.plot.update()
|
||||||
|
|
||||||
|
def import_from_file(self):
|
||||||
|
options = QFileDialog.Options()
|
||||||
|
settings = QSettings(QSettings.IniFormat,
|
||||||
|
QSettings.UserScope, 'MyOrg', )
|
||||||
|
options |= QFileDialog.DontUseNativeDialog
|
||||||
|
|
||||||
|
if self._data.bctype == "TD":
|
||||||
|
file_types = [self._trad["file_hyd"]]
|
||||||
|
if self._data.bctype == "TZ":
|
||||||
|
file_types = [self._trad["file_lim"]]
|
||||||
|
if self._data.bctype == "ZD":
|
||||||
|
file_types = [self._trad["file_ava"]]
|
||||||
|
file_types.append(self._trad["file_all"])
|
||||||
|
|
||||||
|
file_name, _ = QtWidgets.QFileDialog.getOpenFileName(
|
||||||
|
self,
|
||||||
|
self._trad["open_file"],
|
||||||
|
"",
|
||||||
|
";; ".join(file_types),
|
||||||
|
options=options
|
||||||
|
)
|
||||||
|
|
||||||
|
if file_name != "":
|
||||||
|
self._table.read_from_file(file_name, self._data.bctype)
|
||||||
|
|
||||||
def move_up(self):
|
def move_up(self):
|
||||||
row = self.index_selected_row()
|
row = self.index_selected_row()
|
||||||
self._table.move_up(row)
|
self._table.move_up(row)
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,17 @@ class BCETranslate(BCTranslate):
|
||||||
self._dict["Boundary Condition Options"] = _translate(
|
self._dict["Boundary Condition Options"] = _translate(
|
||||||
"BoundaryCondition", "Boundary Condition Options")
|
"BoundaryCondition", "Boundary Condition Options")
|
||||||
|
|
||||||
|
self._dict["open_file"] = _translate(
|
||||||
|
"BoundaryCondition", "Open a file")
|
||||||
|
self._dict["file_hyd"] = _translate(
|
||||||
|
"BoundaryCondition", "Mage hydrograph file (*.HYD)")
|
||||||
|
self._dict["file_lim"] = _translate(
|
||||||
|
"BoundaryCondition", "Mage limnigraph file (*.LIM)")
|
||||||
|
self._dict["file_lim"] = _translate(
|
||||||
|
"BoundaryCondition", "Mage rating curve file (*.AVA)")
|
||||||
|
self._dict["file_all"] = _translate(
|
||||||
|
"BoundaryCondition", "All files (*)")
|
||||||
|
|
||||||
self._sub_dict["table_headers"] = {
|
self._sub_dict["table_headers"] = {
|
||||||
"x": _translate("BoundaryCondition", "X"),
|
"x": _translate("BoundaryCondition", "X"),
|
||||||
"y": _translate("BoundaryCondition", "Y"),
|
"y": _translate("BoundaryCondition", "Y"),
|
||||||
|
|
|
||||||
|
|
@ -297,8 +297,6 @@ class InitialConditionTableModel(PamhyrTableModel):
|
||||||
if int(line[0]) == reach_id:
|
if int(line[0]) == reach_id:
|
||||||
data.append([line[4], line[2], line[3]])
|
data.append([line[4], line[2], line[3]])
|
||||||
|
|
||||||
print(data)
|
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
ReplaceDataCommand(
|
ReplaceDataCommand(
|
||||||
self._lst,
|
self._lst,
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@
|
||||||
<attribute name="toolBarBreak">
|
<attribute name="toolBarBreak">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
<addaction name="action_import"/>
|
||||||
<addaction name="action_add"/>
|
<addaction name="action_add"/>
|
||||||
<addaction name="action_del"/>
|
<addaction name="action_del"/>
|
||||||
<addaction name="action_sort"/>
|
<addaction name="action_sort"/>
|
||||||
|
|
@ -149,6 +150,18 @@
|
||||||
<string>Remove points to make the curve increasing</string>
|
<string>Remove points to make the curve increasing</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="action_import">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>ressources/import.png</normaloff>ressources/import.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Import</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Import from file</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
||||||
|
|
@ -192,17 +192,17 @@
|
||||||
<translation>Éditer les conditions aux limites</translation>
|
<translation>Éditer les conditions aux limites</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="39"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="50"/>
|
||||||
<source>X</source>
|
<source>X</source>
|
||||||
<translation>X</translation>
|
<translation>X</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="40"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="51"/>
|
||||||
<source>Y</source>
|
<source>Y</source>
|
||||||
<translation>Y</translation>
|
<translation>Y</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="45"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="56"/>
|
||||||
<source>Solid (kg/s)</source>
|
<source>Solid (kg/s)</source>
|
||||||
<translation>Solide (kg/s)</translation>
|
<translation>Solide (kg/s)</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
@ -242,19 +242,19 @@
|
||||||
<translation>Options des conditions limites</translation>
|
<translation>Options des conditions limites</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="48"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="59"/>
|
||||||
<source>No geometry</source>
|
<source>No geometry</source>
|
||||||
<translation>Pas de géométrie</translation>
|
<translation>Pas de géométrie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="51"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="62"/>
|
||||||
<source>No geometry found for this reach.
|
<source>No geometry found for this reach.
|
||||||
This feature requires a reach with a geometry.</source>
|
This feature requires a reach with a geometry.</source>
|
||||||
<translation>Aucune géométrie n'a été trouvée sur ce bief.
|
<translation>Aucune géométrie n'a été trouvée sur ce bief.
|
||||||
Cette fonctionnalité nécessite un bief muni d'une géométrie.</translation>
|
Cette fonctionnalité nécessite un bief muni d'une géométrie.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="56"/>
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="67"/>
|
||||||
<source>Warning</source>
|
<source>Warning</source>
|
||||||
<translation>Avertissement</translation>
|
<translation>Avertissement</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
@ -263,6 +263,31 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.</translati
|
||||||
<source>Pollutant</source>
|
<source>Pollutant</source>
|
||||||
<translation>Polluant</translation>
|
<translation>Polluant</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="38"/>
|
||||||
|
<source>Open a file</source>
|
||||||
|
<translation>Ouvrir un fichier</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="40"/>
|
||||||
|
<source>Mage hydrograph file (*.HYD)</source>
|
||||||
|
<translation>Hydrogramme Mage (*.HYD)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="42"/>
|
||||||
|
<source>Mage limnigraph file (*.LIM)</source>
|
||||||
|
<translation>Limnigramme Mage (*.LIM)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="44"/>
|
||||||
|
<source>Mage rating curve file (*.AVA)</source>
|
||||||
|
<translation>Courbe de tarage Mage (*.AVA)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../View/BoundaryCondition/Edit/translate.py" line="46"/>
|
||||||
|
<source>All files (*)</source>
|
||||||
|
<translation>Tous les fichiers (*)</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>BoundaryConditions</name>
|
<name>BoundaryConditions</name>
|
||||||
|
|
@ -2622,32 +2647,32 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.</translati
|
||||||
<translation>Exporter les données au format CSV</translation>
|
<translation>Exporter les données au format CSV</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="130"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="131"/>
|
||||||
<source>Generate uniform</source>
|
<source>Generate uniform</source>
|
||||||
<translation>Générer un regime uniforme</translation>
|
<translation>Générer un regime uniforme</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="133"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="134"/>
|
||||||
<source>Generate rating curve from Manning law</source>
|
<source>Generate rating curve from Manning law</source>
|
||||||
<translation>Générer une courbe de tarage (loi de Maning)</translation>
|
<translation>Générer une courbe de tarage (loi de Maning)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="138"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="139"/>
|
||||||
<source>Generate critical</source>
|
<source>Generate critical</source>
|
||||||
<translation>Générer régime critique</translation>
|
<translation>Générer régime critique</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="141"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="142"/>
|
||||||
<source>Generate rating curve as Q(z) = Sqrt(g*S(z)^3/L(z))</source>
|
<source>Generate rating curve as Q(z) = Sqrt(g*S(z)^3/L(z))</source>
|
||||||
<translation>Générer une courbe de tarage (Q(z) = Sqrt(g*S(z)^3/L(z)))</translation>
|
<translation>Générer une courbe de tarage (Q(z) = Sqrt(g*S(z)^3/L(z)))</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="146"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="147"/>
|
||||||
<source>Make increasing</source>
|
<source>Make increasing</source>
|
||||||
<translation>Augmenter</translation>
|
<translation>Augmenter</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="149"/>
|
<location filename="../View/ui/EditBoundaryConditions.ui" line="150"/>
|
||||||
<source>Remove points to make the curve increasing</source>
|
<source>Remove points to make the curve increasing</source>
|
||||||
<translation>Supprimer des points pour rendre la courbe croissante</translation>
|
<translation>Supprimer des points pour rendre la courbe croissante</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue