Beispiel #1
0
 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)
Beispiel #2
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)
Beispiel #3
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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
 def test_DefaultProcess(self):
     model = KratosMultiphysics.Model()
     model_part = model.CreateModelPart('test')
     parent_settings = KratosMultiphysics.Parameters('''
         {
             "list_of_controllers" : [
                 {
                     "model_part_name" : "test"
                 }
             ]
         }
         ''')
     parent_settings = ParametersWrapper(parent_settings)
     process = core.Factory(parent_settings['list_of_controllers'], model)
     patcher1 = patch(
         'KratosMultiphysics.HDF5Application.core.file_io.KratosHDF5.HDF5FileSerial',
         autospec=True)
     patcher2 = patch(
         'KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5ModelPartIO',
         autospec=True)
     patcher1.start()
     MockHDF5ModelPartIO = patcher2.start()
     process.ExecuteInitialize()
     model_part_io = MockHDF5ModelPartIO.return_value
     model_part_io.WriteModelPart.assert_called_once_with(model_part)
     patcher1.stop()
     patcher2.stop()
Beispiel #9
0
 def test_DefaultSettings(self):
     model = KratosMultiphysics.Model()
     model.CreateModelPart('test')
     parent_settings = KratosMultiphysics.Parameters('''
         {
             "list_of_controllers" : [
                 {
                     "model_part_name" : "test"
                 }
             ]
         }
         ''')
     parent_settings = ParametersWrapper(parent_settings)
     core.Factory(parent_settings['list_of_controllers'], model)
     settings = parent_settings['list_of_controllers'][0]
     self.assertTrue(settings.Has('model_part_name'))
     self.assertTrue(settings.Has('process_step'))
     self.assertTrue(settings.Has('controller_settings'))
     self.assertTrue(settings.Has('io_settings'))
     self.assertTrue(settings.Has('list_of_operations'))
     self.assertTrue(settings['list_of_operations'].IsArray())
     self.assertEqual(settings['list_of_operations'].size(), 1)
     self.assertTrue(
         settings['list_of_operations'][0].Has('operation_type'))
     self.assertTrue(settings['list_of_operations'][0].Has('prefix'))
Beispiel #10
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)
Beispiel #11
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)
Beispiel #12
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)
Beispiel #13
0
 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)
Beispiel #14
0
 def _FilenameGetterSettings(**kwargs):
     settings = ParametersWrapper()
     if 'file_name' in kwargs:
         settings['file_name'] = kwargs['file_name']
     else:
         settings['file_name'] = 'kratos.h5'
     if 'time_format' in kwargs:
         settings['time_format'] = kwargs['time_format']
     return settings
Beispiel #15
0
 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)
Beispiel #16
0
 def test_VariableIO_Settings(self):
     settings1 = ParametersWrapper()
     variable_io = operations.VariableIO(settings1)
     settings2 = variable_io.GetSettings(_SurrogateModelPart())
     for settings in [settings1, settings2]:
         self.assertTrue(settings.Has('prefix'))
         self.assertTrue(settings.Has('list_of_variables'))
         self.assertEqual(settings['prefix'], '/ResultsData')
         self.assertTrue(settings['list_of_variables'].IsArray())
         self.assertEqual(len(settings['list_of_variables']), 0)
Beispiel #17
0
 def test_VariableIO_GetSettingsWithNonTerminalPrefix(self):
     input_settings = ParametersWrapper('''
         {
             "prefix": "/ModelData/<model_part_name>/<time>",
             "time_format": "0.2f"
         }
         ''')
     variable_io = operations.VariableIO(input_settings)
     settings = variable_io.GetSettings(_SurrogateModelPart())
     self.assertEqual(settings['prefix'], '/ModelData/model_part/1.23')
Beispiel #18
0
 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)
Beispiel #19
0
 def test_EmptyArraySettings(self):
     model = KratosMultiphysics.Model()
     settings = KratosMultiphysics.Parameters('''
         {
             "list_of_controllers" : []
         }
         ''')
     settings = ParametersWrapper(settings)
     with self.assertRaisesRegex(
             RuntimeError,
             '"PLEASE_SPECIFY_MODEL_PART_NAME" was not found'):
         core.Factory(settings['list_of_controllers'], model)
Beispiel #20
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)
Beispiel #21
0
def CreateOperationSettings(operation_type, user_settings):
    """Return core settings for an operation type.

    See core.operations.
    """
    core_settings = ParametersWrapper("""
    {
        "operation_type": "%s"
    }
    """ % operation_type)
    for key in user_settings:
        core_settings[key] = user_settings[key]
    return core_settings
Beispiel #22
0
 def test_SetDefaults(self):
     settings = ParametersWrapper()
     file_io._SetDefaults(settings)
     self.assertTrue(settings.Has('io_type'))
     self.assertTrue(settings.Has('file_name'))
     self.assertFalse(settings.Has('time_format'))
     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_name'], 'kratos')
     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)
Beispiel #23
0
 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)
Beispiel #24
0
 def test_ModelPartOutput_NonTerminalPrefix(self):
     settings = ParametersWrapper('''
         {
             "operation_type": "model_part_output",
             "prefix": "/ModelData/<model_part_name>/<time>",
             "time_format": "0.2f"
         }
         ''')
     model_part_output = operations.Create(settings)
     with patch('KratosMultiphysics.HDF5Application.core.operations.KratosHDF5.HDF5ModelPartIO', autospec=True) as p:
         model_part = _SurrogateModelPart()
         hdf5_file = MagicMock(spec=KratosHDF5.HDF5FileSerial)
         model_part_output(model_part, hdf5_file)
         args, _ = p.call_args
         self.assertEqual(args[1], '/ModelData/model_part/1.23')
Beispiel #25
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)
Beispiel #26
0
 def test_SetDefaults_ParallelIO(self):
     settings = ParametersWrapper()
     settings.AddEmptyValue('io_type').SetString('parallel_hdf5_file_io')
     file_io._SetDefaults(settings)
     self.assertEqual(settings['file_driver'], 'mpio')
Beispiel #27
0
 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')
Beispiel #28
0
 def test_nonarray_keys(self):
     settings = ParametersWrapper(self.get_params)
     for k in settings['parameters']:
         self.assertEqual(k, 'double_value')
Beispiel #29
0
 def test_array_keys(self):
     settings = ParametersWrapper(self.get_params)
     count = 0
     for k in settings['array_of_double_values']:
         self.assertEqual(k, count)
     count += 1
Beispiel #30
0
 def test_CreateNonExistingController(self):
     settings = ParametersWrapper()
     settings['controller_type'] = 'abcdefg'
     with self.assertRaisesRegex(ValueError, r'"controller_type" has invalid value "abcdefg"'):
         controllers.Create(MagicMock(), MagicMock(), settings)