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 Check(self): # set modeler utilities self.modeler_utils = KratosPfemBase.ModelerUtilities() # set the domain labels to mesh modeler critical_mesh_size = self.settings["refining_parameters"][ "critical_size"].GetDouble() critical_radius = self.modeler_utils.CheckCriticalRadius( self.main_model_part, critical_mesh_size, self.mesh_id) print(" CriticalRadius ", critical_radius)
def BuildMeshModelersNEW(self, meshing_domains ): if(self.remesh_domains): self.modeler_active = True # set mesing domains self.meshing_domains = meshing_domains # set modeler utilities self.modeler_utils = KratosPfemBase.ModelerUtilities() # set transfer utilities self.transfer_utils = KratosPfemBase.MeshDataTransferUtilities() # set the domain labels to mesh modeler self.modeler_utils.SetDomainLabels(self.model_part)
def ComputeAverageMeshParameters(self): ModelerUtils = KratosPfemBase.ModelerUtilities() self.domain_volume = ModelerUtils.ComputeModelPartVolume( self.main_model_part) self.element_mean_volume = 0 number_of_elements = self.main_model_part.NumberOfElements() nodes_for_element = self.main_model_part.ProcessInfo[ KratosMultiphysics.DOMAIN_SIZE] + 1 if (number_of_elements != 0): self.element_mean_volume = self.domain_volume / float( number_of_elements * nodes_for_element) self.RefiningParameters.SetMeanVolume(self.element_mean_volume)
def InitializeDomains(self): # initialize the modeler if (self.echo_level > 1): print("::[Remesh_Fluid_Domains]:: Initialize Domains ") import domain_utilities domain_utils = domain_utilities.DomainUtilities() # find node neighbours domain_utils.SearchNodeNeighbours(self.main_model_part, self.echo_level) # find element neighbours domain_utils.SearchElementNeighbours(self.main_model_part, self.echo_level) # set neighbour search performed self.neighbour_search_performed = True # set modeler utilities self.modeler_utils = KratosPfemBase.ModelerUtilities() # set the domain labels to conditions self.modeler_utils.SetModelPartNameToConditions(self.main_model_part) # find skin and boundary normals if (self.restart == False): self.BuildMeshBoundaryForFluids() #domain_utils.ConstructModelPartBoundary(self.main_model_part, self.echo_level) # search nodal h if (self.neighbour_search_performed): domain_utils.SearchNodalH(self.main_model_part, self.echo_level) # set the domain labels to nodes self.modeler_utils.SetModelPartNameToNodes(self.main_model_part) self.main_model_part.ProcessInfo.SetValue( KratosPfemBase.INITIALIZED_DOMAINS, True) if (self.echo_level > 1): print(self.main_model_part)
def InitializeDomains(self, model_part, echo_level): if (model_part.ProcessInfo[KratosPfemBase.INITIALIZED_DOMAINS] == False ): # initialize the modeler print("::[Domain_Utilities]:: Initialize", model_part.Name) # find node neighbours self.SearchNodeNeighbours(model_part, echo_level) # find element neighbours self.SearchElementNeighbours(model_part, echo_level) # set modeler utilities modeler_utils = KratosPfemBase.ModelerUtilities() # set the domain labels to conditions modeler_utils.SetModelPartNameToConditions(model_part) # find skin and boundary normals if (model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED] == False): # build boundary of a volumetric body domain self.BuildModelPartBoundary(model_part, echo_level) # search nodal h self.SearchNodalH(model_part, echo_level) # set the domain labels to nodes modeler_utils.SetModelPartNameToNodes(model_part) model_part.ProcessInfo.SetValue(KratosPfemBase.INITIALIZED_DOMAINS, True) print("::[Domain_Utilities]:: Resultant ModelPart") print(model_part)
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