def test_ModelPartOutput(self): settings = ParametersWrapper() model_part_output = operations.Create(settings) self.assertTrue(settings.Has('operation_type')) self.assertTrue(settings.Has('prefix')) self.assertEqual(settings['operation_type'], 'model_part_output') with patch('KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5ModelPartIO', autospec=True) as p: model_part_io = p.return_value model_part = _SurrogateModelPart() hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileSerial) model_part_output(model_part, hdf5_file) p.assert_called_once_with(hdf5_file, '/ModelData') model_part_io.WriteModelPart.assert_called_once_with(model_part)
def test_PrimalBossakInput(self): settings = ParametersWrapper() settings['operation_type'] = 'primal_bossak_input' primal_bossak_input = operations.Create(settings) self.assertTrue(settings.Has('prefix')) self.assertTrue(settings.Has('list_of_variables')) self.assertTrue(settings['list_of_variables'].IsArray()) self.assertIsInstance(primal_bossak_input, operations.VariableIO) with patch('KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5NodalSolutionStepBossakIO', autospec=True) as p: nodal_solution_step_bossak_io = p.return_value model_part = _SurrogateModelPart() hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileSerial) primal_bossak_input(model_part, hdf5_file) self.assertEqual(p.call_count, 1) self.assertEqual(nodal_solution_step_bossak_io.ReadNodalResults.call_count, 1)
def test_ElementDataValueInput(self): settings = ParametersWrapper() settings['operation_type'] = 'element_data_value_input' element_data_value_input = operations.Create(settings) self.assertTrue(settings.Has('prefix')) self.assertTrue(settings.Has('list_of_variables')) self.assertTrue(settings['list_of_variables'].IsArray()) self.assertIsInstance(element_data_value_input, operations.VariableIO) with patch('KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5ElementDataValueIO', autospec=True) as p: element_data_value_io = p.return_value model_part = _SurrogateModelPart() hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileSerial) element_data_value_input(model_part, hdf5_file) self.assertEqual(p.call_count, 1) self.assertEqual(element_data_value_io.ReadElementResults.call_count, 1)
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_PartitionedModelPartOutput(self): settings = ParametersWrapper() settings['operation_type'] = 'partitioned_model_part_output' partitioned_model_part_output = operations.Create(settings) self.assertTrue(settings.Has('operation_type')) self.assertTrue(settings.Has('prefix')) with patch( 'KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5PartitionedModelPartIO' ) as p: partitioned_model_part_io = p.return_value model_part = test_hdf5_core._SurrogateModelPart() hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileParallel) partitioned_model_part_output(model_part, hdf5_file) p.assert_called_once_with(hdf5_file, '/ModelData') partitioned_model_part_io.WriteModelPart.assert_called_once_with( model_part)
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_NodalFlagValueOutput(self): settings = ParametersWrapper() settings['operation_type'] = 'nodal_flag_value_output' nodal_flag_value_output = operations.Create(settings) self.assertTrue(settings.Has('prefix')) self.assertTrue(settings.Has('list_of_variables')) self.assertTrue(settings['list_of_variables'].IsArray()) self.assertIsInstance(nodal_flag_value_output, operations.VariableIO) with patch( 'KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5NodalFlagValueIO', autospec=True) as p: nodal_flag_value_io = p.return_value model_part = _SurrogateModelPart() hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileSerial) nodal_flag_value_output(model_part, hdf5_file) self.assertEqual(p.call_count, 1) self.assertEqual(nodal_flag_value_io.WriteNodalFlags.call_count, 1)
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)
def test_SetDefaults_NonTerminalTime(self): settings = ParametersWrapper() settings['file_name'] = 'kratos-<time>.h5' file_io._SetDefaults(settings) self.assertTrue(settings.Has('time_format')) self.assertEqual(settings['time_format'], '0.4f')