Esempio n. 1
0
def Factory(settings, Model):
    """Return a process to read a transient solution from HDF5."""
    if not isinstance(settings, KratosMultiphysics.Parameters):
        raise Exception(
            "expected input shall be a Parameters object, encapsulating a json string"
        )
    default_settings = KratosMultiphysics.Parameters("""
            {
                "model_part_name" : "MainModelPart",
                "file_settings" : {},
                "nodal_solution_step_data_settings" : {},
                "element_data_value_settings" : {},
                "nodal_data_value_settings": {},
                "time_tag_precision" : 4,
                "file_name": "DEFAULT_NAME"
            }
            """)
    settings = settings["Parameters"].Clone()
    settings.ValidateAndAssignDefaults(default_settings)
    model_part = Model[settings["model_part_name"].GetString()]
    hdf5_file_factory = hdf5_io.HDF5SerialFileFactory(
        settings["file_settings"])
    nodal_solution_step_input = hdf5_io.NodalSolutionStepDataInput(
        settings["nodal_solution_step_data_settings"])
    element_data_value_input = hdf5_io.ElementDataValueInput(
        settings["element_data_value_settings"])
    nodal_data_value_input = hdf5_io.NodalDataValueInput(
        settings["nodal_data_value_settings"])
    input_time_settings = KratosMultiphysics.Parameters("""{}""")
    input_time_settings.AddEmptyValue("time_tag_precision")
    input_time_settings.AddEmptyValue("file_name")
    if settings["file_name"].GetString() == "DEFAULT_NAME":
        input_time_settings["file_name"].SetString(model_part.Name)
    else:
        input_time_settings["file_name"].SetString(
            settings["file_name"].GetString())
    input_time_settings["time_tag_precision"].SetInt(
        settings["time_tag_precision"].GetInt())
    temporal_input_process = hdf5_io.TemporalInputProcess(
        model_part, hdf5_file_factory, input_time_settings)
    temporal_input_process.AddInput(nodal_solution_step_input)
    temporal_input_process.AddInput(element_data_value_input)
    temporal_input_process.AddInput(nodal_data_value_input)
    return temporal_input_process
Esempio n. 2
0
def Factory(settings, Model):
    """Return a process for initializing a model part from an existing HDF5 ouput file."""
    if not isinstance(settings, KratosMultiphysics.Parameters):
        raise Exception(
            "expected input shall be a Parameters object, encapsulating a json string"
        )
    default_settings = KratosMultiphysics.Parameters(r'''{
        "model_part_name" : "MainModelPart",
        "file_settings" : {
            "file_access_mode" : "read_only"
        },
        "nodal_solution_step_data_settings" : {},
        "element_data_value_settings" : {},
        "nodal_data_value_settings" : {},
        "file_name": ""
    }''')

    settings = settings["Parameters"].Clone()
    settings.ValidateAndAssignDefaults(default_settings)
    model_part = Model[settings["model_part_name"].GetString()]
    hdf5_file_factory = hdf5_io.HDF5SerialFileFactory(
        settings["file_settings"])
    nodal_history_results_input = hdf5_io.NodalSolutionStepDataInput(
        settings["nodal_solution_step_data_settings"])
    element_data_results_input = hdf5_io.ElementDataValueInput(
        settings["element_data_value_settings"])
    nodal_data_results_input = hdf5_io.NodalDataValueInput(
        settings["nodal_data_value_settings"])

    initialization_settings = KratosMultiphysics.Parameters()
    initialization_settings.AddEmptyValue("file_name")
    initialization_settings["file_name"].SetString(
        settings["file_name"].GetString())

    initialization_process = hdf5_io.InitialInputProcess(
        model_part, hdf5_file_factory, initialization_settings)
    initialization_process.AddInput(nodal_history_results_input)
    initialization_process.AddInput(element_data_results_input)
    initialization_process.AddInput(nodal_data_results_input)
    return initialization_process
Esempio n. 3
0
 def FileFactory(self, file_settings):
     return hdf5_io.HDF5SerialFileFactory(file_settings)