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

Solver: RubarBE: Add frictions export.

Showing with 59 additions and 17 deletions
+59 -17
......@@ -209,6 +209,11 @@ class Friction(SQLSubModel):
self._status.modified()
def contains_kp(self, kp):
return (
self._begin_kp <= kp <= self._end_kp
)
@property
def begin_strickler(self):
return self._begin_strickler
......
......@@ -207,28 +207,65 @@ class RubarBE(CommandLineSolver):
) as f:
for edge in study.river.enable_edges():
lm = len(edge) + 1
f.write(f"{lm:>13}\n")
f.write(f"{lm:>13}")
for mails in [edge.reach.inter_profiles_kp(),
edge.reach.profiles.get_kp()]:
ind = 0
for mail in mails:
f.write(f"{mail:15.3f}")
# TMAIL
ind = 0
for inter in edge.reach.inter_profiles_kp():
f.write(f"{inter:15.3f}")
ind += 1
if ind % 3 == 0:
f.write("\n")
ind += 1
if ind % 3 == 0:
if ind % 3 != 0:
f.write("\n")
# New line (if last iteration do not finish with new
# line)
if ind % 3 != 0:
f.write("\n")
def _export_stricklers(self, study, repertory, files, qlog, name="0"):
self._export_frot(study, repertory, files, qlog, name="0", version="")
self._export_frot(study, repertory, files, qlog, name="0", version="2")
# XTMAIL
ind = 0
for profile in edge.reach.profiles:
f.write(f" {profile.kp:15.3f} ")
def _export_frot(self, study, repertory, files, qlog, name="0", version=""):
if qlog is not None:
qlog.put("Export FROT file")
with open(
os.path.join(
repertory, f"frot{version}.{name}"
), "w+"
) as f:
for edge in study.river.enable_edges():
lm = len(edge) + 1
f.write(f"{lm:>6}\n")
# TODO: Take in consideration begin and end Stricklers
f_i = list(
map(
lambda f: (f.begin_kp, f.end_kp, f.begin_strickler),
reach.frictions
)
)
def get_stricklers_from_kp(kp):
return next(
map(
lambda s: (
s[2].medium if version == "2"
else s[2].minor
),
filter(
lambda f: f.contains_kp(kp), f_i
)
)
)
ind = 1
for mail in edge.reach.inter_profiles_kp():
coef = get_stricklers_from_kp(mail)
f.write(f"{ind:>6} {coef:>12.5f}")
ind += 1
if ind % 3 == 0:
f.write("\n")
f.write("\n")
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