def CreateAssignmentProcess(self, params): if (self.value_is_numeric): params.AddValue("variable_name", self.settings["variable_name"]) counter = 0 for i in self.value: params["value"][counter].SetDouble(i) counter += 1 self.AssignValueProcess = KratosSolid.AssignVectorToConditionsProcess( self.model_part, params) else: #function values are assigned to a vector variable :: transformation is needed if (isinstance(self.var, KratosMultiphysics.Array1DVariable3)): variable_name = self.settings["variable_name"].GetString( ) + "_VECTOR" print(" variable name modified:", variable_name) params.AddEmptyValue("variable_name") params["variable_name"].SetString(variable_name) else: params.AddValue("variable_name", self.settings["variable_name"]) counter = 0 for i in self.value: params["value"][counter].SetDouble(i) counter += 1 self.AssignValueProcess = KratosSolid.AssignVectorFieldToConditionsProcess( self.model_part, self.compiled_function, "function", self.value_is_spatial_function, params)
def ExecuteInitialize(self): # set processes params = KratosMultiphysics.Parameters("{}") params.AddValue("model_part_name", self.settings["model_part_name"]) params.AddValue("mesh_id", self.settings["mesh_id"]) params.AddEmptyValue("value") params.__setitem__("value", self.settings["direction"]) if (self.value_is_numeric): params.AddValue("variable_name", self.settings["variable_name"]) counter = 0 for i in self.value: params["value"][counter].SetDouble(i) counter += 1 self.AssignValueProcess = KratosSolid.AssignVectorToConditionsProcess( self.model_part, params) else: #function values are assigned to a vector variable :: transformation is needed if (type(self.var) == KratosMultiphysics.Array1DVariable3): variable_name = self.settings["variable_name"].GetString( ) + "S_VECTOR" print(" variable name modified:", variable_name) params.AddEmptyValue("variable_name") params["variable_name"].SetString(variable_name) else: params.AddValue("variable_name", self.settings["variable_name"]) counter = 0 for i in self.value: params["value"][counter].SetDouble(i) counter += 1 self.AssignValueProcess = KratosSolid.AssignVectorFieldToConditionsProcess( self.model_part, self.compiled_function, "function", self.value_is_spatial_function, params) if (self.IsInsideInterval() and self.interval_string == "initial"): self.AssignValueProcess.Execute()