KratosMultiphysics / GiDInterface

The graphical user interface of Kratos for GiD. Featuring CFD, CSM, DEM, PFEM, etc
Other
30 stars 16 forks source link

PFEM Fluid improvements #713

Open jginternational opened 4 years ago

jginternational commented 4 years ago

@MZecchetto , add a json example

jginternational commented 4 years ago
{
    "problem_data"         : {
        "problem_name"   : "coupling_test_1_mesh_size_04",
        "start_time"     : 0.0,
        "end_time"       : 15.0,
        "echo_level"     : 0,
        "parallel_type"  : "OpenMP",
        "threads"        : 8,
        "gravity_vector" : [0.0,-9.81,0.0]
    },
    "solver_settings"      : {
        "solver_type"       : "pfem_fluid_thermally_coupled_solver",
        "domain_size"                        : 2,
        "time_stepping"                      : {
            "automatic_time_step" : true,
            "time_step"           : 0.002
        },
        "fluid_solver_settings": {
            "solver_type"                        : "pfem_fluid_solver",
            "model_part_name"                    : "PfemFluidModelPart",
            "physics_type"                       : "fsi",
            "domain_size"                        : 2,
            "model_import_settings"              : {
                "input_type"     : "mdpa",
                "input_filename" : "coupling_test_1_mesh_size_04"
            },
            "time_stepping"                      : {
                "automatic_time_step" : true,
                "time_step"           : 0.002
            },
            "maximum_pressure_iterations"        : 7,
            "velocity_tolerance"                 : 1e-5,
            "pressure_tolerance"                 : 1e-5,
            "echo_level"                         : 1,
            "velocity_linear_solver_settings"    : {
                "solver_type"         : "bicgstab",
                "max_iteration"       : 5000,
                "tolerance"           : 1e-9,
                "preconditioner_type" : "ilu0",
                "scaling"             : false
            },
            "pressure_linear_solver_settings"    : {
                "solver_type"         : "bicgstab",
                "max_iteration"       : 5000,
                "tolerance"           : 1e-9,
                "preconditioner_type" : "ilu0",
                "scaling"             : false
            },
            "bodies_list"                        : [{
                "body_type"  : "Fluid",
                "body_name"  : "Fluid",
                "parts_list" : ["Parts_Parts_Auto1"]
            },{
                "body_type"  : "Solid",
                "body_name"  : "Solid",
                "parts_list" : ["Parts_Parts_Auto2"]
            },{
                "body_type"  : "Rigid",
                "body_name"  : "Interface",
                "parts_list" : ["Parts_Parts_Auto3"]
            }],
            "problem_domain_sub_model_part_list" : ["Parts_Parts_Auto1","Parts_Parts_Auto2","Parts_Parts_Auto3"],
            "processes_sub_model_part_list"      : ["VELOCITY_Parts_Auto2"]
        },
        "thermal_solver_settings"  : {
            "solver_type"                        : "Transient",
            "analysis_type"                      : "linear",
            "model_part_name"                    : "ThermalModelPart",
            "computing_model_part_name"          : "thermal_computing_domain",
            "domain_size"                        : 2,
            "reform_dofs_at_each_step"           : true,
            "model_import_settings"              : {
                "input_type"     : "use_input_model_part",
                "input_filename" : "unknown_name"
            },
            "material_import_settings"           : {
                "materials_filename" : "ConvectionDiffusionMaterials.json"
            },
            "line_search"                        : false,
            "echo_level"                         : 2,
            "compute_reactions"                  : false,
            "max_iteration"                      : 10,
            "convergence_criterion"              : "residual_criterion",
            "solution_relative_tolerance"        : 1e-5,
            "solution_absolute_tolerance"        : 1e-7,
            "residual_relative_tolerance"        : 1e-5,
            "residual_absolute_tolerance"        : 1e-7,
            "problem_domain_sub_model_part_list" : ["Fluid","Solid"],
            "processes_sub_model_part_list"      : []
        }
    },
    "problem_process_list" : [{
        "help"          : "This process applies meshing to the problem domains",
        "kratos_module" : "KratosMultiphysics.PfemFluidDynamicsApplication",
        "python_module" : "remesh_fluid_domains_process",
        "process_name"  : "RemeshFluidDomainsProcess",
        "Parameters"    : {
            "model_part_name"       : "PfemFluidModelPart",
            "meshing_control_type"  : "step",
            "meshing_frequency"     : 1.0,
            "meshing_before_output" : true,
            "meshing_domains"       : [{
                "model_part_name"      : "Fluid",
                "python_module"        : "fluid_meshing_domain",
                "alpha_shape"          : 1.25,
                "offset_factor"        : 0.0,
                "meshing_strategy"     : {
                    "python_module"                 : "fluid_meshing_strategy",
                    "meshing_frequency"             : 0,
                    "remesh"                        : true,
                    "refine"                        : true,
                    "reconnect"                     : false,
                    "transfer"                      : false,
                    "constrained"                   : false,
                    "mesh_smoothing"                : false,
                    "variables_smoothing"           : false,
                    "elemental_variables_to_smooth" : ["DETERMINANT_F"],
                    "reference_element_type"        : "TwoStepUpdatedLagrangianVPFluidElement2D",
                    "reference_condition_type"      : "CompositeCondition2D2N"
                },
                "spatial_bounding_box" : {
                    "use_bounding_box" : true,
                    "initial_time"     : 0.0,
                    "final_time"       : 20.0,
                    "upper_point"      : [0.805,15.0,10],
                    "lower_point"      : [-0.805,0.0,-10]
                },
                "spatial_refining_box" : {
                    "use_refining_box" : false,
                    "mesh_size"        : 0.01,
                    "initial_time"     : 0.0,
                    "final_time"       : 1000.0,
                    "upper_point"      : [10,10,10],
                    "lower_point"      : [-10,-10,-10]
                },
                "refining_parameters"  : {
                    "critical_size"       : 0.0,
                    "threshold_variable"  : "PLASTIC_STRAIN",
                    "reference_threshold" : 0.0,
                    "error_variable"      : "NORM_ISOCHORIC_STRESS",
                    "reference_error"     : 0.0,
                    "add_nodes"           : false,
                    "insert_nodes"        : true,
                    "remove_nodes"        : {
                        "apply_removal" : true,
                        "on_distance"   : true,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "remove_boundary"     : {
                        "apply_removal" : false,
                        "on_distance"   : false,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "refine_elements"     : {
                        "apply_refinement" : true,
                        "on_distance"      : true,
                        "on_threshold"     : false,
                        "on_error"         : false
                    },
                    "refine_boundary"     : {
                        "apply_refinement" : false,
                        "on_distance"      : false,
                        "on_threshold"     : false,
                        "on_error"         : false
                    }
                }
            },{
                "model_part_name"      : "Solid",
                "python_module"        : "fluid_meshing_domain",
                "alpha_shape"          : 1.25,
                "offset_factor"        : 0.0,
                "meshing_strategy"     : {
                    "python_module"                 : "fluid_meshing_strategy",
                    "meshing_frequency"             : 0,
                    "remesh"                        : false,
                    "refine"                        : false,
                    "reconnect"                     : false,
                    "transfer"                      : false,
                    "constrained"                   : false,
                    "mesh_smoothing"                : false,
                    "variables_smoothing"           : false,
                    "elemental_variables_to_smooth" : ["DETERMINANT_F"],
                    "reference_element_type"        : "TwoStepUpdatedLagrangianVPFluidElement2D",
                    "reference_condition_type"      : "CompositeCondition2D2N"
                },
                "spatial_bounding_box" : {
                    "use_bounding_box" : true,
                    "initial_time"     : 0.0,
                    "final_time"       : 20.0,
                    "upper_point"      : [0.805,15.0,10],
                    "lower_point"      : [-0.805,0.0,-10]
                },
                "spatial_refining_box" : {
                    "use_refining_box" : false,
                    "mesh_size"        : 0.01,
                    "initial_time"     : 0.0,
                    "final_time"       : 1000.0,
                    "upper_point"      : [10,10,10],
                    "lower_point"      : [-10,-10,-10]
                },
                "refining_parameters"  : {
                    "critical_size"       : 0.0,
                    "threshold_variable"  : "PLASTIC_STRAIN",
                    "reference_threshold" : 0.0,
                    "error_variable"      : "NORM_ISOCHORIC_STRESS",
                    "reference_error"     : 0.0,
                    "add_nodes"           : false,
                    "insert_nodes"        : true,
                    "remove_nodes"        : {
                        "apply_removal" : true,
                        "on_distance"   : true,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "remove_boundary"     : {
                        "apply_removal" : false,
                        "on_distance"   : false,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "refine_elements"     : {
                        "apply_refinement" : true,
                        "on_distance"      : true,
                        "on_threshold"     : false,
                        "on_error"         : false
                    },
                    "refine_boundary"     : {
                        "apply_refinement" : false,
                        "on_distance"      : false,
                        "on_threshold"     : false,
                        "on_error"         : false
                    }
                }
            },{
                "model_part_name"      : "Interface",
                "python_module"        : "fluid_meshing_domain",
                "alpha_shape"          : 1.25,
                "offset_factor"        : 0.0,
                "meshing_strategy"     : {
                    "python_module"                 : "fluid_meshing_strategy",
                    "meshing_frequency"             : 0,
                    "remesh"                        : false,
                    "refine"                        : false,
                    "reconnect"                     : false,
                    "transfer"                      : false,
                    "constrained"                   : false,
                    "mesh_smoothing"                : false,
                    "variables_smoothing"           : false,
                    "elemental_variables_to_smooth" : ["DETERMINANT_F"],
                    "reference_element_type"        : "TwoStepUpdatedLagrangianVPFluidElement2D",
                    "reference_condition_type"      : "CompositeCondition2D2N"
                },
                "spatial_bounding_box" : {
                    "use_bounding_box" : true,
                    "initial_time"     : 0.0,
                    "final_time"       : 20.0,
                    "upper_point"      : [0.805,15.0,10],
                    "lower_point"      : [-0.805,0.0,-10]
                },
                "spatial_refining_box" : {
                    "use_refining_box" : false,
                    "mesh_size"        : 0.01,
                    "initial_time"     : 0.0,
                    "final_time"       : 1000.0,
                    "upper_point"      : [10,10,10],
                    "lower_point"      : [-10,-10,-10]
                },
                "refining_parameters"  : {
                    "critical_size"       : 0.0,
                    "threshold_variable"  : "PLASTIC_STRAIN",
                    "reference_threshold" : 0.0,
                    "error_variable"      : "NORM_ISOCHORIC_STRESS",
                    "reference_error"     : 0.0,
                    "add_nodes"           : false,
                    "insert_nodes"        : true,
                    "remove_nodes"        : {
                        "apply_removal" : true,
                        "on_distance"   : true,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "remove_boundary"     : {
                        "apply_removal" : false,
                        "on_distance"   : false,
                        "on_threshold"  : false,
                        "on_error"      : false
                    },
                    "refine_elements"     : {
                        "apply_refinement" : true,
                        "on_distance"      : true,
                        "on_threshold"     : false,
                        "on_error"         : false
                    },
                    "refine_boundary"     : {
                        "apply_refinement" : false,
                        "on_distance"      : false,
                        "on_threshold"     : false,
                        "on_error"         : false
                    }
                }
            }]
        }
    }],
    "processes"            : {
        "initial_conditions_process_list"   : [{
            "python_module" : "assign_scalar_variable_process",
            "kratos_module" : "KratosMultiphysics",
            "Parameters"    : {
                "model_part_name" : "PfemFluidModelPart.Fluid",
                "variable_name"   : "TEMPERATURE",
                "constrained"     : false,
                "value"           : 10.0,
                "interval"        : [0.0,0.0001]
            }
        },{
            "python_module" : "assign_scalar_variable_process",
            "kratos_module" : "KratosMultiphysics",
            "Parameters"    : {
                "model_part_name" : "PfemFluidModelPart.Solid",
                "variable_name"   : "TEMPERATURE",
                "constrained"     : false,
                "value"           : -10.0,
                "interval"        : [0.0,0.0001]
            }
        }],
        "constraints_process_list" : [{
            "python_module" : "assign_vector_variable_process",
            "kratos_module" : "KratosMultiphysics",
            "Parameters"    : {
                "model_part_name" : "PfemFluidModelPart.VELOCITY_Parts_Auto2",
                "variable_name"   : "VELOCITY",
                "interval"        : [0.0,"End"],
                "constrained"     : [true,true,true],
                "value"           : [0.0,0.0,0.0]
            }
        }],
        "loads_process_list"       : [],
        "auxiliar_process_list"    : []
    },
    "output_configuration" : {
        "result_file_configuration" : {
            "gidpost_flags"               : {
                "GiDPostMode"           : "GiD_PostBinary",
                "WriteDeformedMeshFlag" : "WriteDeformed",
                "WriteConditionsFlag"   : "WriteConditions",
                "MultiFileFlag"         : "MultipleFiles"
            },
            "file_label"                  : "time",
            "output_control_type"         : "time",
            "output_frequency"            : 0.05,
            "body_output"                 : true,
            "node_output"                 : true,
            "skin_output"                 : false,
            "plane_output"                : [],
            "nodal_results"               : ["VELOCITY","ACCELERATION","PRESSURE","TEMPERATURE"],
            "gauss_point_results"         : [],
            "nodal_nonhistorical_results" : []
        },
        "point_data_configuration"  : []
    }
}
MZecchetto commented 4 years ago

Hi @jginternational , I add another point in the PFEM Fluid improvements: constitutive laws. The following options should be available in the GiD interface:

For fluids:

For solids:

For thermally coupled problems the following should be added:

jginternational commented 4 years ago

I've created this branch for this issue. Please edit the file kratos.gid\apps\PfemFluid\xml\ConstitutiveLaws.xml to add new constitutive laws to the Fluid Pfem Application

MZecchetto commented 4 years ago

Done. I set pn="XXX" different for 2D and 3D laws. Or do you prefer the same as for FluidApp?

MZecchetto commented 4 years ago

Hi @jginternational, any update on this? it would be great to have the constitutive laws in the pfem fluid (at least for the non-thermally coupled analysis) in order to merge https://github.com/KratosMultiphysics/Kratos/pull/6504, https://github.com/KratosMultiphysics/Kratos/pull/6511 and other upcoming changes that require the constitutive laws.

AFranci commented 4 years ago

Hi @jginternational we would need to go ahead with this otherwise we cannot merge the development in kratos. Can you please take a look at it? Thank you in advance!

AFranci commented 4 years ago

Hi @jginternational Is there any advancement in this issue?