def ComputeDeltaTime(self): if self.settings["time_step_prediction_level"].GetInt() > 1: if self.delta_time_refresh_counter >= self.settings["delta_time_refresh"].GetInt(): self.delta_time = StructuralMechanicsApplication.CalculateDeltaTime(self.GetComputingModelPart(), self.delta_time_settings) self.delta_time_refresh_counter = 0 else: self.delta_time_refresh_counter += 1 return self.delta_time
def test_SmallDisplacementElement_3D_hexa(self): dim = 3 current_model = KratosMultiphysics.Model() mp = current_model.CreateModelPart("solid_part") self._add_variables(mp) self._apply_material_properties(mp,dim) #create nodes mp.CreateNewNode(1, 0.00000, 1.00000, 1.00000) mp.CreateNewNode(2, 0.16500, 0.74500, 0.70200) mp.CreateNewNode(3, 0.27300, 0.75000, 0.23000) mp.CreateNewNode(4, 0.78800, 0.69300, 0.64400) mp.CreateNewNode(5, 0.32000, 0.18600, 0.64300) mp.CreateNewNode(6, 0.00000, 1.00000, 0.00000) mp.CreateNewNode(7, 0.00000, 0.00000, 1.00000) mp.CreateNewNode(8, 1.00000, 1.00000, 1.00000) mp.CreateNewNode(9, 0.67700, 0.30500, 0.68300) mp.CreateNewNode(10, 0.24900, 0.34200, 0.19200) mp.CreateNewNode(11, 0.85000, 0.64900, 0.26300) mp.CreateNewNode(12, 0.82600, 0.28800, 0.28800) mp.CreateNewNode(13, 0.00000, 0.00000, 0.00000) mp.CreateNewNode(14, 1.00000, 1.00000, 0.00000) mp.CreateNewNode(15, 1.00000, 0.00000, 1.00000) mp.CreateNewNode(16, 1.00000, 0.00000, 0.00000) KratosMultiphysics.VariableUtils().AddDof(KratosMultiphysics.DISPLACEMENT_X, KratosMultiphysics.REACTION_X,mp) KratosMultiphysics.VariableUtils().AddDof(KratosMultiphysics.DISPLACEMENT_Y, KratosMultiphysics.REACTION_Y,mp) KratosMultiphysics.VariableUtils().AddDof(KratosMultiphysics.DISPLACEMENT_Z, KratosMultiphysics.REACTION_Z,mp) #create a submodelpart for boundary conditions bcs = mp.CreateSubModelPart("BoundaryCondtions") bcs.AddNodes([1,6,7,8,13,14,15,16]) #create Element mp.CreateNewElement("SmallDisplacementElement3D8N", 1,[10,5,2,3,13,7,1,6], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 2,[12,9,5,10,16,15,7,13], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 3,[12,11,3,10,9,4,2,5], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 4,[9,4,2,5,15,8,1,7], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 5,[4,11,3,2,8,14,6,1], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 6,[11,4,9,12,14,8,15,16], mp.GetProperties()[1]) mp.CreateNewElement("SmallDisplacementElement3D8N", 7,[11,12,10,3,14,16,13,6], mp.GetProperties()[1]) A,b = self._define_movement(dim) self._apply_BCs(bcs,A,b) self._solve(mp) self._check_results(mp,A,b) self._check_outputs(mp,A,dim) #self.__post_process(mp) # Testing explicit utilities empty_param = KratosMultiphysics.Parameters("""{}""") max_delta_time = StructuralMechanicsApplication.CalculateDeltaTime(mp, empty_param) self.assertAlmostEqual(max_delta_time,4.1494033578614815e-07)
def Initialize(self): # Using the base Initialize super(ExplicitMechanicalSolver, self).Initialize() # Initilize delta_time self.delta_time_settings = KratosMultiphysics.Parameters("""{}""") self.delta_time_settings.AddValue("time_step_prediction_level", self.settings["time_step_prediction_level"]) self.delta_time_settings.AddValue("max_delta_time", self.settings["max_delta_time"]) if self.settings["time_step_prediction_level"].GetInt() > 0: self.delta_time = StructuralMechanicsApplication.CalculateDeltaTime(self.GetComputingModelPart(), self.delta_time_settings) else: self.delta_time = self.settings["time_stepping"]["time_step"].GetDouble()
def ComputeDeltaTime(self): if self.dynamic_settings["time_step_prediction_level"].GetInt() > 1: self.delta_time = StructuralMechanicsApplication.CalculateDeltaTime(self.GetComputingModelPart(), self.delta_time_settings) return self.delta_time