def CreateAssignmentProcess(self, params):

        if (self.value_is_numeric):
            params.AddEmptyValue("value").SetDouble(self.value)
            self.AssignValueProcess = KratosSolid.AssignScalarToNodesProcess(
                self.model_part, params)
        else:
            self.AssignValueProcess = KratosSolid.AssignScalarFieldToNodesProcess(
                self.model_part, self.compiled_function, "function",
                self.value_is_spatial_function, params)
    def ExecuteInitialize(self):

        # set processes
        self.FixDofsProcesses     = []
        self.FreeDofsProcesses    = []
                
        params = KratosMultiphysics.Parameters("{}")           
        params.AddValue("model_part_name", self.settings["model_part_name"])
        params.AddValue("mesh_id", self.settings["mesh_id"])
        params.AddValue("variable_name", self.settings["variable_name"])
        
        if( self.interval_string != "initial" and self.constrained == True ):
            fix_dof_process  =  KratosSolid.FixScalarDofProcess(self.model_part, params)
            self.FixDofsProcesses.append(fix_dof_process)
            free_dof_process = KratosSolid.FreeScalarDofProcess(self.model_part, params)
            self.FreeDofsProcesses.append(free_dof_process)

            self.fix_derivated_variable = False
            for dynamic_variable in self.AngularDynamicVariables:
                if dynamic_variable in self.variable_name:
                    self.derivated_variable_name = "ROTATION" + self.variable_name[-2:]
                    self.fix_derivated_variable = True

            if( self.fix_derivated_variable == False ):
                for dynamic_variable in self.LinearDynamicVariables:
                    if dynamic_variable in self.variable_name:
                        self.derivated_variable_name = "DISPLACEMENT" + self.variable_name[-2:]
                        self.fix_derivated_variable = True
                     
            if( self.fix_derivated_variable ):
                params["variable_name"].SetString(self.derivated_variable_name)
                fix_dof_process  =  KratosSolid.FixScalarDofProcess(self.model_part, params)
                self.FixDofsProcesses.append(fix_dof_process)
                free_dof_process = KratosSolid.FreeScalarDofProcess(self.model_part, params)
                self.FreeDofsProcesses.append(free_dof_process)
                params["variable_name"].SetString(self.settings["variable_name"].GetString())
                
                
        if( self.value_is_numeric ):
            params.AddEmptyValue("value").SetDouble(self.value)
            self.AssignValueProcess = KratosSolid.AssignScalarToNodesProcess(self.model_part, params)
        else:
            self.AssignValueProcess = KratosSolid.AssignScalarFieldToNodesProcess(self.model_part, self.compiled_function, "function",  self.value_is_spatial_function, params)
        
                   
        if ( self.IsInsideInterval() and self.interval_string == "initial" ):
            self.AssignValueProcess.Execute()