FEM: mesh tools, compact mesh, use one id for Edges, Faces and Volumes as SMESH does save it
This commit is contained in:
@@ -2356,35 +2356,38 @@ def compact_mesh(
|
||||
new_mesh.addNode(old_nodes[n].x, old_nodes[n].y, old_nodes[n].z, nid)
|
||||
node_map[n] = nid
|
||||
|
||||
# element id is one id for Edges, Faces and Volumes
|
||||
# thus should not start with 0 for each, wil give an error on mixed meshes
|
||||
# https://forum.freecadweb.org/viewtopic.php?t=48215
|
||||
ele_id = 1
|
||||
if old_femmesh.Edges:
|
||||
for i, ed in enumerate(old_femmesh.Edges):
|
||||
eid = i + 1
|
||||
for ed in old_femmesh.Edges:
|
||||
old_elem_nodes = old_femmesh.getElementNodes(ed)
|
||||
new_elemnodes = []
|
||||
for old_node_id in old_elem_nodes:
|
||||
new_elemnodes.append(node_map[old_node_id])
|
||||
new_mesh.addEdge(new_elemnodes, eid)
|
||||
elem_map[ed] = eid
|
||||
|
||||
new_mesh.addEdge(new_elemnodes, ele_id)
|
||||
elem_map[ed] = ele_id
|
||||
ele_id += 1
|
||||
if old_femmesh.Faces:
|
||||
for i, fa in enumerate(old_femmesh.Faces):
|
||||
fid = i + 1
|
||||
for fa in old_femmesh.Faces:
|
||||
ele_id += 1
|
||||
old_elem_nodes = old_femmesh.getElementNodes(fa)
|
||||
new_elemnodes = []
|
||||
for old_node_id in old_elem_nodes:
|
||||
new_elemnodes.append(node_map[old_node_id])
|
||||
new_mesh.addFace(new_elemnodes, fid)
|
||||
elem_map[fa] = fid
|
||||
|
||||
new_mesh.addFace(new_elemnodes, ele_id)
|
||||
elem_map[fa] = ele_id
|
||||
ele_id += 1
|
||||
if old_femmesh.Volumes:
|
||||
for i, vo in enumerate(old_femmesh.Volumes):
|
||||
vid = i + 1
|
||||
for vo in old_femmesh.Volumes:
|
||||
old_elem_nodes = old_femmesh.getElementNodes(vo)
|
||||
new_elemnodes = []
|
||||
for old_node_id in old_elem_nodes:
|
||||
new_elemnodes.append(node_map[old_node_id])
|
||||
new_mesh.addVolume(new_elemnodes, vid)
|
||||
elem_map[vo] = vid
|
||||
new_mesh.addVolume(new_elemnodes, ele_id)
|
||||
elem_map[vo] = ele_id
|
||||
ele_id += 1
|
||||
|
||||
# may be return another value if the mesh was compacted, just check last map entries
|
||||
return (new_mesh, node_map, elem_map)
|
||||
|
||||
Reference in New Issue
Block a user