def test_TemporalController_CreateWithParameters(self): model_part = _SurrogateModelPart() io = file_io.Create(ParametersWrapper()) controller_settings = ParametersWrapper() controller_settings['controller_type'] = 'temporal_controller' controller_settings['time_frequency'] = 2.0 controller_settings['step_frequency'] = 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_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_Create_Attributes(self): settings = ParametersWrapper() io = file_io.Create(settings) self.assertIsInstance(io, file_io._HDF5SerialFileIO) self.assertTrue(hasattr(io, 'filename_getter')) self.assertEqual(io.file_access_mode, 'exclusive') if os.name == 'posix': self.assertEqual(io.file_driver, 'sec2') elif os.name == 'nt': self.assertEqual(io.file_driver, 'windows') self.assertEqual(io.echo_level, 0)
def test_TemporalController_CreateWithDefaults(self): model_part = _SurrogateModelPart() io = file_io.Create(ParametersWrapper()) controller_settings = ParametersWrapper() controller_settings['controller_type'] = '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_Create_Attributes(self): settings = ParametersWrapper() data_comm = KratosMultiphysics.Testing.GetDefaultDataCommunicator() io = file_io.Create(settings, data_comm) self.assertIsInstance(io, file_io._HDF5SerialFileIO) self.assertTrue(hasattr(io, 'filename_getter')) self.assertEqual(io.file_access_mode, 'exclusive') if os.name == 'posix': self.assertEqual(io.file_driver, 'sec2') elif os.name == 'nt': self.assertEqual(io.file_driver, 'windows') self.assertEqual(io.echo_level, 0)
def test_TemporalController_OperationCall(self): model_part = _SurrogateModelPart() controller_settings = ParametersWrapper() controller_settings['controller_type'] = 'temporal_controller' io = file_io.Create(ParametersWrapper()) operation = MagicMock(spec=operations.ModelPartOutput) controller = controllers.Create( model_part, io, controller_settings) controller.Add(operation) with patch('KratosMultiphysics.HDF5Application.core.file_io.KratosHDF5.HDF5FileSerial', autospec=True): for _ in range(10): controller() self.assertEqual(operation.call_count, 10)
def test_TemporalController_StepFrequency(self): model_part = _SurrogateModelPart() controller_settings = ParametersWrapper() controller_settings['step_frequency'] = 2 controller_settings['controller_type'] = 'temporal_controller' with patch('KratosMultiphysics.HDF5Application.core.file_io._HDF5SerialFileIO', autospec=True): io = file_io.Create(ParametersWrapper()) 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_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('KratosMultiphysics.HDF5Application.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_Create_Settings(self): settings = ParametersWrapper() file_io.Create(settings) self.assertTrue(settings.Has('io_type')) self.assertTrue(settings.Has('file_name')) self.assertTrue(settings.Has('file_access_mode')) self.assertTrue(settings.Has('file_driver')) self.assertTrue(settings.Has('echo_level')) self.assertEqual(settings['io_type'], 'serial_hdf5_file_io') self.assertEqual(settings['file_access_mode'], 'exclusive') if os.name == 'posix': self.assertEqual(settings['file_driver'], 'sec2') elif os.name == 'nt': self.assertEqual(settings['file_driver'], 'windows') self.assertEqual(settings['echo_level'], 0)
def test_Create_Settings(self): settings = ParametersWrapper() data_comm = KratosMultiphysics.Testing.GetDefaultDataCommunicator() file_io.Create(settings, data_comm) self.assertTrue(settings.Has('io_type')) self.assertTrue(settings.Has('file_name')) self.assertTrue(settings.Has('file_access_mode')) self.assertTrue(settings.Has('file_driver')) self.assertTrue(settings.Has('echo_level')) self.assertEqual(settings['io_type'], 'serial_hdf5_file_io') self.assertEqual(settings['file_access_mode'], 'exclusive') if os.name == 'posix': self.assertEqual(settings['file_driver'], 'sec2') elif os.name == 'nt': self.assertEqual(settings['file_driver'], 'windows') self.assertEqual(settings['echo_level'], 0)
def test_Create_Settings(self): settings = KratosMultiphysics.Parameters() file_io.Create(settings) self.assertTrue(settings.Has('io_type')) self.assertTrue(settings.Has('file_name')) self.assertTrue(settings.Has('file_access_mode')) self.assertTrue(settings.Has('file_driver')) self.assertTrue(settings.Has('echo_level')) self.assertEqual( settings['io_type'].GetString(), 'serial_hdf5_file_io') self.assertEqual(settings['file_access_mode'].GetString(), 'exclusive') if os.name == 'posix': self.assertEqual(settings['file_driver'].GetString(), 'sec2') elif os.name == 'nt': self.assertEqual(settings['file_driver'].GetString(), 'windows') self.assertEqual(settings['echo_level'].GetInt(), 0)
def test_TemporalController_OperationCall(self, mock_class): mock_instance = mock_class.return_value mock_instance.GetFileName.return_value = 'kratos.h5' model_part = _SurrogateModelPart() data_comm = model_part.GetCommunicator().GetDataCommunicator() controller_settings = ParametersWrapper() controller_settings['controller_type'] = 'temporal_controller' io = file_io.Create(ParametersWrapper(), data_comm) operation = MagicMock(spec=operations.ModelPartOutput) controller = controllers.Create(model_part, io, controller_settings) controller.Add(operation) with patch( 'KratosMultiphysics.HDF5Application.core.file_io.KratosHDF5.HDF5FileSerial', autospec=True): for _ in range(10): controller() self.assertEqual(operation.call_count, 10)
def test_TemporalController_NearlyTheSameTimeFrequency(self): model_part = _SurrogateModelPart() data_comm = model_part.GetCommunicator().GetDataCommunicator() controller_settings = ParametersWrapper() controller_settings['step_frequency'] = 100 controller_settings['time_frequency'] = 0.2000001 controller_settings['controller_type'] = 'temporal_controller' with patch( 'KratosMultiphysics.HDF5Application.core.file_io._HDF5SerialFileIO', autospec=True): io = file_io.Create(ParametersWrapper(), data_comm) controller = controllers.Create(model_part, io, controller_settings) for _ 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 = ParametersWrapper() controller_settings = ParametersWrapper() with patch('KratosMultiphysics.HDF5Application.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'], '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_DefaultController(self, mock_class): mock_instance = mock_class.return_value mock_instance.GetFileName.return_value = 'kratos.h5' model_part = _SurrogateModelPart() data_comm = model_part.GetCommunicator().GetDataCommunicator() io_settings = ParametersWrapper() controller_settings = ParametersWrapper() with patch( 'KratosMultiphysics.HDF5Application.core.file_io.KratosHDF5.HDF5FileSerial', autospec=True): io = file_io.Create(io_settings, data_comm) controller = controllers.Create(model_part, io, controller_settings) self.assertTrue(controller_settings.Has('controller_type')) self.assertEqual(controller_settings['controller_type'], '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)