mirror of https://gitlab.com/pamhyr/pamhyr2
RubarBE (Rubar3): Add minimal rubar3.
parent
7ebb683fac
commit
c698f2af2b
|
|
@ -30,13 +30,13 @@ from Model.Results.River.River import River, Reach, Profile
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class RubarBE(CommandLineSolver):
|
class Rubar3(CommandLineSolver):
|
||||||
_type = "rubarbe"
|
_type = "rubar3"
|
||||||
|
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
super(RubarBE, self).__init__(name)
|
super(Rubar3, self).__init__(name)
|
||||||
|
|
||||||
self._type = "rubarbe"
|
self._type = "rubar3"
|
||||||
|
|
||||||
self._cmd_input = ""
|
self._cmd_input = ""
|
||||||
self._cmd_solver = "@path @input -o @output"
|
self._cmd_solver = "@path @input -o @output"
|
||||||
|
|
@ -44,9 +44,9 @@ class RubarBE(CommandLineSolver):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def default_parameters(cls):
|
def default_parameters(cls):
|
||||||
lst = super(RubarBE, cls).default_parameters()
|
# lst = super(Rubar3, cls).default_parameters()
|
||||||
|
|
||||||
lst += [
|
lst = [
|
||||||
("rubarbe_cfl", "0.50000E+00"),
|
("rubarbe_cfl", "0.50000E+00"),
|
||||||
("rubarbe_condam", "1"),
|
("rubarbe_condam", "1"),
|
||||||
("rubarbe_condav", "3"),
|
("rubarbe_condav", "3"),
|
||||||
|
|
@ -60,10 +60,10 @@ class RubarBE(CommandLineSolver):
|
||||||
("rubarbe_tinit", "000:00:00:00"),
|
("rubarbe_tinit", "000:00:00:00"),
|
||||||
("rubarbe_tmax", "999:99:99:00"),
|
("rubarbe_tmax", "999:99:99:00"),
|
||||||
("rubarbe_tiopdt", "000:00:00:00"),
|
("rubarbe_tiopdt", "000:00:00:00"),
|
||||||
("rubarbe_dt", "3000.0"),
|
("rubarbe_dt", "5.0"),
|
||||||
("rubarbe_ts", "999:99:99:00"),
|
("rubarbe_ts", "999:99:99:00"),
|
||||||
("rubarbe_dtsauv", "999:99:99:00"),
|
("rubarbe_dtsauv", "00:00:00:05"),
|
||||||
("rubarbe_psave", "999:99:99:00"),
|
("rubarbe_psave", "00:00:00:05"),
|
||||||
("rubarbe_fdeb1", "1"),
|
("rubarbe_fdeb1", "1"),
|
||||||
("rubarbe_fdeb2", "10"),
|
("rubarbe_fdeb2", "10"),
|
||||||
("rubarbe_fdeb3", "100"),
|
("rubarbe_fdeb3", "100"),
|
||||||
|
|
@ -119,21 +119,21 @@ class RubarBE(CommandLineSolver):
|
||||||
##########
|
##########
|
||||||
|
|
||||||
def cmd_args(self, study):
|
def cmd_args(self, study):
|
||||||
lst = super(RubarBE, self).cmd_args(study)
|
lst = super(Rubar3, self).cmd_args(study)
|
||||||
|
|
||||||
return lst
|
return lst
|
||||||
|
|
||||||
def input_param(self):
|
def input_param(self):
|
||||||
name = self._study.name
|
name = self._study.name
|
||||||
return f"{name}.REP"
|
return f"{name}"
|
||||||
|
|
||||||
def output_param(self):
|
def output_param(self):
|
||||||
name = self._study.name
|
name = self._study.name
|
||||||
return f"{name}.BIN"
|
return f"{name}"
|
||||||
|
|
||||||
def log_file(self):
|
def log_file(self):
|
||||||
name = self._study.name
|
name = self._study.name
|
||||||
return f"{name}.TRA"
|
return f"{name}"
|
||||||
|
|
||||||
def export(self, study, repertory, qlog=None):
|
def export(self, study, repertory, qlog=None):
|
||||||
self._study = study
|
self._study = study
|
||||||
|
|
@ -145,6 +145,10 @@ class RubarBE(CommandLineSolver):
|
||||||
self._export_mail(study, repertory, qlog, name=name)
|
self._export_mail(study, repertory, qlog, name=name)
|
||||||
self._export_condin(study, repertory, qlog, name=name)
|
self._export_condin(study, repertory, qlog, name=name)
|
||||||
self._export_stricklers(study, repertory, qlog, name=name)
|
self._export_stricklers(study, repertory, qlog, name=name)
|
||||||
|
self._export_hydro(study, repertory, qlog, name=name)
|
||||||
|
self._export_condav(study, repertory, qlog, name=name)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def _export_donnee(self, study, repertory, qlog, name="0"):
|
def _export_donnee(self, study, repertory, qlog, name="0"):
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
|
|
@ -168,6 +172,9 @@ class RubarBE(CommandLineSolver):
|
||||||
name = param.name
|
name = param.name
|
||||||
value = param.value
|
value = param.value
|
||||||
|
|
||||||
|
if "all_" in name:
|
||||||
|
continue
|
||||||
|
|
||||||
if value != "":
|
if value != "":
|
||||||
# Value format
|
# Value format
|
||||||
if value.count(':') == 3:
|
if value.count(':') == 3:
|
||||||
|
|
@ -276,7 +283,9 @@ class RubarBE(CommandLineSolver):
|
||||||
if label[0] == "r":
|
if label[0] == "r":
|
||||||
label = label[1].upper()
|
label = label[1].upper()
|
||||||
else:
|
else:
|
||||||
label = lable[0]
|
label = label[1].upper()
|
||||||
|
else:
|
||||||
|
label = " "
|
||||||
|
|
||||||
y = point.y
|
y = point.y
|
||||||
z = point.z
|
z = point.z
|
||||||
|
|
@ -392,7 +401,7 @@ class RubarBE(CommandLineSolver):
|
||||||
l_h_s = self._export_condin_profile_height_speed(last, data)
|
l_h_s = self._export_condin_profile_height_speed(last, data)
|
||||||
|
|
||||||
# First mail
|
# First mail
|
||||||
f.write(f"{1:>5} {f_h_s[0]} {f_h_s[1]}")
|
f.write(f"{1:>5} {f_h_s[0]} {f_h_s[1]}\n")
|
||||||
|
|
||||||
ind = 2
|
ind = 2
|
||||||
it = iter(profiles)
|
it = iter(profiles)
|
||||||
|
|
@ -418,7 +427,7 @@ class RubarBE(CommandLineSolver):
|
||||||
ind += 1
|
ind += 1
|
||||||
|
|
||||||
# Last mail
|
# Last mail
|
||||||
f.write(f"{ind:>5} {f_h_s[0]} {f_h_s[1]}")
|
f.write(f"{ind:>5} {f_h_s[0]} {f_h_s[1]}\n")
|
||||||
|
|
||||||
def _export_condin_init_data(self, ics):
|
def _export_condin_init_data(self, ics):
|
||||||
data = {}
|
data = {}
|
||||||
|
|
@ -435,7 +444,66 @@ class RubarBE(CommandLineSolver):
|
||||||
z = data[profile.rk][0]
|
z = data[profile.rk][0]
|
||||||
q = data[profile.rk][1]
|
q = data[profile.rk][1]
|
||||||
|
|
||||||
height = z - profile.z_min()
|
#height = z - profile.z_min()
|
||||||
speed = profile.speed(q, z)
|
speed = profile.speed(q, z)
|
||||||
|
|
||||||
return height, speed
|
return z, speed
|
||||||
|
|
||||||
|
def _export_hydro(self, study, repertory, qlog, name="0"):
|
||||||
|
if qlog is not None:
|
||||||
|
qlog.put("Export HYDRO file")
|
||||||
|
|
||||||
|
with open(
|
||||||
|
os.path.join(
|
||||||
|
repertory, f"hydro.{name}"
|
||||||
|
), "w+"
|
||||||
|
) as f:
|
||||||
|
bcs = []
|
||||||
|
for edge in study.river.enable_edges():
|
||||||
|
for bound in study.river.boundary_condition.get_tab("liquid"):
|
||||||
|
# BC is an hydrogramme
|
||||||
|
if bound.bctype == "TD" or bound.bctype == "PC":
|
||||||
|
# BC is on input node of this reach
|
||||||
|
if bound.node == edge.node1:
|
||||||
|
bcs.append(bound)
|
||||||
|
|
||||||
|
for bc in bcs:
|
||||||
|
f.write(f"{len(bc)}\n")
|
||||||
|
for d0, d1 in bc.data:
|
||||||
|
f.write(f"{d0} {d1}\n")
|
||||||
|
|
||||||
|
def _export_condav(self, study, repertory, qlog, name="0"):
|
||||||
|
if qlog is not None:
|
||||||
|
qlog.put("Export CONDAV file")
|
||||||
|
|
||||||
|
with open(
|
||||||
|
os.path.join(
|
||||||
|
repertory, f"condav.{name}"
|
||||||
|
), "w+"
|
||||||
|
) as f:
|
||||||
|
bcs = []
|
||||||
|
for edge in study.river.enable_edges():
|
||||||
|
for bound in study.river.boundary_condition.get_tab("liquid"):
|
||||||
|
# BC is an hydrogramme
|
||||||
|
if bound.bctype == "ZD" or bound.bctype == "TZ":
|
||||||
|
# BC is on input node of this reach
|
||||||
|
if bound.node == edge.node2:
|
||||||
|
bcs.append(bound)
|
||||||
|
|
||||||
|
for bc in bcs:
|
||||||
|
f.write(f"{len(bc)}\n")
|
||||||
|
for d0, d1 in bc.data:
|
||||||
|
f.write(f"{d0} {d1}\n")
|
||||||
|
|
||||||
|
|
||||||
|
class RubarBE(Rubar3):
|
||||||
|
_type = "rubarbe"
|
||||||
|
|
||||||
|
def __init__(self, name):
|
||||||
|
super(RubarBE, self).__init__(name)
|
||||||
|
|
||||||
|
self._type = "rubarbe"
|
||||||
|
|
||||||
|
self._cmd_input = ""
|
||||||
|
self._cmd_solver = "@path @input -o @output"
|
||||||
|
self._cmd_output = ""
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ from Solver.GenericSolver import GenericSolver
|
||||||
from Solver.Mage import (
|
from Solver.Mage import (
|
||||||
Mage7, Mage8, MageFake7,
|
Mage7, Mage8, MageFake7,
|
||||||
)
|
)
|
||||||
from Solver.RubarBE import RubarBE
|
from Solver.RubarBE import Rubar3, RubarBE
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
@ -32,6 +32,7 @@ solver_long_name = {
|
||||||
"mage8": "Mage v8",
|
"mage8": "Mage v8",
|
||||||
# "mage_fake7": "Mage fake v7",
|
# "mage_fake7": "Mage fake v7",
|
||||||
# "rubarbe": "RubarBE",
|
# "rubarbe": "RubarBE",
|
||||||
|
# "rubar3": "Rubar3",
|
||||||
}
|
}
|
||||||
|
|
||||||
solver_type_list = {
|
solver_type_list = {
|
||||||
|
|
@ -40,4 +41,5 @@ solver_type_list = {
|
||||||
"mage8": Mage8,
|
"mage8": Mage8,
|
||||||
# "mage_fake7": MageFake7,
|
# "mage_fake7": MageFake7,
|
||||||
# "rubarbe": RubarBE,
|
# "rubarbe": RubarBE,
|
||||||
|
# "rubar3": Rubar3,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue