Esempio n. 1
0
def AllocateHistoricalVariablesFromCouplingDataSettings(
        data_settings_list, model, solver_name):
    '''This function allocates historical variables for the Modelparts

    It retrieves the historical variables that are needed for the ModelParts from the
    specified CouplingInterfaceData-settings and allocates them on the ModelParts
    Note that it can only be called after the (Main-)ModelParts are created
    '''
    data_settings_list = data_settings_list.Clone(
    )  # clone to not mess with the following validation

    for data_settings in data_settings_list.values():
        CouplingInterfaceData.GetDefaultParameters()
        data_settings.ValidateAndAssignDefaults(
            CouplingInterfaceData.GetDefaultParameters())

        if data_settings["location"].GetString() == "node_historical":
            variable = KM.KratosGlobals.GetVariable(
                data_settings["variable_name"].GetString())
            main_model_part_name = data_settings["model_part_name"].GetString(
            ).split(".")[0]
            if not model.HasModelPart(main_model_part_name):
                raise Exception(
                    'ModelPart "{}" does not exist in solver "{}"!'.format(
                        main_model_part_name, solver_name))
            main_model_part = model[main_model_part_name]
            if not main_model_part.HasNodalSolutionStepVariable(variable):
                cs_print_info(
                    "CoSimTools",
                    'Allocating historical variable "{}" in ModelPart "{}" for solver "{}"'
                    .format(variable.Name(), main_model_part_name,
                            solver_name))
                main_model_part.AddNodalSolutionStepVariable(variable)
Esempio n. 2
0
def CreateMainModelPartsFromCouplingDataSettings(data_settings_list, model,
                                                 solver_name):
    '''This function creates the Main-ModelParts that are used in the specified CouplingInterfaceData-settings'''
    data_settings_list = data_settings_list.Clone(
    )  # clone to not mess with the following validation

    for data_settings in data_settings_list.values():
        CouplingInterfaceData.GetDefaultParameters()
        data_settings.ValidateAndAssignDefaults(
            CouplingInterfaceData.GetDefaultParameters())

        main_model_part_name = data_settings["model_part_name"].GetString(
        ).split(".")[0]
        if not model.HasModelPart(main_model_part_name):
            model.CreateModelPart(main_model_part_name)
            cs_print_info(
                "CoSimTools", 'Created ModelPart "{}" for solver "{}"'.format(
                    main_model_part_name, solver_name))
Esempio n. 3
0
def CreateModelPartsFromCouplingDataSettings(data_settings_list, model,
                                             solver_name):
    '''This function creates the ModelParts-hierarchie that are used in the specified CouplingInterfaceData-settings'''
    data_settings_list = data_settings_list.Clone(
    )  # clone to not mess with the following validation

    for data_settings in data_settings_list.values():
        CouplingInterfaceData.GetDefaultParameters()
        data_settings.ValidateAndAssignDefaults(
            CouplingInterfaceData.GetDefaultParameters())

        splitted_name = data_settings["model_part_name"].GetString().split(".")
        main_model_part_name = splitted_name[0]
        sub_model_part_names = splitted_name[1:]
        if model.HasModelPart(main_model_part_name):
            main_model_part = model.GetModelPart(main_model_part_name)
        else:
            main_model_part = model.CreateModelPart(main_model_part_name)
            cs_print_info(
                "CoSimTools", 'Created ModelPart "{}" for solver "{}"'.format(
                    main_model_part_name, solver_name))
        if len(sub_model_part_names) > 0:
            RecursiveCreateModelParts(main_model_part,
                                      ".".join(sub_model_part_names))