예제 #1
0
    def ExecuteInitialize(self):

        # check restart
        self.restart = False
        if (self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED]
                == True):
            self.restart = True
            self.step_count = self.main_model_part.ProcessInfo[
                KratosMultiphysics.STEP]

            if self.meshing_control_is_time:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.TIME]
            else:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.STEP]

        # execute initialize base class
        if (self.main_model_part.ProcessInfo[
                KratosPfemBase.INITIALIZED_DOMAINS] == False):
            import domain_utilities
            domain_utils = domain_utilities.DomainUtilities()
            domain_utils.InitializeDomains(self.main_model_part,
                                           self.echo_level)

        for domain in self.meshing_domains:
            domain.Initialize()
예제 #2
0
    def ExecuteInitialize(self):

        self.main_model_part = self.Model[
            self.settings["model_part_name"].GetString()]
        self.dimension = self.main_model_part.ProcessInfo[
            KratosMultiphysics.SPACE_DIMENSION]

        # construct rigid body domains
        self.rigid_bodies = []
        bodies_list = self.settings["rigid_bodies"]
        self.number_of_bodies = bodies_list.size()
        for i in range(0, self.number_of_bodies):
            item = bodies_list[i]
            rigid_body_module = __import__(item["python_module"].GetString())
            body = rigid_body_module.CreateRigidBody(self.main_model_part,
                                                     item)
            self.rigid_bodies.append(body)

        # initialize rigid body domains
        import domain_utilities
        domain_utils = domain_utilities.DomainUtilities()
        domain_utils.InitializeDomains(self.main_model_part, self.echo_level)

        for body in self.rigid_bodies:
            body.Initialize()

        print(self._class_prefix() + " Ready")
예제 #3
0
    def ExecuteInitialize(self):

        # check restart
        self.restart = False
        if( self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED] == True ):
            self.restart = True         
            self.step_count = self.main_model_part.ProcessInfo[KratosMultiphysics.STEP]
            
            if self.meshing_control_is_time:
                self.next_meshing  = self.main_model_part.ProcessInfo[KratosMultiphysics.TIME] + self.meshing_frequency
            else:
                self.next_meshing = self.main_model_part.ProcessInfo[KratosMultiphysics.STEP] + self.meshing_frequency
        else:
            #if commented in the first step meshing is applied
            self.next_meshing = self.meshing_frequency
            # it must be initialized if restart is called//no

        self.main_model_part.ProcessInfo.SetValue(KratosPfem.INITIALIZED_DOMAINS, False);
        
        # initialize all meshing domains 
        if( self.remesh_domains_active ):    

            print("::[Meshing_Process]:: Initialize Domains")
            import domain_utilities
            domain_utils = domain_utilities.DomainUtilities()            
            domain_utils.InitializeDomains(self.main_model_part,self.echo_level)

            for domain in self.meshing_domains:
                domain.SetEchoLevel(self.echo_level)
                domain.Initialize()
예제 #4
0
    def ExecuteInitialize(self):

        for i in range(0, self.number_of_walls):
            self.parametric_walls[i].BuildParametricWall()

        # check restart
        self.restart = False
        if (self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED]):
            self.restart = True
            self.step_count = self.main_model_part.ProcessInfo[
                KratosMultiphysics.STEP]

            if self.search_control_is_time:
                self.next_search = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.TIME]
            else:
                self.next_search = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.STEP]

        # initialize wall domains
        print("::[Walls_Process]:: Initialize Domains ")
        import domain_utilities
        domain_utils = domain_utilities.DomainUtilities()
        domain_utils.InitializeDomains(self.main_model_part, self.echo_level)

        for wall in self.parametric_walls:
            wall.Initialize()
예제 #5
0
    def ExecuteInitialize(self):

        self.main_model_part = self.Model[
            self.settings["model_part_name"].GetString()]

        self.dimension = self.main_model_part.ProcessInfo[
            KratosMultiphysics.SPACE_DIMENSION]

        #construct meshing domains
        self.meshing_domains = []
        domains_list = self.settings["meshing_domains"]
        self.number_of_domains = domains_list.size()
        for i in range(0, self.number_of_domains):
            item = domains_list[i]
            domain_module = __import__(item["python_module"].GetString())
            domain = domain_module.CreateMeshingDomain(self.main_model_part,
                                                       item)
            self.meshing_domains.append(domain)

        # mesh modeler initial values
        self.remesh_domains_active = False
        for domain in self.meshing_domains:
            if (domain.Active()):
                self.remesh_domains_active = True

        # check restart
        self.restart = False
        if (self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED]
                == True):
            self.restart = True
            self.step_count = self.main_model_part.ProcessInfo[
                KratosMultiphysics.STEP]

            if self.meshing_control_is_time:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.TIME] + self.meshing_frequency
            else:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.STEP] + self.meshing_frequency
        else:
            #if commented in the first step meshing is applied
            self.next_meshing = self.meshing_frequency
            # it must be initialized if restart is called//no

        self.main_model_part.ProcessInfo.SetValue(
            KratosPfem.INITIALIZED_DOMAINS, False)

        # initialize all meshing domains
        if (self.remesh_domains_active):

            print("::[Meshing_Process]:: Initialize Domains")
            import domain_utilities
            domain_utils = domain_utilities.DomainUtilities()
            domain_utils.InitializeDomains(self.main_model_part,
                                           self.echo_level)

            for domain in self.meshing_domains:
                domain.SetEchoLevel(self.echo_level)
                domain.Initialize()
예제 #6
0
    def ExecuteInitialize(self):

        # initialize rigid body domains
        print("::[RigidBodies_Process]:: Initialize Domains ")
        import domain_utilities
        domain_utils = domain_utilities.DomainUtilities()
        domain_utils.InitializeDomains(self.main_model_part, self.echo_level)

        for body in self.rigid_bodies:
            body.Initialize()
예제 #7
0
    def ExecuteInitialize(self):

        self.main_model_part = self.Model[
            self.settings["model_part_name"].GetString()]
        self.dimension = self.main_model_part.ProcessInfo[
            KratosMultiphysics.SPACE_DIMENSION]

        #construct parametric wall domains
        self.parametric_walls = []
        walls_list = self.settings["parametric_walls"]
        self.number_of_walls = walls_list.size()
        for i in range(0, self.number_of_walls):
            item = walls_list[i]
            parametric_wall_module = __import__(
                item["python_module"].GetString())
            wall = parametric_wall_module.CreateParametricWall(
                self.main_model_part, item)
            self.parametric_walls.append(wall)

        # mesh mesher initial values
        self.search_contact_active = False
        if (self.number_of_walls):
            self.search_contact_active = True

        # build parametric walls
        for i in range(0, self.number_of_walls):
            self.parametric_walls[i].BuildParametricWall()

        # check restart
        self.restart = False
        if (self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED]):
            self.restart = True
            self.step_count = self.main_model_part.ProcessInfo[
                KratosMultiphysics.STEP]

            if self.search_control_is_time:
                self.next_search = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.TIME]
            else:
                self.next_search = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.STEP]

        # initialize wall domains
        import domain_utilities
        domain_utils = domain_utilities.DomainUtilities()
        domain_utils.InitializeDomains(self.main_model_part, self.echo_level)

        for wall in self.parametric_walls:
            wall.Initialize()

        print(self._class_prefix() + " Ready")
예제 #8
0
    def GetVariables(self):
        import domain_utilities
        nodal_variables = domain_utilities.DomainUtilities().GetVariables()
        nodal_variables = nodal_variables + ['DETERMINANT_F'
                                             ]  # variables smoothing
        nodal_variables = nodal_variables + ['MEAN_ERROR']  # removing nodes

        #nodal_variables = nodal_variables + ['CAUCHY_STRESS_VECTOR', 'DEFORMATION_GRADIENT'] # transfer variables
        for domain in self.meshing_domains:
            nodal_variables = nodal_variables + domain.GetVariables()

        # print(self._class_prefix()+" Variables added")

        return nodal_variables
    def InitializeDomains(self):

        # initialize the mesher
        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 mesher utilities
        self.mesher_utils = KratosDelaunay.MesherUtilities()

        # set the domain labels to conditions
        self.mesher_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.mesher_utils.SetModelPartNameToNodes(self.main_model_part)

        self.main_model_part.ProcessInfo.SetValue(
            KratosDelaunay.INITIALIZED_DOMAINS, True)

        if (self.echo_level > 1):
            print(self.main_model_part)
예제 #10
0
    def ExecuteInitialize(self):

        self.main_model_part = Model[
            custom_settings["model_part_name"].GetString()]
        self.dimension = self.main_model_part.ProcessInfo[
            KratosMultiphysics.SPACE_DIMENSION]

        #construct meshing domains
        self.meshing_domains = []
        domains_list = self.settings["meshing_domains"]
        self.number_of_domains = domains_list.size()
        for i in range(0, self.number_of_domains):
            item = domains_list[i]
            domain_module = __import__(item["python_module"].GetString())
            domain = domain_module.CreateMeshingDomain(self.main_model_part,
                                                       item)
            self.meshing_domains.append(domain)

        # check restart
        self.restart = False
        if (self.main_model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED]
                == True):
            self.restart = True
            self.step_count = self.main_model_part.ProcessInfo[
                KratosMultiphysics.STEP]

            if self.meshing_control_is_time:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.TIME]
            else:
                self.next_meshing = self.main_model_part.ProcessInfo[
                    KratosMultiphysics.STEP]

        # execute initialize base class
        if (self.main_model_part.ProcessInfo[KratosPfem.INITIALIZED_DOMAINS] ==
                False):
            import domain_utilities
            domain_utils = domain_utilities.DomainUtilities()
            domain_utils.InitializeDomains(self.main_model_part,
                                           self.echo_level)

        for domain in self.meshing_domains:
            domain.Initialize()
예제 #11
0
 def GetVariables(self):
     import domain_utilities
     nodal_variables = domain_utilities.DomainUtilities().GetVariables()
     nodal_variables = nodal_variables + ['RIGID_WALL']
     return nodal_variables
예제 #12
0
    def InitializeDomains(self):

        print(self._class_prefix() + " Initialize Domains")
        import domain_utilities
        domain_utils = domain_utilities.DomainUtilities()
        domain_utils.InitializeDomains(self.main_model_part, self.echo_level)