Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PFEM Fluid improvements #713

Open
jginternational opened this issue Jan 31, 2020 · 7 comments
Open

PFEM Fluid improvements #713

jginternational opened this issue Jan 31, 2020 · 7 comments

Comments

@jginternational
Copy link
Member

jginternational commented Jan 31, 2020

  • Write materials json file

    • All properties -> 0
    • Loop Bodies
  • Add "Thermally coupled" in Physics

    • Parts properties: (Add from ConvDiff)
      • CONDUCTIVITY
      • SPECIFIC HEAT
    • Boundary Conditions:
      • TEMPERATURE (ConvDiff)
    • Solver Settings: (ConvDiff) bring
      • Analysis type
      • Strategy parameters
      • Linear Solver
  • Delete BC:

    • Displacement
    • Acceleration

@MZecchetto , add a json example

@jginternational
Copy link
Member Author

jginternational commented Jan 31, 2020

{
    "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
Copy link
Contributor

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:

  • Newtonian2DLaw (3D);
  • Bingham2DLaw (3D);
  • PapanastasiouMuIRheology2DLaw (3D).

For solids:

  • Hypoelastic2DLaw (3D).

For thermally coupled problems the following should be added:

  • NewtonianTemperatureDependent2DLaw (3D);
  • BinghamTemperatureDependent2DLaw (3D);
  • HypoelasticTemperatureDependent2DLaw (3D).

@jginternational
Copy link
Member Author

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
Copy link
Contributor

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

@MZecchetto
Copy link
Contributor

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 KratosMultiphysics/Kratos#6504, KratosMultiphysics/Kratos#6511 and other upcoming changes that require the constitutive laws.

@AFranci
Copy link
Member

AFranci commented Apr 27, 2020

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
Copy link
Member

AFranci commented Jun 4, 2020

Hi @jginternational
Is there any advancement in this issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants