mirror of https://gitlab.com/pamhyr/pamhyr2
Mage: Some minor fix, add INI export and minor change.
parent
8149d0e6f7
commit
e66b7f665a
|
|
@ -160,7 +160,8 @@ class AbstractSolver(object):
|
||||||
def _data_ready(self):
|
def _data_ready(self):
|
||||||
s = self._process.readAll().data().decode()
|
s = self._process.readAll().data().decode()
|
||||||
if self._output is not None:
|
if self._output is not None:
|
||||||
self._output.put(s)
|
for x in s.split('\n'):
|
||||||
|
self._output.put(x)
|
||||||
|
|
||||||
def _finished(self, exit_code, exit_status):
|
def _finished(self, exit_code, exit_status):
|
||||||
if self._output is not None:
|
if self._output is not None:
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,8 @@ class Mage(AbstractSolver):
|
||||||
|
|
||||||
# Write header
|
# Write header
|
||||||
for edge in study.river.edges():
|
for edge in study.river.edges():
|
||||||
|
name = edge.name.replace(" ", "_")
|
||||||
|
if edge._name == "":
|
||||||
name = f"Reach_{edge.id}"
|
name = f"Reach_{edge.id}"
|
||||||
|
|
||||||
with open(os.path.join(repertory, f"{name}.ST"), "w+") as f:
|
with open(os.path.join(repertory, f"{name}.ST"), "w+") as f:
|
||||||
|
|
@ -88,8 +90,6 @@ class Mage(AbstractSolver):
|
||||||
|
|
||||||
f.write(f" 999.9990 999.9990 999.9990\n")
|
f.write(f" 999.9990 999.9990 999.9990\n")
|
||||||
|
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
def _export_BC(self, bound, repertory, qlog):
|
def _export_BC(self, bound, repertory, qlog):
|
||||||
|
|
@ -118,9 +118,8 @@ class Mage(AbstractSolver):
|
||||||
f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
|
f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
|
||||||
|
|
||||||
for d in bound.data:
|
for d in bound.data:
|
||||||
f.write(f"{d[0]:10.2f}{d[1]:10.3f}\n")
|
f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n")
|
||||||
|
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
|
@ -167,7 +166,33 @@ class Mage(AbstractSolver):
|
||||||
f.write(f"K{num} {bkp}{ekp}{coef_1}{coef_2}\n")
|
f.write(f"K{num} {bkp}{ekp}{coef_1}{coef_2}\n")
|
||||||
id += 1
|
id += 1
|
||||||
|
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
return files
|
||||||
|
|
||||||
|
@timer
|
||||||
|
def _export_INI(self, study, repertory, qlog):
|
||||||
|
files = []
|
||||||
|
|
||||||
|
if qlog is not None:
|
||||||
|
qlog.put("Export INI file")
|
||||||
|
|
||||||
|
# Write header
|
||||||
|
with open(os.path.join(repertory, "0.INI"), "w+") as f:
|
||||||
|
files.append("0.INI")
|
||||||
|
f.write("* This file is generate by PAMHYR, please don't modify\n")
|
||||||
|
|
||||||
|
reachs = study.river.edges()
|
||||||
|
for reach in reachs:
|
||||||
|
cond = study.river.initial_conditions.get(reach)
|
||||||
|
|
||||||
|
id = f"{reach.id+1:>3}"
|
||||||
|
id_sec = 1
|
||||||
|
for data in cond.data:
|
||||||
|
discharge = f"{data['flow']:>10.5f}"
|
||||||
|
cote = f"{data['elevation']:>11.6f}"
|
||||||
|
|
||||||
|
f.write(f" {id} {id_sec:>3} {discharge}{cote}\n")
|
||||||
|
id_sec += 1
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
|
@ -189,7 +214,6 @@ class Mage(AbstractSolver):
|
||||||
f.write("* OUTPUT\n")
|
f.write("* OUTPUT\n")
|
||||||
f.write(f"TRA 0.TRA\n")
|
f.write(f"TRA 0.TRA\n")
|
||||||
f.write(f"BIN 0.BIN\n")
|
f.write(f"BIN 0.BIN\n")
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def export(self, study, repertory, qlog = None):
|
def export(self, study, repertory, qlog = None):
|
||||||
|
|
@ -259,7 +283,6 @@ class Mage8(Mage):
|
||||||
|
|
||||||
f.write(f"{name} {value}\n")
|
f.write(f"{name} {value}\n")
|
||||||
|
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
|
@ -281,13 +304,13 @@ class Mage8(Mage):
|
||||||
if e._name == "":
|
if e._name == "":
|
||||||
name = f"Reach_{e.id}"
|
name = f"Reach_{e.id}"
|
||||||
|
|
||||||
|
id = f"Bief_{e.id+1}"
|
||||||
|
|
||||||
n1 = f"{e.node1.id:3}".replace(" ", "x")
|
n1 = f"{e.node1.id:3}".replace(" ", "x")
|
||||||
n2 = f"{e.node2.id:3}".replace(" ", "x")
|
n2 = f"{e.node2.id:3}".replace(" ", "x")
|
||||||
file = name + ".ST"
|
file = name + ".ST"
|
||||||
|
|
||||||
f.write(f"{name} {n1} {n2} {file}\n")
|
f.write(f"{id} {n1} {n2} {file}\n")
|
||||||
|
|
||||||
f.write("* END OF FILE")
|
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
|
@ -295,11 +318,12 @@ class Mage8(Mage):
|
||||||
def export(self, study, repertory, qlog = None):
|
def export(self, study, repertory, qlog = None):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
|
self._export_ST(study, repertory, qlog)
|
||||||
files = files + self._export_PAR(study, repertory, qlog)
|
files = files + self._export_PAR(study, repertory, qlog)
|
||||||
files = files + self._export_NET(study, repertory, qlog)
|
files = files + self._export_NET(study, repertory, qlog)
|
||||||
files = files + self._export_ST(study, repertory, qlog)
|
|
||||||
files = files + self._export_bound_cond(study, repertory, qlog)
|
files = files + self._export_bound_cond(study, repertory, qlog)
|
||||||
files = files + self._export_RUG(study, repertory, qlog)
|
files = files + self._export_RUG(study, repertory, qlog)
|
||||||
|
files = files + self._export_INI(study, repertory, qlog)
|
||||||
self._export_REP(study, repertory, files, qlog)
|
self._export_REP(study, repertory, files, qlog)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,6 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
|
||||||
self._study = study
|
self._study = study
|
||||||
self._config = config
|
self._config = config
|
||||||
self._solver = solver
|
self._solver = solver
|
||||||
self._process = QProcess(parent)
|
|
||||||
|
|
||||||
super(SolverLogWindow, self).__init__(
|
super(SolverLogWindow, self).__init__(
|
||||||
name=self._title, ui="SolverLog", parent=parent
|
name=self._title, ui="SolverLog", parent=parent
|
||||||
|
|
@ -90,17 +89,24 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
|
||||||
self.setup_alarm()
|
self.setup_alarm()
|
||||||
self.setup_connections()
|
self.setup_connections()
|
||||||
|
|
||||||
|
self._workdir = "/tmp/pamhyr/0/"
|
||||||
self._alarm.start(500)
|
self._alarm.start(500)
|
||||||
self._output = Queue()
|
self._output = Queue()
|
||||||
|
self._process = self.new_process(parent)
|
||||||
|
|
||||||
self._log(f" *** Export study {self._solver.name}", color="blue")
|
self._log(f" *** Export study {self._solver.name}", color="blue")
|
||||||
self._solver.export(self._study, "/tmp/pamhyr/0/", qlog = self._output)
|
self._solver.export(self._study, self._workdir, qlog = self._output)
|
||||||
|
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
self._log(f" *** Run solver {self._solver.name}", color="blue")
|
self._log(f" *** Run solver {self._solver.name}", color="blue")
|
||||||
self._solver.run(self._process, self._output)
|
self._solver.run(self._process, self._output)
|
||||||
|
|
||||||
|
def new_process(self, parent):
|
||||||
|
new = QProcess(parent)
|
||||||
|
new.setWorkingDirectory(self._workdir)
|
||||||
|
return new
|
||||||
|
|
||||||
def setup_action(self):
|
def setup_action(self):
|
||||||
self.find(QAction, "action_start").setEnabled(False)
|
self.find(QAction, "action_start").setEnabled(False)
|
||||||
self.find(QAction, "action_pause").setEnabled(True)
|
self.find(QAction, "action_pause").setEnabled(True)
|
||||||
|
|
@ -145,7 +151,7 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
|
||||||
def start(self):
|
def start(self):
|
||||||
self._log(" *** Start", color="blue")
|
self._log(" *** Start", color="blue")
|
||||||
if self._solver.is_stoped():
|
if self._solver.is_stoped():
|
||||||
self._process = QProcess(self._parent)
|
self._process = self.new_process(self._parent)
|
||||||
self._solver.start(self._process)
|
self._solver.start(self._process)
|
||||||
|
|
||||||
self.find(QAction, "action_start").setEnabled(False)
|
self.find(QAction, "action_start").setEnabled(False)
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,11 @@
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTextEdit" name="textEdit">
|
<widget class="QTextEdit" name="textEdit">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Monospace</family>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
<property name="documentTitle">
|
<property name="documentTitle">
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue