Compare commits

...

3 Commits

2 changed files with 79 additions and 6 deletions

View File

@ -39,7 +39,7 @@ class Rubar3(CommandLineSolver):
self._type = "rubar3" self._type = "rubar3"
self._cmd_input = "" self._cmd_input = ""
self._cmd_solver = "@path @input -o @output" self._cmd_solver = "@path @args @input"
self._cmd_output = "" self._cmd_output = ""
@classmethod @classmethod
@ -129,7 +129,7 @@ class Rubar3(CommandLineSolver):
def output_param(self): def output_param(self):
name = self._study.name name = self._study.name
return f"{name}" return f"hydlim.{name}"
def log_file(self): def log_file(self):
name = self._study.name name = self._study.name
@ -143,10 +143,12 @@ class Rubar3(CommandLineSolver):
self._export_ts(study, repertory, qlog, name=name) self._export_ts(study, repertory, qlog, name=name)
self._export_geomac_i(study, repertory, qlog, name=name) self._export_geomac_i(study, repertory, qlog, name=name)
self._export_mail(study, repertory, qlog, name=name) self._export_mail(study, repertory, qlog, name=name)
self._export_devers(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_hydro(study, repertory, qlog, name=name)
self._export_condav(study, repertory, qlog, name=name) self._export_condav(study, repertory, qlog, name=name)
self._export_abshyd(study, repertory, qlog, name=name)
return True return True
@ -330,6 +332,50 @@ class Rubar3(CommandLineSolver):
if ind % 3 != 0: if ind % 3 != 0:
f.write("\n") f.write("\n")
def _export_devers(self, study, repertory, qlog, name="0"):
if qlog is not None:
qlog.put("Export ABSHYD file")
with open(
os.path.join(
repertory, f"abshyd.{name}"
), "w+"
) as f:
reach_ind = 1
for edge in study.river.enable_edges():
reach = edge.reach
lm = len(reach) + 1
f.write(f"{lm:>13}\n")
ind = 1
for mail in reach.inter_profiles_rk():
f.write(f"{ind:>4} {mail:15.3f} {reach_ind:>4}\n")
ind += 1
reach_ind += 1
def _export_abshyd(self, study, repertory, qlog, name="0"):
if qlog is not None:
qlog.put("Export DEVERS file")
with open(
os.path.join(
repertory, f"devers.{name}"
), "w+"
) as f:
reach_ind = 1
for edge in study.river.enable_edges():
reach = edge.reach
lm = len(reach) + 1
f.write(f"{lm:>13}\n")
ind = 1
for mail in reach.inter_profiles_rk():
f.write(f"{ind:>4} {0.0:15.3f} {0.0:15.3f} {1.0:>15.3f}\n")
ind += 1
reach_ind += 1
def _export_stricklers(self, study, repertory, qlog, name="0"): def _export_stricklers(self, study, repertory, qlog, name="0"):
self._export_frot(study, repertory, qlog, name=name, version="") self._export_frot(study, repertory, qlog, name=name, version="")
self._export_frot(study, repertory, qlog, name=name, version="2") self._export_frot(study, repertory, qlog, name=name, version="2")
@ -382,8 +428,9 @@ class Rubar3(CommandLineSolver):
) as f: ) as f:
for edge in study.river.enable_edges(): for edge in study.river.enable_edges():
reach = edge.reach reach = edge.reach
lm = len(reach) + 1
f.write(f"0.0\n") f.write(f"{0.0:>6.4f} {lm:>6}\n")
ics = study.river.initial_conditions.get(edge) ics = study.river.initial_conditions.get(edge)
data = self._export_condin_init_data(ics) data = self._export_condin_init_data(ics)
@ -496,6 +543,32 @@ class Rubar3(CommandLineSolver):
for d0, d1 in bc.data: for d0, d1 in bc.data:
f.write(f"{d1} {d0}\n") f.write(f"{d1} {d0}\n")
def read_hydlim(self, study, fname, results, qlog=None, name="0"):
return
@timer
def results(self, study, repertory, qlog=None, name="0"):
results = Results(
study=study,
solver=self,
repertory=repertory,
name=name,
)
results_file = f"hydlim.{name}"
fname = os.path.join(repertory, results_file)
if not os.path.isfile(fname):
logger.info(f"Result file {results_file} does not exist")
return None
try:
self.read_hydlim(study, fname, results, qlog, name=name)
except Exception as e:
logger.error(f"Failed to read results")
logger_exception(e)
return None
return results
class RubarBE(Rubar3): class RubarBE(Rubar3):
_type = "rubarbe" _type = "rubarbe"
@ -506,5 +579,5 @@ class RubarBE(Rubar3):
self._type = "rubarbe" self._type = "rubarbe"
self._cmd_input = "" self._cmd_input = ""
self._cmd_solver = "@path @input -o @output" self._cmd_solver = "@path @args @input"
self._cmd_output = "" self._cmd_output = ""

View File

@ -34,7 +34,7 @@ solver_long_name = {
# "mage_fake7": "Mage fake v7", # "mage_fake7": "Mage fake v7",
"adistswc": "Adis-TS_WC", "adistswc": "Adis-TS_WC",
# "rubarbe": "RubarBE", # "rubarbe": "RubarBE",
# "rubar3": "Rubar3", "rubar3": "Rubar3",
} }
solver_type_list = { solver_type_list = {
@ -44,5 +44,5 @@ solver_type_list = {
# "mage_fake7": MageFake7, # "mage_fake7": MageFake7,
"adistswc": AdisTSwc, "adistswc": AdisTSwc,
# "rubarbe": RubarBE, # "rubarbe": RubarBE,
# "rubar3": Rubar3, "rubar3": Rubar3,
} }