mirror of https://gitlab.com/pamhyr/pamhyr2
debug custom plots (compare resuts)
parent
8daf89d1c4
commit
e47edea63b
|
|
@ -85,6 +85,7 @@ class CustomPlot(PamhyrPlot):
|
||||||
)
|
)
|
||||||
|
|
||||||
self._axes = {}
|
self._axes = {}
|
||||||
|
self.lines = {}
|
||||||
|
|
||||||
def draw_bottom_with_bedload(self, reach):
|
def draw_bottom_with_bedload(self, reach):
|
||||||
self._bedrock = self.sl_compute_bedrock(reach)
|
self._bedrock = self.sl_compute_bedrock(reach)
|
||||||
|
|
@ -171,6 +172,9 @@ class CustomPlot(PamhyrPlot):
|
||||||
def _draw_rk(self):
|
def _draw_rk(self):
|
||||||
results = self.data[self._current_res_id]
|
results = self.data[self._current_res_id]
|
||||||
reach = results.river.reach(self._reach)
|
reach = results.river.reach(self._reach)
|
||||||
|
if self._current_res_id == 2: # compare results
|
||||||
|
reach1 = self.data[0].river.reach(self._reach)
|
||||||
|
reach2 = self.data[1].river.reach(self._reach)
|
||||||
rk = reach.geometry.get_rk()
|
rk = reach.geometry.get_rk()
|
||||||
if reach.has_sediment():
|
if reach.has_sediment():
|
||||||
z_min = self.draw_bottom_with_bedload(reach)
|
z_min = self.draw_bottom_with_bedload(reach)
|
||||||
|
|
@ -206,7 +210,8 @@ class CustomPlot(PamhyrPlot):
|
||||||
self._axes[ax].spines['right'].set_position(('outward', shift))
|
self._axes[ax].spines['right'].set_position(('outward', shift))
|
||||||
shift += 60
|
shift += 60
|
||||||
|
|
||||||
self.lines = {}
|
if len(self.lines) != 0:
|
||||||
|
self.lines = {}
|
||||||
if "bed_elevation" in self._y:
|
if "bed_elevation" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["bed_elevation"]]
|
ax = self._axes[unit["bed_elevation"]]
|
||||||
|
|
@ -255,7 +260,7 @@ class CustomPlot(PamhyrPlot):
|
||||||
)
|
)
|
||||||
self.lines["water_elevation"] = line
|
self.lines["water_elevation"] = line
|
||||||
|
|
||||||
if "bed_elevation" in self._y:
|
if "bed_elevation" in self._y and self._current_res_id != 2:
|
||||||
self.fill = ax.fill_between(
|
self.fill = ax.fill_between(
|
||||||
rk, z_min, z,
|
rk, z_min, z,
|
||||||
color='blue', alpha=0.5, interpolate=True
|
color='blue', alpha=0.5, interpolate=True
|
||||||
|
|
@ -372,20 +377,43 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "depth" in self._y:
|
if "depth" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["depth"]]
|
ax = self._axes[unit["depth"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.max_water_depth(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.max_water_depth(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.max_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.max_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
rk, d,
|
rk, d,
|
||||||
color='brown', lw=1.,
|
color='brown', lw=1.,
|
||||||
)
|
)
|
||||||
self.lines["depth"] = line
|
self.lines["depth"] = line
|
||||||
|
|
||||||
if self._envelop:
|
if self._envelop and self._current_res_id != 2:
|
||||||
|
|
||||||
ax = self._axes[unit["depth_envelop"]]
|
ax = self._axes[unit["depth_envelop"]]
|
||||||
|
|
||||||
|
|
@ -418,13 +446,35 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "mean_depth" in self._y:
|
if "mean_depth" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["mean_depth"]]
|
ax = self._axes[unit["mean_depth"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.mean_water_depth(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.mean_water_depth(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.mean_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.mean_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
rk, d,
|
rk, d,
|
||||||
|
|
@ -435,19 +485,53 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "froude" in self._y:
|
if "froude" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["froude"]]
|
ax = self._axes[unit["froude"]]
|
||||||
fr = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
fr = list(
|
||||||
lambda p:
|
map(
|
||||||
p.get_ts_key(self._timestamp, "V") /
|
lambda p:
|
||||||
sqrt(9.81 * (
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
p.geometry.wet_area(
|
sqrt(9.81 * (
|
||||||
p.get_ts_key(self._timestamp, "Z")) /
|
p.geometry.wet_area(
|
||||||
p.geometry.wet_width(
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
p.get_ts_key(self._timestamp, "Z"))
|
p.geometry.wet_width(
|
||||||
)),
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
reach.profiles
|
)),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
fr1 = list(
|
||||||
|
map(
|
||||||
|
lambda p:
|
||||||
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
|
p.geometry.wet_width(
|
||||||
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
|
)),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
fr2 = list(
|
||||||
|
map(
|
||||||
|
lambda p:
|
||||||
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
|
p.geometry.wet_width(
|
||||||
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
|
)),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
fr = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
fr1, fr2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
rk, fr, color='black', linestyle='--', lw=1.,
|
rk, fr, color='black', linestyle='--', lw=1.,
|
||||||
|
|
@ -457,13 +541,35 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "wet_area" in self._y:
|
if "wet_area" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["wet_area"]]
|
ax = self._axes[unit["wet_area"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.wet_area(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.wet_area(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
rk, d,
|
rk, d,
|
||||||
|
|
@ -483,6 +589,10 @@ class CustomPlot(PamhyrPlot):
|
||||||
def _redraw_rk(self):
|
def _redraw_rk(self):
|
||||||
results = self.data[self._current_res_id]
|
results = self.data[self._current_res_id]
|
||||||
reach = results.river.reach(self._reach)
|
reach = results.river.reach(self._reach)
|
||||||
|
if self._current_res_id == 2: # compare results
|
||||||
|
reach1 = self.data[0].river.reach(self._reach)
|
||||||
|
reach2 = self.data[1].river.reach(self._reach)
|
||||||
|
|
||||||
rk = reach.geometry.get_rk()
|
rk = reach.geometry.get_rk()
|
||||||
z_min = reach.geometry.get_z_min()
|
z_min = reach.geometry.get_z_min()
|
||||||
if reach.has_sediment():
|
if reach.has_sediment():
|
||||||
|
|
@ -514,7 +624,7 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "water_elevation" in self._y:
|
if "water_elevation" in self._y:
|
||||||
self.lines["water_elevation"][0].set_ydata(z)
|
self.lines["water_elevation"][0].set_ydata(z)
|
||||||
|
|
||||||
if "bed_elevation" in self._y:
|
if "bed_elevation" in self._y and self._current_res_id != 2:
|
||||||
ax = self._axes[unit["water_elevation"]]
|
ax = self._axes[unit["water_elevation"]]
|
||||||
self.fill.remove()
|
self.fill.remove()
|
||||||
self.fill = ax.fill_between(
|
self.fill = ax.fill_between(
|
||||||
|
|
@ -529,49 +639,153 @@ class CustomPlot(PamhyrPlot):
|
||||||
self.lines["velocity"][0].set_ydata(v)
|
self.lines["velocity"][0].set_ydata(v)
|
||||||
|
|
||||||
if "depth" in self._y:
|
if "depth" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.max_water_depth(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.max_water_depth(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.max_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.max_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["depth"][0].set_ydata(d)
|
self.lines["depth"][0].set_ydata(d)
|
||||||
|
|
||||||
if "mean_depth" in self._y:
|
if "mean_depth" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.mean_water_depth(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.mean_water_depth(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.mean_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.mean_water_depth(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["mean_depth"][0].set_ydata(d)
|
self.lines["mean_depth"][0].set_ydata(d)
|
||||||
|
|
||||||
if "froude" in self._y:
|
if "froude" in self._y:
|
||||||
fr = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
fr = list(
|
||||||
lambda p:
|
map(
|
||||||
p.get_ts_key(self._timestamp, "V") /
|
lambda p:
|
||||||
sqrt(9.81 * (
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
p.geometry.wet_area(
|
sqrt(9.81 * (
|
||||||
p.get_ts_key(self._timestamp, "Z")) /
|
p.geometry.wet_area(
|
||||||
p.geometry.wet_width(
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
p.get_ts_key(self._timestamp, "Z"))
|
p.geometry.wet_width(
|
||||||
)),
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
reach.profiles
|
)),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
fr1 = list(
|
||||||
|
map(
|
||||||
|
lambda p:
|
||||||
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
|
p.geometry.wet_width(
|
||||||
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
|
)),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
fr2 = list(
|
||||||
|
map(
|
||||||
|
lambda p:
|
||||||
|
p.get_ts_key(self._timestamp, "V") /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")) /
|
||||||
|
p.geometry.wet_width(
|
||||||
|
p.get_ts_key(self._timestamp, "Z"))
|
||||||
|
)),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
fr = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
fr1, fr2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["froude"][0].set_ydata(fr)
|
self.lines["froude"][0].set_ydata(fr)
|
||||||
|
|
||||||
if "wet_area" in self._y:
|
if "wet_area" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(
|
d = list(
|
||||||
lambda p: p.geometry.wet_area(
|
map(
|
||||||
p.get_ts_key(self._timestamp, "Z")),
|
lambda p: p.geometry.wet_area(
|
||||||
reach.profiles
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach1.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.geometry.wet_area(
|
||||||
|
p.get_ts_key(self._timestamp, "Z")),
|
||||||
|
reach2.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["wet_area"][0].set_ydata(d)
|
self.lines["wet_area"][0].set_ydata(d)
|
||||||
|
|
||||||
def _customize_x_axes_time(self, ts, mode="time"):
|
def _customize_x_axes_time(self, ts, mode="time"):
|
||||||
|
|
@ -631,6 +845,20 @@ class CustomPlot(PamhyrPlot):
|
||||||
|
|
||||||
ts = self._parent._timestamps
|
ts = self._parent._timestamps
|
||||||
|
|
||||||
|
if self._current_res_id == 2: # compare results
|
||||||
|
reach1 = self.data[0].river.reach(self._reach)
|
||||||
|
reach2 = self.data[1].river.reach(self._reach)
|
||||||
|
profile1 = reach1.profile(self._profile)
|
||||||
|
profile2 = reach2.profile(self._profile)
|
||||||
|
|
||||||
|
q1 = profile1.get_key("Q")
|
||||||
|
z1 = profile1.get_key("Z")
|
||||||
|
v1 = profile1.get_key("V")
|
||||||
|
|
||||||
|
q2 = profile2.get_key("Q")
|
||||||
|
z2 = profile2.get_key("Z")
|
||||||
|
v2 = profile2.get_key("V")
|
||||||
|
|
||||||
q = profile.get_key("Q")
|
q = profile.get_key("Q")
|
||||||
z = profile.get_key("Z")
|
z = profile.get_key("Z")
|
||||||
v = profile.get_key("V")
|
v = profile.get_key("V")
|
||||||
|
|
@ -666,7 +894,7 @@ class CustomPlot(PamhyrPlot):
|
||||||
)
|
)
|
||||||
self.lines["water_elevation"] = line
|
self.lines["water_elevation"] = line
|
||||||
|
|
||||||
if "bed_elevation" in self._y:
|
if "bed_elevation" in self._y and self._current_res_id != 2:
|
||||||
|
|
||||||
self.fill = ax.fill_between(
|
self.fill = ax.fill_between(
|
||||||
ts, ts_z_min, z,
|
ts, ts_z_min, z,
|
||||||
|
|
@ -695,9 +923,23 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "depth" in self._y:
|
if "depth" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["depth"]]
|
ax = self._axes[unit["depth"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.max_water_depth(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.max_water_depth(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile1.geometry.max_water_depth(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile2.geometry.max_water_depth(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
ts, d,
|
ts, d,
|
||||||
|
|
@ -708,9 +950,23 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "mean_depth" in self._y:
|
if "mean_depth" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["mean_depth"]]
|
ax = self._axes[unit["mean_depth"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.mean_water_depth(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.mean_water_depth(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile1.geometry.mean_water_depth(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile2.geometry.mean_water_depth(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
ts, d,
|
ts, d,
|
||||||
|
|
@ -721,14 +977,38 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "froude" in self._y:
|
if "froude" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["froude"]]
|
ax = self._axes[unit["froude"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z, v:
|
d = list(
|
||||||
v /
|
map(lambda z, v:
|
||||||
sqrt(9.81 * (
|
v /
|
||||||
profile.geometry.wet_area(z) /
|
sqrt(9.81 * (
|
||||||
profile.geometry.wet_width(z))
|
profile.geometry.wet_area(z) /
|
||||||
), z, v)
|
profile.geometry.wet_width(z))
|
||||||
)
|
), z, v)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z, v:
|
||||||
|
v /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
profile.geometry.wet_area(z) /
|
||||||
|
profile.geometry.wet_width(z))
|
||||||
|
), z1, v1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z, v:
|
||||||
|
v /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
profile.geometry.wet_area(z) /
|
||||||
|
profile.geometry.wet_width(z))
|
||||||
|
), z2, v2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
ts, d, color='black', linestyle='--', lw=1.,
|
ts, d, color='black', linestyle='--', lw=1.,
|
||||||
|
|
@ -738,9 +1018,23 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "wet_area" in self._y:
|
if "wet_area" in self._y:
|
||||||
|
|
||||||
ax = self._axes[unit["wet_area"]]
|
ax = self._axes[unit["wet_area"]]
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.wet_area(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.wet_area(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile.geometry.wet_area(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile.geometry.wet_area(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
line = ax.plot(
|
line = ax.plot(
|
||||||
ts, d, color='blue', linestyle='--', lw=1.,
|
ts, d, color='blue', linestyle='--', lw=1.,
|
||||||
|
|
@ -766,6 +1060,20 @@ class CustomPlot(PamhyrPlot):
|
||||||
ts = list(results.get("timestamps"))
|
ts = list(results.get("timestamps"))
|
||||||
ts.sort()
|
ts.sort()
|
||||||
|
|
||||||
|
if self._current_res_id == 2: # compare results
|
||||||
|
reach1 = self.data[0].river.reach(self._reach)
|
||||||
|
reach2 = self.data[1].river.reach(self._reach)
|
||||||
|
profile1 = reach1.profile(self._profile)
|
||||||
|
profile2 = reach2.profile(self._profile)
|
||||||
|
|
||||||
|
q1 = profile1.get_key("Q")
|
||||||
|
z1 = profile1.get_key("Z")
|
||||||
|
v1 = profile1.get_key("V")
|
||||||
|
|
||||||
|
q2 = profile2.get_key("Q")
|
||||||
|
z2 = profile2.get_key("Z")
|
||||||
|
v2 = profile2.get_key("V")
|
||||||
|
|
||||||
q = profile.get_key("Q")
|
q = profile.get_key("Q")
|
||||||
z = profile.get_key("Z")
|
z = profile.get_key("Z")
|
||||||
v = profile.get_key("V")
|
v = profile.get_key("V")
|
||||||
|
|
@ -785,7 +1093,7 @@ class CustomPlot(PamhyrPlot):
|
||||||
if "water_elevation" in self._y:
|
if "water_elevation" in self._y:
|
||||||
self.lines["water_elevation"][0].set_ydata(z)
|
self.lines["water_elevation"][0].set_ydata(z)
|
||||||
|
|
||||||
if "bed_elevation" in self._y:
|
if "bed_elevation" in self._y and self._current_res_id != 2:
|
||||||
ax = self._axes[unit["bed_elevation"]]
|
ax = self._axes[unit["bed_elevation"]]
|
||||||
self.fill.remove()
|
self.fill.remove()
|
||||||
self.fill = ax.fill_between(
|
self.fill = ax.fill_between(
|
||||||
|
|
@ -800,32 +1108,102 @@ class CustomPlot(PamhyrPlot):
|
||||||
self.lines["velocity"][0].set_ydata(v)
|
self.lines["velocity"][0].set_ydata(v)
|
||||||
|
|
||||||
if "depth" in self._y:
|
if "depth" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.max_water_depth(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.max_water_depth(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile1.geometry.max_water_depth(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile2.geometry.max_water_depth(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["depth"][0].set_ydata(d)
|
self.lines["depth"][0].set_ydata(d)
|
||||||
|
|
||||||
if "mean_depth" in self._y:
|
if "mean_depth" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.mean_water_depth(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.mean_water_depth(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile1.geometry.mean_water_depth(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile2.geometry.mean_water_depth(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["mean_depth"][0].set_ydata(d)
|
self.lines["mean_depth"][0].set_ydata(d)
|
||||||
|
|
||||||
if "froude" in self._y:
|
if "froude" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z, v:
|
d = list(
|
||||||
v /
|
map(lambda z, v:
|
||||||
sqrt(9.81 * (
|
v /
|
||||||
profile.geometry.wet_area(z) /
|
sqrt(9.81 * (
|
||||||
profile.geometry.wet_width(z))
|
profile.geometry.wet_area(z) /
|
||||||
), z, v)
|
profile.geometry.wet_width(z))
|
||||||
)
|
), z, v)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z, v:
|
||||||
|
v /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
profile.geometry.wet_area(z) /
|
||||||
|
profile.geometry.wet_width(z))
|
||||||
|
), z1, v1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z, v:
|
||||||
|
v /
|
||||||
|
sqrt(9.81 * (
|
||||||
|
profile.geometry.wet_area(z) /
|
||||||
|
profile.geometry.wet_width(z))
|
||||||
|
), z2, v2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["froude"][0].set_ydata(d)
|
self.lines["froude"][0].set_ydata(d)
|
||||||
|
|
||||||
if "wet_area" in self._y:
|
if "wet_area" in self._y:
|
||||||
d = list(
|
if self._current_res_id != 2:
|
||||||
map(lambda z: profile.geometry.wet_area(z), z)
|
d = list(
|
||||||
)
|
map(lambda z: profile.geometry.wet_area(z), z)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
d1 = list(
|
||||||
|
map(lambda z: profile.geometry.wet_area(z), z1)
|
||||||
|
)
|
||||||
|
d2 = list(
|
||||||
|
map(lambda z: profile.geometry.wet_area(z), z2)
|
||||||
|
)
|
||||||
|
d = list(
|
||||||
|
map(
|
||||||
|
lambda x, y: x - y,
|
||||||
|
d1, d2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.lines["wet_area"][0].set_ydata(d)
|
self.lines["wet_area"][0].set_ydata(d)
|
||||||
|
|
||||||
self.canvas.axes.relim(visible_only=True)
|
self.canvas.axes.relim(visible_only=True)
|
||||||
|
|
@ -848,28 +1226,51 @@ class CustomPlot(PamhyrPlot):
|
||||||
if self.data is None:
|
if self.data is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._y_axes = sorted(
|
||||||
|
set(
|
||||||
|
map(
|
||||||
|
lambda y: unit[y],
|
||||||
|
self._y
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.canvas.axes.set_xlabel(
|
self.canvas.axes.set_xlabel(
|
||||||
self._trad[self._x],
|
self._trad[self._x],
|
||||||
color='black', fontsize=10
|
color='black', fontsize=10
|
||||||
)
|
)
|
||||||
|
|
||||||
self.canvas.axes.set_ylabel(
|
if self._current_res_id != 2:
|
||||||
self._trad[self._y_axes[0]],
|
self.canvas.axes.set_ylabel(
|
||||||
color='black', fontsize=10
|
self._trad[self._y_axes[0]],
|
||||||
)
|
|
||||||
|
|
||||||
self._axes[self._y_axes[0]] = self.canvas.axes
|
|
||||||
for axes in self._y_axes[1:]:
|
|
||||||
if axes in self._axes:
|
|
||||||
self._axes[axes].clear()
|
|
||||||
continue
|
|
||||||
|
|
||||||
ax_new = self.canvas.axes.twinx()
|
|
||||||
ax_new.set_ylabel(
|
|
||||||
self._trad[axes],
|
|
||||||
color='black', fontsize=10
|
color='black', fontsize=10
|
||||||
)
|
)
|
||||||
self._axes[axes] = ax_new
|
else:
|
||||||
|
self.canvas.axes.set_ylabel(
|
||||||
|
"Δ " + self._trad[self._y_axes[0]],
|
||||||
|
color='black', fontsize=10
|
||||||
|
)
|
||||||
|
|
||||||
|
self._axes[self._y_axes[0]] = self.canvas.axes
|
||||||
|
if len(self.lines) != 0:
|
||||||
|
self.lines.clear()
|
||||||
|
for axes in self._y_axes[1:]:
|
||||||
|
print("axes: ", axes)
|
||||||
|
if axes in self._axes.keys():
|
||||||
|
for l in self._axes[axes].lines:
|
||||||
|
l.remove()
|
||||||
|
else:
|
||||||
|
ax_new = self.canvas.axes.twinx()
|
||||||
|
self._axes[axes] = ax_new
|
||||||
|
if self._current_res_id != 2:
|
||||||
|
self._axes[axes].set_ylabel(
|
||||||
|
self._trad[axes],
|
||||||
|
color='black', fontsize=10
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self._axes[axes].set_ylabel(
|
||||||
|
"Δ " + self._trad[axes],
|
||||||
|
color='black', fontsize=10
|
||||||
|
|
||||||
if self._x == "rk":
|
if self._x == "rk":
|
||||||
self._draw_rk()
|
self._draw_rk()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue