@@ -95,6 +95,7 @@ def build_meshes(self, fluid=True, tissue=False, hausd=0.0001, hsize=None, minra
9595 fluid_surface_mesh = self .synthetic_object .export_solid (watertight = True )
9696 tet_fluid = tetgen .TetGen (fluid_surface_mesh )
9797 try :
98+ tet_fluid .make_manifold (verbose = True )
9899 #tet_fluid.tetrahedralize(minratio=minratio, mindihedral=10.0, steinerleft=-1, order=order, nobisect=True, verbose=2, switches='M')
99100 tet_fluid .tetrahedralize (switches = 'pq{}/{}MVYSJ' .format (minratio , mindihedral ))
100101 fluid_volume_mesh = tet_fluid .grid
@@ -109,9 +110,10 @@ def build_meshes(self, fluid=True, tissue=False, hausd=0.0001, hsize=None, minra
109110 hsize = fluid_surface_mesh .hsize
110111 fluid_surface_mesh = fluid_volume_mesh .extract_surface ()
111112 # faces, wall_surfaces, cap_surfaces, lumen_surfaces, _
112- fluid_surface_faces = extract_faces (fluid_surface_mesh , fluid_volume_mesh )
113+ # fluid_surface_faces = extract_faces(fluid_surface_mesh, fluid_volume_mesh)
113114 if boundary_layer :
114115 # Prefer lumen (vessel wall) surfaces; fallback to walls if needed
116+ fluid_surface_faces = extract_faces (fluid_surface_mesh , fluid_volume_mesh )
115117 lumens = fluid_surface_faces [3 ]
116118 walls = fluid_surface_faces [1 ]
117119 wall = lumens [0 ] if len (lumens ) > 0 else (walls [0 ] if len (walls ) > 0 else None )
@@ -309,8 +311,8 @@ def build_meshes(self, fluid=True, tissue=False, hausd=0.0001, hsize=None, minra
309311 if (boundary_layer or wall_layers ) and fluid :
310312 fluid_surface = fluid_volume .extract_surface ()
311313 # faces, wall_surfaces, cap_surfaces, lumen_surfaces, _
312- fluid_surface_faces = extract_faces (fluid_surface , fluid_volume )
313314 if boundary_layer and fluid :
315+ fluid_surface_faces = extract_faces (fluid_surface , fluid_volume )
314316 # Use lumen (vessel wall) surfaces for boundary-layer generation
315317 lumens = fluid_surface_faces [3 ]
316318 if len (lumens ) > 1 :
@@ -422,8 +424,7 @@ def extract_faces(self, crease_angle=60.0, verbose=False):
422424 self .fluid_domain_surface_meshes [0 ], self .fluid_domain_volume_meshes [0 ],
423425 crease_angle = crease_angle , verbose = verbose )
424426 # For fluid, use lumen surfaces as primary vessel walls, but include any remaining walls
425- all_walls = lumens + walls
426- self .fluid_domain_faces .append ({'walls' : all_walls , 'caps' : caps , 'shared_boundaries' : shared_boundaries })
427+ self .fluid_domain_faces .append ({'walls' : walls , 'lumens' : lumens , 'caps' : caps , 'shared_boundaries' : shared_boundaries })
427428 fluid_mesh = GeneralMesh ()
428429 fluid_mesh .add_mesh (self .fluid_domain_volume_meshes [0 ], name = 'fluid_msh_0' )
429430 for i , wall in enumerate (walls ):
@@ -438,7 +439,7 @@ def extract_faces(self, crease_angle=60.0, verbose=False):
438439 faces , walls , caps , lumens , shared_boundaries = extract_faces (
439440 self .tissue_domain_surface_meshes [0 ], self .tissue_domain_volume_meshes [0 ],
440441 crease_angle = crease_angle , verbose = verbose )
441- self .tissue_domain_faces .append ({'walls' : walls , 'caps' : caps , 'shared_boundaries' : shared_boundaries })
442+ self .tissue_domain_faces .append ({'walls' : walls , 'lumens' : lumens , ' caps' : caps , 'shared_boundaries' : shared_boundaries })
442443 tissue_mesh = GeneralMesh ()
443444 tissue_mesh .add_mesh (self .tissue_domain_volume_meshes [0 ], name = 'tissue_msh_0' )
444445 for i , wall in enumerate (walls ):
@@ -683,6 +684,10 @@ def write_3d_fluid_simulation(self, *args):
683684 else :
684685 raise ValueError ("Mesh must be a pyvista mesh object." )
685686 for name , face in fluid_mesh .faces .items ():
687+ #face.cell_data["ModelFaceID"] = face.cell_data["ModelFaceID"].astype(numpy.int32)
688+ #face.cell_data["GlobalElementID"] = face.cell_data["GlobalElementID"].astype(numpy.int32)
689+ face .cell_data .remove ("ModelFaceID" )
690+ face .cell_data .remove ("GlobalElementID" )
686691 if isinstance (face , pyvista .PolyData ):
687692 face .save (self .file_path + os .sep + "mesh" + os .sep + fluid_mesh .name + os .sep + "mesh-surfaces" + os .sep + "{}.vtp" .format (name ))
688693 else :
0 commit comments