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 
Exemple #2
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 = 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
Exemple #4
0
    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