mirror of https://gitlab.com/pamhyr/pamhyr2
work on get friction values from rk
parent
845bf3c325
commit
4d2ba40287
|
|
@ -373,13 +373,13 @@ class BoundaryCondition(SQLSubModel):
|
||||||
self._status.modified()
|
self._status.modified()
|
||||||
|
|
||||||
def reach(self, river):
|
def reach(self, river):
|
||||||
edges = []
|
r = []
|
||||||
if self._node is not None:
|
if self._node is not None:
|
||||||
if river is not None:
|
if river is not None:
|
||||||
for edge in river.edges():
|
for edge in river.edges():
|
||||||
if edge.node1.name == self._node.name:
|
if edge.node1.name == self._node.name:
|
||||||
edges.append(edge.reach)
|
r.append(edge.reach)
|
||||||
if edge.node2.name == self._node.name:
|
if edge.node2.name == self._node.name:
|
||||||
edges.append(edge.reach)
|
r.append(edge.reach)
|
||||||
|
|
||||||
return edges
|
return r
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ from tools import trace, timer
|
||||||
|
|
||||||
from Model.Tools.PamhyrDB import SQLSubModel
|
from Model.Tools.PamhyrDB import SQLSubModel
|
||||||
|
|
||||||
|
from numpy import interp
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -241,3 +243,17 @@ class Friction(SQLSubModel):
|
||||||
def end_strickler(self, strickler):
|
def end_strickler(self, strickler):
|
||||||
self._end_strickler = strickler
|
self._end_strickler = strickler
|
||||||
self._status.modified()
|
self._status.modified()
|
||||||
|
|
||||||
|
def get_friction(self, rk):
|
||||||
|
if not self.contains_rk(rk):
|
||||||
|
return None
|
||||||
|
minor = interp(rk,
|
||||||
|
[self.begin_rk, self.end_rk],
|
||||||
|
[self.begin_strickler.minor,
|
||||||
|
self.end_strickler.minor])
|
||||||
|
medium = interp(rk,
|
||||||
|
[self.begin_rk, self.end_rk],
|
||||||
|
[self.begin_strickler.medium,
|
||||||
|
self.end_strickler.medium])
|
||||||
|
|
||||||
|
return minor, medium
|
||||||
|
|
|
||||||
|
|
@ -395,8 +395,14 @@ class InitialConditions(SQLSubModel):
|
||||||
logger.debug(f"incline = {incline}")
|
logger.debug(f"incline = {incline}")
|
||||||
self._data = []
|
self._data = []
|
||||||
for profile in profiles:
|
for profile in profiles:
|
||||||
width = profile.width_approximation()
|
width = profile.wet_width(profile.z_min() + height)
|
||||||
strickler = 25
|
frictions = self._reach.frictions.frictions
|
||||||
|
strickler = None
|
||||||
|
for f in frictions:
|
||||||
|
if f.contains_rk(profile.rk):
|
||||||
|
strickler = f.get_friction(profile.rk)[0]
|
||||||
|
if strickler is None:
|
||||||
|
strickler = 25.0
|
||||||
|
|
||||||
if not compute_discharge:
|
if not compute_discharge:
|
||||||
discharge = data_discharge[profile.rk]
|
discharge = data_discharge[profile.rk]
|
||||||
|
|
@ -449,7 +455,13 @@ class InitialConditions(SQLSubModel):
|
||||||
self._data = []
|
self._data = []
|
||||||
for profile in profiles:
|
for profile in profiles:
|
||||||
width = profile.width_approximation()
|
width = profile.width_approximation()
|
||||||
strickler = 25
|
frictions = self._reach.frictions.frictions
|
||||||
|
strickler = None
|
||||||
|
for f in frictions:
|
||||||
|
if f.contains_rk(profile.rk):
|
||||||
|
strickler = f.get_friction(profile.rk)[0]
|
||||||
|
if strickler is None:
|
||||||
|
strickler = 25.0
|
||||||
|
|
||||||
if not compute_height:
|
if not compute_height:
|
||||||
height = data_height[profile.rk]
|
height = data_height[profile.rk]
|
||||||
|
|
|
||||||
|
|
@ -333,9 +333,15 @@ class EditBoundaryConditionWindow(PamhyrWindow):
|
||||||
reach = self._data.reach(self._study.river)[0]
|
reach = self._data.reach(self._study.river)[0]
|
||||||
profile = reach.profiles[-1]
|
profile = reach.profiles[-1]
|
||||||
incline = reach.get_incline_median_mean()
|
incline = reach.get_incline_median_mean()
|
||||||
|
frictions = reach._parent.frictions.frictions
|
||||||
z_min = profile.z_min()
|
z_min = profile.z_min()
|
||||||
z_max = profile.z_max()
|
z_max = profile.z_max()
|
||||||
strickler = 25
|
strickler = None
|
||||||
|
for f in frictions:
|
||||||
|
if f.contains_rk(profile.rk):
|
||||||
|
strickler = f.get_friction(profile.rk)[0]
|
||||||
|
if strickler is None:
|
||||||
|
strickler = 25.0
|
||||||
height = [(i)*(z_max-z_min)/50 for i in range(51)]
|
height = [(i)*(z_max-z_min)/50 for i in range(51)]
|
||||||
q = [((profile.wet_width(z_min + h) * 0.8) * strickler
|
q = [((profile.wet_width(z_min + h) * 0.8) * strickler
|
||||||
* (h ** (5/3)) * (abs(incline) ** (0.5)))
|
* (h ** (5/3)) * (abs(incline) ** (0.5)))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue