Commit c698f2af authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

RubarBE (Rubar3): Add minimal rubar3.

No related merge requests found
Pipeline #58408 passed with stages
in 3 minutes and 25 seconds
Showing with 89 additions and 19 deletions
+89 -19
......@@ -30,13 +30,13 @@ from Model.Results.River.River import River, Reach, Profile
logger = logging.getLogger()
class RubarBE(CommandLineSolver):
_type = "rubarbe"
class Rubar3(CommandLineSolver):
_type = "rubar3"
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_solver = "@path @input -o @output"
......@@ -44,9 +44,9 @@ class RubarBE(CommandLineSolver):
@classmethod
def default_parameters(cls):
lst = super(RubarBE, cls).default_parameters()
# lst = super(Rubar3, cls).default_parameters()
lst += [
lst = [
("rubarbe_cfl", "0.50000E+00"),
("rubarbe_condam", "1"),
("rubarbe_condav", "3"),
......@@ -60,10 +60,10 @@ class RubarBE(CommandLineSolver):
("rubarbe_tinit", "000:00:00:00"),
("rubarbe_tmax", "999:99:99:00"),
("rubarbe_tiopdt", "000:00:00:00"),
("rubarbe_dt", "3000.0"),
("rubarbe_dt", "5.0"),
("rubarbe_ts", "999:99:99:00"),
("rubarbe_dtsauv", "999:99:99:00"),
("rubarbe_psave", "999:99:99:00"),
("rubarbe_dtsauv", "00:00:00:05"),
("rubarbe_psave", "00:00:00:05"),
("rubarbe_fdeb1", "1"),
("rubarbe_fdeb2", "10"),
("rubarbe_fdeb3", "100"),
......@@ -119,21 +119,21 @@ class RubarBE(CommandLineSolver):
##########
def cmd_args(self, study):
lst = super(RubarBE, self).cmd_args(study)
lst = super(Rubar3, self).cmd_args(study)
return lst
def input_param(self):
name = self._study.name
return f"{name}.REP"
return f"{name}"
def output_param(self):
name = self._study.name
return f"{name}.BIN"
return f"{name}"
def log_file(self):
name = self._study.name
return f"{name}.TRA"
return f"{name}"
def export(self, study, repertory, qlog=None):
self._study = study
......@@ -145,6 +145,10 @@ class RubarBE(CommandLineSolver):
self._export_mail(study, repertory, qlog, name=name)
self._export_condin(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"):
if qlog is not None:
......@@ -168,6 +172,9 @@ class RubarBE(CommandLineSolver):
name = param.name
value = param.value
if "all_" in name:
continue
if value != "":
# Value format
if value.count(':') == 3:
......@@ -276,7 +283,9 @@ class RubarBE(CommandLineSolver):
if label[0] == "r":
label = label[1].upper()
else:
label = lable[0]
label = label[1].upper()
else:
label = " "
y = point.y
z = point.z
......@@ -392,7 +401,7 @@ class RubarBE(CommandLineSolver):
l_h_s = self._export_condin_profile_height_speed(last, data)
# 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
it = iter(profiles)
......@@ -418,7 +427,7 @@ class RubarBE(CommandLineSolver):
ind += 1
# 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):
data = {}
......@@ -435,7 +444,66 @@ class RubarBE(CommandLineSolver):
z = data[profile.rk][0]
q = data[profile.rk][1]
height = z - profile.z_min()
#height = z - profile.z_min()
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 (
Mage7, Mage8, MageFake7,
)
from Solver.RubarBE import RubarBE
from Solver.RubarBE import Rubar3, RubarBE
_translate = QCoreApplication.translate
......@@ -32,6 +32,7 @@ solver_long_name = {
"mage8": "Mage v8",
# "mage_fake7": "Mage fake v7",
# "rubarbe": "RubarBE",
# "rubar3": "Rubar3",
}
solver_type_list = {
......@@ -40,4 +41,5 @@ solver_type_list = {
"mage8": Mage8,
# "mage_fake7": MageFake7,
# "rubarbe": RubarBE,
# "rubar3": Rubar3,
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment