コード例 #1
0
    def __init__(self, Model, settings):
        KratosMultiphysics.Process.__init__(self)

        default_settings = KratosMultiphysics.Parameters("""
            {
                "help"            : "This process assigns a given value (scalar) to the conditions belonging a certain submodelpart",
                "mesh_id"         : 0,
                "model_part_name" : "please_specify_model_part_name",
                "variable_name"   : "SPECIFY_VARIABLE_NAME",
                "interval"        : [0.0, 1e30],
                "value"           : 0.0,
                "local_axes"      : {}
            }
            """)

        # assign this here since it will change the "interval" prior to validation
        self.interval = KratosMultiphysics.IntervalUtility(settings)

        # here i do a trick, since i want to allow "value" to be a string or a double value
        if (settings.Has("value")):
            if (settings["value"].IsString()):
                default_settings["value"].SetString("0.0")

        settings.ValidateAndAssignDefaults(default_settings)

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

        self.value_is_numeric = False

        # set processes
        params = KratosMultiphysics.Parameters("{}")
        params.AddValue("model_part_name", settings["model_part_name"])
        params.AddValue("mesh_id", settings["mesh_id"])
        params.AddValue("value", settings["value"])
        params.AddValue("variable_name", settings["variable_name"])

        # set processes
        if settings["value"].IsNumber():
            self.value_is_numeric = True
            self.AssignValueProcess = KratosMultiphysics.AssignScalarVariableToConditionsProcess(
                self.model_part, params)
        else:
            params.AddValue("local_axes", settings["local_axes"])
            self.AssignValueProcess = KratosMultiphysics.AssignScalarFieldToConditionsProcess(
                self.model_part, params)

        # construct a variable_utils object to speedup fixing
        self.step_is_active = False
コード例 #2
0
    def __init__(self, Model, settings ):
        """ The default constructor of the class

        Keyword arguments:
        self -- It signifies an instance of a class.
        Model -- the container of the different model parts.
        settings -- Kratos parameters containing solver settings.
        """

        KratosMultiphysics.Process.__init__(self)

        #The value can be a double or a string (function)
        default_settings = KratosMultiphysics.Parameters("""
        {
            "help"            : "This process assigns a given value (scalar) to the entities belonging a certain submodelpart",
            "mesh_id"         : 0,
            "model_part_name" : "please_specify_model_part_name",
            "variable_name"   : "SPECIFY_VARIABLE_NAME",
            "interval"        : [0.0, 1e30],
            "value"           : 0.0,
            "local_axes"      : {},
            "entities"        : []
        }
        """
        )

        # Assign this here since it will change the "interval" prior to validation
        self.interval = KratosMultiphysics.IntervalUtility(settings)

        # Here i do a trick, since i want to allow "value" to be a string or a double value
        if settings.Has("value"):
            if settings["value"].IsString():
                default_settings["value"].SetString("0.0")

        settings.ValidateAndAssignDefaults(default_settings)

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

        self.value_is_numeric = False

        # Define entities
        if settings["entities"].size() == 0:
           raise Exception("This process requires a list of entities. The options are: nodes, conditions, elements and constraints")
        self.entities = []
        for i in range(settings["entities"].size()):
            self.entities.append(settings["entities"][i].GetString())

        # Set parameters of the processes
        params = KratosMultiphysics.Parameters("{}")
        params.AddValue("model_part_name", settings["model_part_name"])
        params.AddValue("mesh_id", settings["mesh_id"])
        params.AddValue("value", settings["value"])
        params.AddValue("variable_name", settings["variable_name"])

        # Set processes
        self.aux_processes = []
        if settings["value"].IsNumber():
            self.value_is_numeric = True
            for i in range(len(self.entities)):
                if self.entities[i] == "nodes":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarVariableToNodesProcess(self.model_part, params))
                elif self.entities[i] == "conditions":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarVariableToConditionsProcess(self.model_part, params))
                elif self.entities[i] == "elements":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarVariableToElementsProcess(self.model_part, params))
                elif self.entities[i] == "constraints":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarVariableToMasterSlaveConstraintsProcess(self.model_part, params))
        else:
            params.AddValue("local_axes", settings["local_axes"])
            for i in range(len(self.entities)):
                if self.entities[i] == "nodes":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarFieldToNodesProcess(self.model_part, params))
                elif self.entities[i] == "conditions":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarFieldToConditionsProcess(self.model_part, params))
                elif self.entities[i] == "elements":
                    self.aux_processes.append( KratosMultiphysics.AssignScalarFieldToElementsProcess(self.model_part, params))

        # construct a variable_utils object to speedup fixing
        self.step_is_active = False