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) default_settings = KratosMultiphysics.Parameters(""" { "help" : "This process applies constraints to the particles in a certain submodelpart, for a certain time interval", "mesh_id" : 0, "model_part_name" : "please_specify_model_part_name", "velocity_constraints_settings" : { "constrained" : [true,true,true], "value" : [10.0, "3*t", "x+y"] }, "angular_velocity_constraints_settings" : { "constrained" : [true,true,true], "value" : [10.0, "3*t", "x+y"] }, "interval" : [0.0, 1e30] } """) #example of admissible values for "value" : [10.0, "3*t", "x+y"] ## Trick to ensure that if someone sets constrained as a single bool, it is transformed to a vector if settings["velocity_constraints_settings"].Has("constrained"): if settings["velocity_constraints_settings"]["constrained"].IsBool( ): is_fixed = settings["velocity_constraints_settings"][ "constrained"].GetBool() settings["velocity_constraints_settings"][ "constrained"] = default_settings[ "velocity_constraints_settings"]["constrained"] for i in range(3): settings["velocity_constraints_settings"]["constrained"][ i].SetBool(is_fixed) if settings["angular_velocity_constraints_settings"].Has( "constrained"): if settings["angular_velocity_constraints_settings"][ "constrained"].IsBool(): is_fixed = settings["angular_velocity_constraints_settings"][ "constrained"].GetBool() settings["angular_velocity_constraints_settings"][ "constrained"] = default_settings[ "angular_velocity_constraints_settings"]["constrained"] for i in range(3): settings["angular_velocity_constraints_settings"][ "constrained"][i].SetBool(is_fixed) settings.ValidateAndAssignDefaults(default_settings) self.model_part = Model[settings["model_part_name"].GetString()] self.cplusplus_version_of_this_process = DEM.ApplyKinematicConstraintsProcess( self.model_part, settings)
def Factory(settings, Model): if (type(settings) != KratosMultiphysics.Parameters): raise Exception( "expected input shall be a Parameters object, encapsulating a json string" ) process_settings = settings["Parameters"] folder_settings = KratosMultiphysics.Parameters(""" { "help" : "This process applies constraints to the particles in a certain submodelpart, for a certain time interval", "mesh_id" : 0, "model_part_name" : "please_specify_model_part_name", "velocity_constraints_settings" : { "constrained" : [true,true,true], "value" : [10.0, "3*t", "x+y"], "table" : [0, 0, 0] }, "angular_velocity_constraints_settings" : { "constrained" : [true,true,true], "value" : [10.0, "3*t", "x+y"], "table" : [0, 0, 0] }, "interval" : [0.0, 1e30] } """) process_settings.AddMissingParameters(folder_settings) if process_settings.Has("model_part_name"): computing_model_part = Model[ process_settings["model_part_name"].GetString()] else: # using default name computing_model_part = Model["DEM"] process_settings.RemoveValue("help") return DEM.ApplyKinematicConstraintsProcess(computing_model_part, process_settings)