debug meshing

master
Theophile Terraz 2025-11-26 11:16:19 +01:00
parent dd5eecb1e2
commit 1da3461dfe
4 changed files with 38 additions and 39 deletions

View File

@ -63,8 +63,6 @@ class InternalMeshing(AMeshingTool):
gl = reach.compute_guidelines()
profiles = reach.profiles[limites[0]:limites[1]+1]
print(profiles)
# we make sure that the lines are in the left-to-right order
guide_list = [
x.name
@ -72,38 +70,31 @@ class InternalMeshing(AMeshingTool):
if x.name in gl[0]
]
gl1 = [""] + guide_list
gl2 = guide_list + [""]
max_values = [0] * (len(guide_list) + 1)
max_values_index = [0] * (len(guide_list) + 1)
guide_list = ["un"] + guide_list + ["np"]
max_values = [0] * (len(guide_list) - 1)
max_values_index = [0] * (len(guide_list) - 1)
# we work between each couple of guidelines
for j, p in enumerate(profiles):
index1 = 0
index2 = p.named_point_index(guide_list[0])
if index2 - index1 > max_values[0]:
max_values[0] = index2 - index1
max_values_index[0] = j
for i in range(len(guide_list) - 1):
index1 = p.named_point_index(guide_list[i])
index2 = p.named_point_index(guide_list[i+1])
if index2 - index1 > max_values[i + 1]:
max_values[i + 1] = index2 - index1
max_values_index[i + 1] = j
index1 = p.named_point_index(guide_list[-1])
index2 = len(p) - 1
if index2 - index1 > max_values[-1]:
max_values[-1] = index2 - index1
max_values_index[-1] = j
if index2 - index1 > max_values[i]:
max_values[i] = index2 - index1
max_values_index[i] = j
for i in range(len(max_values)):
for isect in range(max_values_index[i], len(profiles)-1):
self.compl_sect(profiles[isect],
profiles[isect+1],
gl1[i], gl2[i])
guide_list[i],
guide_list[i+1])
for isect in reversed(range(0, max_values_index[i])):
self.compl_sect(profiles[isect+1],
profiles[isect],
gl1[i], gl2[i])
guide_list[i],
guide_list[i+1])
def interpolate_transversal_step(self,
reach,
@ -124,11 +115,12 @@ class InternalMeshing(AMeshingTool):
d = 1.0/float(np[i]+1)
ptr0 = ptr
for j in range(np[i]):
p = reach.profiles[ptr0].copy()
p = ProfileXYZ(reach=reach, status=reach._status)
# RATIO entre les deux sections initiales
dj = float(j+1)*d
ptr += 1 # next profile, original
for k in range(len(reach.profiles[ptr0].points)):
p.add()
p.points[k].x = reach.profiles[ptr0].points[k].x + \
dj*(reach.profiles[ptr].points[k].x -
reach.profiles[ptr0].points[k].x)
@ -141,7 +133,6 @@ class InternalMeshing(AMeshingTool):
p.rk = reach.profiles[ptr0].rk + \
dj*(reach.profiles[ptr].rk -
reach.profiles[ptr0].rk)
p.name = f'interpol{p.rk}'
reach.insert_profile(ptr, p)
ptr += 1 # next profile, original
@ -302,6 +293,8 @@ class InternalMeshing(AMeshingTool):
sgn = -1.0
else:
sgn = sign(reach.profiles[-1].rk - reach.profiles[0].rk)
if abs(sgn) < 0.5:
sgn = 1.0
reach.profiles[origin].rk = origin_value

View File

@ -89,12 +89,23 @@ class Profile(object):
return self.points[index]
def named_point(self, name):
return next((p for p in self.points if p.name == name), None)
if name == "un":
return self.points[0]
elif name == "np":
return self.points[-1]
else:
return next((p for p in self.points if p.name == name), None)
def named_point_index(self, name):
return next(
(p for p in enumerate(self.points) if p[1].name == name), None
)[0]
if name == "un":
return 0
elif name == "np":
return len(self.points) - 1
else:
return next(
(p for p in enumerate(self.points) if p[1].name == name),
None
)[0]
@property
def reach(self):

View File

@ -900,14 +900,12 @@ class ProfileXYZ(Profile, SQLSubModel):
self.point(i+1).z = 0.5 * self.point(i).z + 0.5 * self.point(i+2).z
def copy(self):
p = ProfileXYZ(self.id,
self.name,
self.rk,
self.reach,
self.num,
0,
0, 0,
self._status)
p = ProfileXYZ(name = self.name,
rk = self.rk,
reach = self.reach,
nb_point = 0,
code1 = 0, code2 = 0,
status = self.reach._status)
for i, k in enumerate(self.points):
p.insert_point(i, k.copy())

View File

@ -358,14 +358,11 @@ class GeometryWindow(PamhyrWindow):
def _update_rk(self, data):
try:
mesher = MeshingWithMageMailleurTT()
mesher = InternalMeshing()
self._table.update_rk(mesher, data)
except Exception as e:
logger_exception(e)
raise ExternFileMissingError(
module="mage",
filename="MailleurTT",
path=MeshingWithMageMailleurTT._path(),
src_except=e
)