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 ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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 ...@@ -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 = { ...@@ -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 = { ...@@ -40,4 +41,5 @@ solver_type_list = {
"mage8": Mage8, "mage8": Mage8,
# "mage_fake7": MageFake7, # "mage_fake7": MageFake7,
# "rubarbe": RubarBE, # "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