def test_TemporalController_CreateWithParameters(self): model_part = _SurrogateModelPart() io = file_io.Create(KratosMultiphysics.Parameters()) controller_settings = KratosMultiphysics.Parameters() controller_settings.AddEmptyValue('controller_type').SetString( 'temporal_controller') controller_settings.AddEmptyValue('time_frequency').SetDouble(2.0) controller_settings.AddEmptyValue('step_frequency').SetInt(3) controller = controllers.Create(model_part, io, controller_settings) self.assertEqual(controller.time_frequency, 2.0) self.assertEqual(controller.step_frequency, 3)
def test_TemporalController_OperationCall(self): model_part = _SurrogateModelPart() controller_settings = KratosMultiphysics.Parameters() controller_settings.AddEmptyValue('controller_type').SetString( 'temporal_controller') io = file_io.Create(KratosMultiphysics.Parameters()) operation = MagicMock(spec=operations.ModelPartOutput) controller = controllers.Create(model_part, io, controller_settings) controller.Add(operation) with patch('core.file_io.KratosHDF5.HDF5FileSerial', autospec=True): for _ in range(10): controller() self.assertEqual(operation.call_count, 10)
def test_TemporalController_CreateWithDefaults(self): model_part = _SurrogateModelPart() io = file_io.Create(KratosMultiphysics.Parameters()) controller_settings = KratosMultiphysics.Parameters() controller_settings.AddEmptyValue('controller_type').SetString( 'temporal_controller') controller = controllers.Create(model_part, io, controller_settings) self.assertEqual(controller.model_part, model_part) self.assertEqual(controller.io, io) self.assertEqual(controller.time_frequency, 1.0) self.assertEqual(controller.step_frequency, 1) self.assertEqual(controller.current_time, 0.0) self.assertEqual(controller.current_step, 0)
def test_TemporalController_StepFrequency(self): model_part = _SurrogateModelPart() controller_settings = KratosMultiphysics.Parameters() controller_settings.AddEmptyValue('step_frequency').SetInt(2) controller_settings.AddEmptyValue('controller_type').SetString( 'temporal_controller') with patch('core.file_io._HDF5SerialFileIO', autospec=True): io = file_io.Create(KratosMultiphysics.Parameters()) controller = controllers.Create(model_part, io, controller_settings) for i in range(10): controller() io.Get.assert_called_with(model_part) self.assertEqual(io.Get.call_count, 5)
def test_DefaultController(self): model_part = _SurrogateModelPart() io_settings = KratosMultiphysics.Parameters() controller_settings = KratosMultiphysics.Parameters() with patch('core.file_io.KratosHDF5.HDF5FileSerial', autospec=True): io = file_io.Create(io_settings) controller = controllers.Create(model_part, io, controller_settings) self.assertTrue(controller_settings.Has('controller_type')) self.assertEqual( controller_settings['controller_type'].GetString(), 'default_controller') self.assertEqual(controller.model_part, model_part) self.assertEqual(controller.io, io) operation = MagicMock(spec=operations.ModelPartOutput) controller() controller.Add(operation) for i in range(10): controller() self.assertEqual(operation.call_count, 10)
def test_CreateNonExistingController(self): settings = KratosMultiphysics.Parameters() settings.AddEmptyValue('controller_type').SetString('abcdefg') with self.assertRaisesRegex( ValueError, r'"controller_type" has invalid value "abcdefg"'): controllers.Create(MagicMock(), MagicMock(), settings)