def test_variable_scaling_step(self): scaling_op_settings = KM.Parameters("""{ "type" : "scaling", "solver" : "dummy_solver", "data_name" : "data_4_testing", "scaling_factor" : "1.5*sqrt(step)*pi", "echo_level" : 0 }""") scaling_op = coupling_operation_factory.CreateCouplingOperation(scaling_op_settings, self.solver_wrappers, self.solver_process_info) factors = [1.5*pi*sqrt(1), 1.5*pi*sqrt(2), 1.5*pi*sqrt(3), 1.5*pi*sqrt(4), 1.5*pi*sqrt(5)] self.__ExecuteTest(scaling_op, factors)
def test_variable_scaling_time(self): scaling_op_settings = KM.Parameters("""{ "type" : "scaling", "solver" : "dummy_solver", "data_name" : "data_4_testing", "scaling_factor" : "1.5*t", "echo_level" : 0 }""") scaling_op = coupling_operation_factory.CreateCouplingOperation(scaling_op_settings, self.solver_wrappers, self.solver_process_info) factors = [1.5*0.25, 1.5*0.5, 1.5*0.75] self.__ExecuteTest(scaling_op, factors)
def test_constant_scaling_from_string(self): scaling_op_settings = KM.Parameters("""{ "type" : "scaling", "solver" : "dummy_solver", "data_name" : "data_4_testing", "scaling_factor" : "1.5", "echo_level" : 0 }""") scaling_op = coupling_operation_factory.CreateCouplingOperation(scaling_op_settings, self.solver_wrappers, self.solver_process_info) factors = [1.5] * 3 self.__ExecuteTest(scaling_op, factors)
def test_scaling_in_interval_2(self): scaling_op_settings = KM.Parameters("""{ "type" : "scaling", "solver" : "dummy_solver", "data_name" : "data_4_testing", "scaling_factor" : 1.22, "interval" : [0.8, "End"] }""") scaling_op = coupling_operation_factory.CreateCouplingOperation( scaling_op_settings, self.solver_wrappers, self.solver_process_info) factors = [1.0] * 3 factors.extend([1.22] * 3) self.__ExecuteTest(scaling_op, factors)
def test_scaling_in_interval(self): if using_pykratos: self.skipTest("This test can only be run with pyKratos after the IntervalUtility is implemented!") scaling_op_settings = KM.Parameters("""{ "type" : "scaling", "solver" : "dummy_solver", "data_name" : "data_4_testing", "scaling_factor" : 1.22, "interval" : [0.0, 0.3] }""") scaling_op = coupling_operation_factory.CreateCouplingOperation(scaling_op_settings, self.solver_wrappers, self.solver_process_info) factors = [1.0] * 5 factors[0] = 1.22 self.__ExecuteTest(scaling_op, factors)
def test_elemental_to_nodal_conversion(self): self.model = KM.Model() self.model_part = self.model.CreateModelPart("default") self.model_part.AddNodalSolutionStepVariable(KM.FORCE) self.model_part.ProcessInfo[KM.DOMAIN_SIZE] = 3 props = self.model_part.CreateNewProperties(1) self.model_part.CreateNewNode(1, 0.0, 0.0, 0.0) self.model_part.CreateNewNode(2, 1.0, 0.0, 0.0) self.model_part.CreateNewNode(3, 1.0, 1.0, 0.0) self.model_part.CreateNewNode(4, 0.0, 1.0, 0.0) new_element = self.model_part.CreateNewElement("Element2D4N", 1, [1, 2, 3, 4], props) new_element.SetValue(KM.FORCE, [12.0, 8.0, 0.0]) self.model_part.CreateNewNode(5, 2.0, 0.0, 0.0) self.model_part.CreateNewNode(6, 2.0, 1.0, 0.0) new_element = self.model_part.CreateNewElement("Element2D4N", 2, [2, 5, 6, 3], props) new_element.SetValue(KM.FORCE, [16.0, 4.0, 0.0]) elemental_data = KM.Parameters("""{ "model_part_name" : "default", "location" : "element", "variable_name" : "FORCE", "dimension" : 3 }""") self.interface_data = CouplingInterfaceData(elemental_data, self.model) self.solver_wrappers = { "dummy_solver": DummySolverWrapper({"elemental_data": self.interface_data}) } self.solver_process_info = KM.ProcessInfo() conversion_op_settings = KM.Parameters("""{ "type" : "elemental_data_to_nodal_data", "solver" : "dummy_solver", "data_name" : "elemental_data", "echo_level" : 0 }""") conversion_operation = coupling_operation_factory.CreateCouplingOperation( conversion_op_settings, self.solver_wrappers, self.solver_process_info) conversion_operation.Check() conversion_operation.Execute() nodal_data_output_setting = KM.Parameters("""{ "model_part_name" : "default", "variable_name" : "FORCE", "location" : "node_historical", "dimension" : 3 }""") nodal_data_output = CouplingInterfaceData(nodal_data_output_setting, self.model) expected_nodal_values = [ 3, 2, 0, 7, 3, 0, 7, 3, 0, 3, 2, 0, 4, 1, 0, 4, 1, 0 ] self.assertVectorAlmostEqual(expected_nodal_values, nodal_data_output.GetData())