def RemeshDomains(self): if(self.remesh_domains): if( self.echo_level >= 0 ): print("::[Modeler_Utility]:: MESH DOMAIN...", self.counter) #meshing_options = Flags() meshing_options = KratosMultiphysics.Flags() #self.model_meshing = ModelMeshing(self.model_part, meshing_options, self.echo_level) self.model_meshing = KratosPfemFluid.ModelMeshingForFluids(self.model_part, meshing_options, self.echo_level) ##self.model_meshing = ModelMeshingForFluids(self.model_part, meshing_options, self.echo_level) self.model_meshing.ExecuteInitialize() id = 0 for mesher in self.mesh_modelers: mesh_id = self.mesh_ids[id] mesher.InitializeMeshModeler(self.model_part) mesher.GenerateMesh(self.model_part); mesher.FinalizeMeshModeler(self.model_part) self.remesh_executed = True id+=1 self.model_meshing.ExecuteFinalize() self.counter += 1
def RemeshFluidDomains(self): if (self.remesh_domains_active): # if(self.contact_search): # self.ContactTransfer() if (self.echo_level > 1): print("::[Remesh_fluid_domains_process]:: MESH DOMAIN...", self.counter) meshing_options = KratosMultiphysics.Flags() self.modeler_utils = KratosPfemBase.ModelerUtilities() meshing_options.Set(self.modeler_utils.KEEP_ISOLATED_NODES, True) #self.model_meshing = KratosPfemBase.ModelMeshing(self.main_model_part, meshing_options, self.echo_level) self.model_meshing = KratosPfemFluid.ModelMeshingForFluids( self.main_model_part, meshing_options, self.echo_level) self.model_meshing.ExecuteInitialize() id = 0 for domain in self.meshing_domains: domain.ExecuteMeshing() self.remesh_executed = True id += 1 self.model_meshing.ExecuteFinalize() self.counter += 1
def RemeshFluidDomains(self): if (self.remesh_domains_active): # if(self.contact_search): # self.ContactTransfer() if (self.echo_level > 1): print("::[Remesh_fluid_domains_process]:: MESH DOMAIN...", self.counter) meshing_options = KratosMultiphysics.Flags() self.mesher_utils = KratosDelaunay.MesherUtilities() meshing_options.Set(self.mesher_utils.KEEP_ISOLATED_NODES, True) ############ choose just one of the following two options: ############ ## use this if you want conditions ## ATTENTION: this is slow, and must be used together with GenerateNewConditionsForFluids and BuildModelPartBoundary #self.model_meshing = KratosPfemFluid.ModelMeshingWithConditionsForFluids(self.main_model_part, meshing_options, self.echo_level) ## if you use the following, you will not use/build/compute conditions ## ATTENTION: it must be used together with BuildMeshBoundaryForFluids and BuildModelPartBoundaryForFluids self.model_meshing = KratosPfemFluid.ModelMeshingForFluids( self.main_model_part, meshing_options, self.echo_level) ####################################################################### self.model_meshing.ExecuteInitialize() id = 0 for domain in self.meshing_domains: domain.ExecuteMeshing() self.remesh_executed = True id += 1 self.model_meshing.ExecuteFinalize() self.counter += 1
def RemeshDomains(self): if (self.echo_level > 1): print("::[Meshing_Process]:: MESHING DOMAIN...( call:", self.counter, ")") meshing_options = KratosMultiphysics.Flags() #self.model_meshing = KratosPfemBase.ModelMeshing(self.main_model_part, meshing_options, self.echo_level) self.model_meshing = KratosPfemFluid.ModelMeshingForFluids( self.main_model_part, meshing_options, self.echo_level) self.model_meshing.ExecuteInitialize() #serial for domain in self.meshing_domains: domain.ExecuteMeshing() #parallel (not working pickling instances not enabled) #domains_number = len(self.meshing_domains) #if(domains_number>8): # domains_number = 8 #pool = Pool(domains_number) #pool.map(self.ExecuteMeshing,self.meshing_domains) #pool.close() #pool.joint() # self.model_meshing.ExecuteFinalize() self.counter += 1 # schedule next meshing if (self.meshing_frequency > 0.0): # note: if == 0 always active if (self.meshing_control_is_time): while (self.next_meshing <= time): self.next_meshing += self.meshing_frequency else: while (self.next_meshing <= self.step_count): self.next_meshing += self.meshing_frequency
def RemeshDomainsNEW(self): if(self.remesh_domains): # if(self.contact_search): # self.ContactTransfer() if( self.echo_level > 0 ): print("::[Modeler_Utility]:: MESH DOMAIN...", self.counter) meshing_options = KratosMultiphysics.Flags() self.modeler_utils = KratosPfemBase.ModelerUtilities() meshing_options.Set(self.modeler_utils.KEEP_ISOLATED_NODES, True) #self.model_meshing = KratosPfemBase.ModelMeshing(self.model_part, meshing_options, self.echo_level) self.model_meshing = KratosPfemFluid.ModelMeshingForFluids(self.model_part, meshing_options, self.echo_level) self.model_meshing.ExecuteInitialize() print("::[Modeler_Utility]:: BEFORE LOOP", self.counter) id = 0 for domain in self.meshing_domains: print("::[Modeler_Utility]:: IN THE LOOP") domain.ExecuteMeshing(); self.remesh_executed = True id+=1 self.model_meshing.ExecuteFinalize() self.counter += 1