Compare commits

...

2 Commits

5 changed files with 52 additions and 48 deletions

View File

@ -104,7 +104,7 @@ class Profile(SQLSubModel):
return any(map(lambda ts: "sl" in self._data[ts], self._data)) return any(map(lambda ts: "sl" in self._data[ts], self._data))
def has_bedload(self): def has_bedload(self):
return any(map(lambda ts: "zfd" in self._data[ts], self._data)) return any(map(lambda ts: "sl" in self._data[ts], self._data))
@classmethod @classmethod
def _db_create(cls, execute, ext=""): def _db_create(cls, execute, ext=""):

View File

@ -1393,12 +1393,14 @@ class Mage8(Mage):
logger.info(f"compute river bed elevation...") logger.info(f"compute river bed elevation...")
zfd_lst = []
for r in reachs: for r in reachs:
z_min = r.geometry.get_z_min() z_min = r.geometry.get_z_min()
sls = list(map( sls = map(
lambda p: p.get_ts_key(ts_list[0], "sl")[0], lambda p: p.get_ts_key(ts_list[0], "sl")[0],
r.profiles r.profiles
)) )
z_br = list(map( z_br = list(map(
lambda z, sl: reduce( lambda z, sl: reduce(
lambda z, h: z - h[0], lambda z, h: z - h[0],
@ -1407,11 +1409,11 @@ class Mage8(Mage):
z_min, # Original geometry z_min, # Original geometry
sls # Original sediment layers sls # Original sediment layers
)) ))
for t in ts_list: for its, t in enumerate(ts_list):
sls = list(map( sls = map(
lambda p: p.get_ts_key(t, "sl")[0], lambda p: p.get_ts_key(t, "sl")[0],
r.profiles r.profiles
)) )
zfd = list(map( zfd = list(map(
lambda z, sl: reduce( lambda z, sl: reduce(
lambda z, h: z + h[0], lambda z, h: z + h[0],
@ -1420,8 +1422,13 @@ class Mage8(Mage):
z_br, # bedrock z_br, # bedrock
sls # Original sediment layers sls # Original sediment layers
)) ))
for i, p in enumerate(r.profiles):
r.set(i, t, "zfd", zfd[i]) zfd_lst.append(np.array(zfd))
table = results.get("table")
table["zfd"] = results.new_table_data(
"zfd", np.array(zfd_lst)
)
results.set("sediment_timestamps", ts) results.set("sediment_timestamps", ts)
logger.info(f"read_gra: ... end with {len(ts)} timestamp read") logger.info(f"read_gra: ... end with {len(ts)} timestamp read")

View File

@ -91,12 +91,14 @@ class CustomPlot(PamhyrPlot):
self.lines = {} self.lines = {}
def draw_bottom_with_bedload(self, reach): def draw_bottom_with_bedload(self, reach):
results = self.data[self._current_res_id]
table = results.get("table")["zfd"]
ts = results.get_timestamp_id(self._current_timestamp)
rk = reach.geometry.get_rk() rk = reach.geometry.get_rk()
z = list( z = list(
map( map(
lambda p: p.get_ts_key( lambda p: table[ts, p.global_index],
self._current_timestamp, "zfd"
),
reach.profiles reach.profiles
) )
) )
@ -106,7 +108,10 @@ class CustomPlot(PamhyrPlot):
def get_ts_zmin(self, profile, res_id): def get_ts_zmin(self, profile, res_id):
results = self.data[res_id] results = self.data[res_id]
reach = results.river.reach(self._current_reach) reach = results.river.reach(self._current_reach)
zfd = reach.profile(profile).get_key("zfd")
table = results.get("table")["zfd"]
zfd = table[:, reach.profile(profile).global_index]
return zfd return zfd
def _draw_rk(self): def _draw_rk(self):
@ -170,22 +175,14 @@ class CustomPlot(PamhyrPlot):
) )
else: else:
if reach.has_bedload(): if reach.has_bedload():
z_min1 = list( z_min1 = list(map(
map( lambda p: table["zfd"][id_ts, p.global_index],
lambda p: p.get_ts_key( reach1.profiles
self._current_timestamp, "zfd" ))
), z_min2 = list(map(
reach1.profiles lambda p: table["zfd"][id_ts, p.global_index],
) reach2.profiles
) ))
z_min2 = list(
map(
lambda p: p.get_ts_key(
self._current_timestamp, "zfd"
),
reach2.profiles
)
)
else: else:
z_min1 = reach1.geometry.get_z_min() z_min1 = reach1.geometry.get_z_min()
z_min2 = reach2.geometry.get_z_min() z_min2 = reach2.geometry.get_z_min()

View File

@ -103,12 +103,15 @@ class PlotRKC(PamhyrPlot):
self.draw_bottom_geometry(reach) self.draw_bottom_geometry(reach)
def draw_bottom_with_bedload(self, reach): def draw_bottom_with_bedload(self, reach):
results = self.results[self._current_res_id]
rk = reach.geometry.get_rk() rk = reach.geometry.get_rk()
table = results.get("table")["zfd"]
ts = results.get_timestamp_id(self._current_timestamp)
zfd = list( zfd = list(
map( map(
lambda p: p.get_ts_key( lambda p: table[ts, p.global_index],
self._current_timestamp, "zfd"
),
reach.profiles reach.profiles
) )
) )
@ -396,14 +399,13 @@ class PlotRKC(PamhyrPlot):
rk = reach.geometry.get_rk() rk = reach.geometry.get_rk()
# z = self.sl_compute_current_z(reach) # z = self.sl_compute_current_z(reach)
zfd = list( table = results.get("table")["zfd"]
map( ts = results.get_timestamp_id(self._current_timestamp)
lambda p: p.get_ts_key(
self._current_timestamp, "zfd" zfd = list(map(
), lambda p: table[ts, p.global_index],
reach.profiles reach.profiles
) ))
)
self.line_bottom.remove() self.line_bottom.remove()

View File

@ -891,17 +891,14 @@ class ResultsWindow(PamhyrWindow):
z = table["Z"] z = table["Z"]
q = table["Q"] q = table["Q"]
v = table["V"] v = table["V"]
zfd = table["zfd"]
if "bed_elevation" in y: if "bed_elevation" in y:
if reach.has_bedload(): if reach.has_bedload():
zmin = list( zmin = list(map(
map( lambda p: zfd[id_ts, p.global_index],
lambda p: p.get_ts_key( reach.profiles
timestamp, "zfd" ))
),
reach.profiles
)
)
else: else:
zmin = reach.geometry.get_z_min() zmin = reach.geometry.get_z_min()
my_dict[dict_y["bed_elevation"]] = zmin my_dict[dict_y["bed_elevation"]] = zmin
@ -1153,6 +1150,7 @@ class ResultsWindow(PamhyrWindow):
z = table["Z"][:, profile.global_index] z = table["Z"][:, profile.global_index]
q = table["Q"][:, profile.global_index] q = table["Q"][:, profile.global_index]
v = table["V"][:, profile.global_index] v = table["V"][:, profile.global_index]
zfd = table["zfd"][:, profile.global_index]
if self._current_results == 2: if self._current_results == 2:
reach1 = self._results[0].river.reach(self._reach) reach1 = self._results[0].river.reach(self._reach)
@ -1172,7 +1170,7 @@ class ResultsWindow(PamhyrWindow):
if "bed_elevation" in y: if "bed_elevation" in y:
if reach.has_bedload(): if reach.has_bedload():
z_min = profile.get_key("zfd") z_min = zfd
else: else:
z_min = [profile.geometry.z_min()] * len(self._timestamps) z_min = [profile.geometry.z_min()] * len(self._timestamps)