Exemple #1
0
    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 = KratosPfem.ModelerUtilities()

            meshing_options.Set(self.modeler_utils.KEEP_ISOLATED_NODES, True)

            #self.model_meshing =  KratosPfem.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
Exemple #2
0
    def Check(self):
        
        # set modeler utilities
        self.modeler_utils = KratosPfem.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 ComputeAverageMeshParameters(self):

        ModelerUtils = KratosPfem.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)
Exemple #4
0
    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 = KratosPfem.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(
            KratosPfem.INITIALIZED_DOMAINS, True)

        if (self.echo_level > 1):
            print(self.main_model_part)
    def InitializeDomains(self, model_part, echo_level):

        if (model_part.ProcessInfo[KratosPfem.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 = KratosPfem.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(KratosPfem.INITIALIZED_DOMAINS,
                                            True)

            print("::[Domain_Utilities]:: Resultant ModelPart")
            print(model_part)