From fe6d287404dc5637b537ab0067f4ed37cd108fc6 Mon Sep 17 00:00:00 2001 From: ncrescenzio Date: Tue, 30 Jan 2024 16:23:08 +0000 Subject: [PATCH] Updated files related to material point method examples --- particle_mechanics/README.md | 8 ++++---- .../cylinder_on_inclined_plane/README.md | 20 +++++++++---------- .../source/MainKratos.py | 6 +++--- .../source/ParticleMaterials.json | 2 +- .../source/ProjectParameters_contact.json | 18 ++++++++--------- .../source/ProjectParameters_slip.json | 18 ++++++++--------- .../validation/granular_flow_2D/README.md | 6 +++--- .../granular_flow_2D/source/MainKratos.py | 6 +++--- .../source/ParticleMaterials.json | 2 +- .../source/ProjectParameters.json | 20 +++++++++---------- 10 files changed, 53 insertions(+), 53 deletions(-) diff --git a/particle_mechanics/README.md b/particle_mechanics/README.md index 95143088..4cf8921b 100644 --- a/particle_mechanics/README.md +++ b/particle_mechanics/README.md @@ -1,11 +1,11 @@ -# Particle Mechanics Examples +# Material Point Method (MPM) Examples -This folder contains examples related to the [Particle Mechanics Application](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/ParticleMechanicsApplication) implemented in Kratos-Multiphysics. +This folder contains examples related to the [MPM Application](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/MPMApplication) implemented in Kratos-Multiphysics. ## Instruction -- Please follow the instruction to download and install the latest version of the application and the GiD interface, [here](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/ParticleMechanicsApplication). +- Please follow the instruction to download and install the latest version of the application and the GiD interface, [here](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/MPMApplication). - At the moment, we only support [GiD](https://www.gidhome.com/) for pre- and post-processing. -- For unit testings of the currently available feature, please visit the [tests](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/ParticleMechanicsApplication/tests) folder in Particle Mechanics Application. +- For unit testings of the currently available feature, please visit the [tests](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/MPMApplication/tests) folder in MPM Application. ## Examples diff --git a/particle_mechanics/validation/cylinder_on_inclined_plane/README.md b/particle_mechanics/validation/cylinder_on_inclined_plane/README.md index ba6d74a0..7ba97347 100644 --- a/particle_mechanics/validation/cylinder_on_inclined_plane/README.md +++ b/particle_mechanics/validation/cylinder_on_inclined_plane/README.md @@ -1,20 +1,20 @@ # Cylinder on inclined plane 2D - comparison between analytical and numerical solution with MPM -**Author:** Philip Franz +**Author:** Philip Franz -**Kratos version:** Development branch. **Expected 9.1** +**Kratos version:** Development branch. **Expected 9.1** -**Source files:** [cylinder_on_inclined_plane_2D](https://github.com/KratosMultiphysics/Examples/tree/master/particle_mechanics/validation/cylinder_on_inclined_plane/source) +**Source files:** [cylinder_on_inclined_plane_2D](https://github.com/KratosMultiphysics/Examples/tree/master/mpm/validation/cylinder_on_inclined_plane/source) ## Case Specification -This is a 2D simulation of a cylinder on an inclined plane. A rotating as well as a frictionless sliding behaviour of the cylinder are regarded subsequently. The simulation is set up according to section 4.5.2 of (Iaconeta, 2019). +This is a 2D simulation of a cylinder on an inclined plane. A rotating as well as a frictionless sliding behaviour of the cylinder are regarded subsequently. The simulation is set up according to section 4.5.2 of (Iaconeta, 2019). Linear, unstructured, triangular elements with a size of 0.01m are used to initialize the MPs. Three MPs per cell are considered. For the backgroundmesh linear, unstructured, triangular elements with a size of 0.02m are used. -However, in contrast to section 4.5.2 of (Iaconeta, 2019), the inclined plane is modelled by a line with unstructured elements with size 0.01m. On that line a non conforming Dirichlet boundary condition is imposed by using the penalty method based on (Chandra et al., 2021). +However, in contrast to section 4.5.2 of (Iaconeta, 2019), the inclined plane is modelled by a line with unstructured elements with size 0.01m. On that line a non conforming Dirichlet boundary condition is imposed by using the penalty method based on (Chandra et al., 2021). The following applications of Kratos are used: -- [ParticleMechanicsApplication](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/ParticleMechanicsApplication) +- [MPMApplication](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/MPMApplication) - [LinearSolversApplication](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/LinearSolversApplication) The problem geometry as well as the boundary conditions are sketched below. The non conforming boundary condition is respresented by the copper coloured line. @@ -28,7 +28,7 @@ A hyper elastic Neo Hookean Plane strain (2D) constitutive law with unit thickne * Young's modulus (_E_): 200 MPa * Poisson ratio (_ν_): 0.3 -The time step is 0.001 seconds; the total simulation time is 1.0 seconds. The angle (_α_) of the inclined plane is 60°. The penalty-factor is 1e13. +The time step is 0.001 seconds; the total simulation time is 1.0 seconds. The angle (_α_) of the inclined plane is 60°. The penalty-factor is 1e13. The contact between cylinder and inclined plane is modelled with the option "contact" (see line 53, file *ProjectParameters_contact.json*) in the first and with "slip" in the second case, based on (Chandra et al., 2021). Choosing "contact" leads to a rolling behaviour of the cylinder; "slip" to frictionless sliding. @@ -51,7 +51,7 @@ The left image displays the rolling cylinder - modelled with option "contact". T - + ## References -- Iaconeta, I. (2019). *Discrete-continuum hybrid modelling of flowing and static regimes.* (Ph.D. thesis). Universitat politècnica de Catalunya - Barcelona tech -- Chandra, B., Singer, V., Teschemacher, T., Wüchner, R., Larese, A. (2021) *Nonconforming Dirichlet boundary conditions in implicit material point method by means of penalty augmentation*. Acta Geotech. 16, 2315–2335. https://doi.org/10.1007/s11440-020-01123-3 +- Iaconeta, I. (2019). *Discrete-continuum hybrid modelling of flowing and static regimes.* (Ph.D. thesis). Universitat politècnica de Catalunya - Barcelona tech +- Chandra, B., Singer, V., Teschemacher, T., Wüchner, R., Larese, A. (2021) *Nonconforming Dirichlet boundary conditions in implicit material point method by means of penalty augmentation*. Acta Geotech. 16, 2315–2335. https://doi.org/10.1007/s11440-020-01123-3 diff --git a/particle_mechanics/validation/cylinder_on_inclined_plane/source/MainKratos.py b/particle_mechanics/validation/cylinder_on_inclined_plane/source/MainKratos.py index db85722b..7309537f 100644 --- a/particle_mechanics/validation/cylinder_on_inclined_plane/source/MainKratos.py +++ b/particle_mechanics/validation/cylinder_on_inclined_plane/source/MainKratos.py @@ -1,11 +1,11 @@ from __future__ import print_function, absolute_import, division #makes KratosMultiphysics backward compatible with python 2.6 and 2.7 import KratosMultiphysics -from KratosMultiphysics.ParticleMechanicsApplication.particle_mechanics_analysis import ParticleMechanicsAnalysis +from KratosMultiphysics.MPMApplication.mpm_analysis import MPMAnalysis """ For user-scripting it is intended that a new class is derived -from ParticleMechanicsAnalysis to do modifications +from MPMAnalysis to do modifications """ if __name__ == "__main__": @@ -14,5 +14,5 @@ parameters = KratosMultiphysics.Parameters(parameter_file.read()) model = KratosMultiphysics.Model() - simulation = ParticleMechanicsAnalysis(model,parameters) + simulation = MPMAnalysis(model,parameters) simulation.Run() diff --git a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ParticleMaterials.json b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ParticleMaterials.json index 9891ed71..4dab2fea 100644 --- a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ParticleMaterials.json +++ b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ParticleMaterials.json @@ -8,7 +8,7 @@ }, "Variables" : { "THICKNESS" : 1.0, - "PARTICLES_PER_ELEMENT" : 3, + "MATERIAL_POINTS_PER_ELEMENT" : 3, "DENSITY" : 7800.0, "YOUNG_MODULUS" : 200000000.0, "POISSON_RATIO" : 0.3 diff --git a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_contact.json b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_contact.json index 2db4cd46..645680ce 100644 --- a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_contact.json +++ b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_contact.json @@ -19,7 +19,7 @@ "input_filename" : "cylinder on inclined plane 2d_Body" }, "material_import_settings" : { - "materials_filename" : "ParticleMaterials.json" + "materials_filename" : "MaterialPointsMaterials.json" }, "time_stepping" : { "time_step" : 0.001 @@ -40,19 +40,19 @@ "processes" : { "list_other_processes" : [{ "python_module" : "apply_mpm_particle_dirichlet_condition_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", + "kratos_module" : "KratosMultiphysics.MPMApplication", "Parameters" : { "model_part_name" : "Background_Grid.Slip2D_Slip_Auto1", - "particles_per_condition": 3, + "material_points_per_condition": 3, "penalty_factor": 1e13, "constrained" : "contact", "option": "flip_normal" } }], "gravity" : [{ - "python_module" : "assign_gravity_to_particle_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "AssignGravityToParticleProcess", + "python_module" : "assign_gravity_to_material_point_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "AssignGravityToMaterialPointProcess", "Parameters" : { "model_part_name" : "MPM_Material", "variable_name" : "MP_VOLUME_ACCELERATION", @@ -63,9 +63,9 @@ }, "output_processes" : { "body_output_process" : [{ - "python_module" : "particle_gid_output_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "ParticleMPMGiDOutputProcess", + "python_module" : "mpm_gid_output_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "MPMGiDOutputProcess", "help" : "This process writes postprocessing files for GiD", "Parameters" : { "model_part_name" : "MPM_Material", diff --git a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_slip.json b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_slip.json index fbeaec2c..6c5a7773 100644 --- a/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_slip.json +++ b/particle_mechanics/validation/cylinder_on_inclined_plane/source/ProjectParameters_slip.json @@ -19,7 +19,7 @@ "input_filename" : "cylinder on inclined plane 2d_Body" }, "material_import_settings" : { - "materials_filename" : "ParticleMaterials.json" + "materials_filename" : "MaterialPointsMaterials.json" }, "time_stepping" : { "time_step" : 0.001 @@ -40,19 +40,19 @@ "processes" : { "list_other_processes" : [{ "python_module" : "apply_mpm_particle_dirichlet_condition_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", + "kratos_module" : "KratosMultiphysics.MPMApplication", "Parameters" : { "model_part_name" : "Background_Grid.Slip2D_Slip_Auto1", - "particles_per_condition": 3, + "material_points_per_condition": 3, "penalty_factor": 1e13, "constrained" : "slip", "option": "flip_normal" } }], "gravity" : [{ - "python_module" : "assign_gravity_to_particle_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "AssignGravityToParticleProcess", + "python_module" : "assign_gravity_to_material_point_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "AssignGravityToMaterialPointProcess", "Parameters" : { "model_part_name" : "MPM_Material", "variable_name" : "MP_VOLUME_ACCELERATION", @@ -63,9 +63,9 @@ }, "output_processes" : { "body_output_process" : [{ - "python_module" : "particle_gid_output_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "ParticleMPMGiDOutputProcess", + "python_module" : "mpm_gid_output_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "MPMGiDOutputProcess", "help" : "This process writes postprocessing files for GiD", "Parameters" : { "model_part_name" : "MPM_Material", diff --git a/particle_mechanics/validation/granular_flow_2D/README.md b/particle_mechanics/validation/granular_flow_2D/README.md index a68c80fc..1eeb8f3c 100644 --- a/particle_mechanics/validation/granular_flow_2D/README.md +++ b/particle_mechanics/validation/granular_flow_2D/README.md @@ -3,14 +3,14 @@ **Kratos version:** Development branch. **Expected 6.0** -**Source files:** [granular_flow_2D](https://github.com/KratosMultiphysics/Examples/tree/master/particle_mechanics/validation/granular_flow_2D/source) +**Source files:** [granular_flow_2D](https://github.com/KratosMultiphysics/Examples/tree/master/mpm/validation/granular_flow_2D/source) ## Case Specification This is a 2D non-cohesive granular material simulation according to the experiment conducted by (Bui et al., 2008). Here, linear structured triangular elements are used to initialize the MPs and as the background mesh. The structured mesh arrangement is chosen to avoid the irregularities of the generated MP’s density, which, by further, improving the numerical solutions. The following application of Kratos is used: -- [ParticleMechanicsApplication](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/ParticleMechanicsApplication) +- [MPMApplication](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/MPMApplication) The problem geometry as well as the boundary conditions are sketched below: @@ -34,7 +34,7 @@ The problem stated above has been solved with a structured mesh with 3 material

Obtained results and comparison. - + (a.) Experiment conducted by (Bui et al., 2008), (b.) comparison of final surface configuration and failure line, (c.) simulation results of (Bui et al., 2008) by using SPH method, (d.) simulation results obtained by implicit MPM method

diff --git a/particle_mechanics/validation/granular_flow_2D/source/MainKratos.py b/particle_mechanics/validation/granular_flow_2D/source/MainKratos.py index 0f26028c..ca7b1b61 100644 --- a/particle_mechanics/validation/granular_flow_2D/source/MainKratos.py +++ b/particle_mechanics/validation/granular_flow_2D/source/MainKratos.py @@ -1,11 +1,11 @@ from __future__ import print_function, absolute_import, division #makes KratosMultiphysics backward compatible with python 2.6 and 2.7 import KratosMultiphysics -from KratosMultiphysics.ParticleMechanicsApplication.particle_mechanics_analysis import ParticleMechanicsAnalysis +from KratosMultiphysics.MPMApplication.mpm_analysis import MPMAnalysis """ For user-scripting it is intended that a new class is derived -from ParticleMechanicsAnalysis to do modifications +from MPMAnalysis to do modifications """ if __name__ == "__main__": @@ -14,5 +14,5 @@ parameters = KratosMultiphysics.Parameters(parameter_file.read()) model = KratosMultiphysics.Model() - simulation = ParticleMechanicsAnalysis(model,parameters) + simulation = MPMAnalysis(model,parameters) simulation.Run() diff --git a/particle_mechanics/validation/granular_flow_2D/source/ParticleMaterials.json b/particle_mechanics/validation/granular_flow_2D/source/ParticleMaterials.json index 206e0edd..1868300a 100644 --- a/particle_mechanics/validation/granular_flow_2D/source/ParticleMaterials.json +++ b/particle_mechanics/validation/granular_flow_2D/source/ParticleMaterials.json @@ -8,7 +8,7 @@ }, "Variables" : { "THICKNESS" : 1.0, - "PARTICLES_PER_ELEMENT" : 3, + "MATERIAL_POINTS_PER_ELEMENT" : 3, "DENSITY" : 2650.0, "YOUNG_MODULUS" : 840000.0, "POISSON_RATIO" : 0.3, diff --git a/particle_mechanics/validation/granular_flow_2D/source/ProjectParameters.json b/particle_mechanics/validation/granular_flow_2D/source/ProjectParameters.json index 3a81f48f..4f5dd05b 100644 --- a/particle_mechanics/validation/granular_flow_2D/source/ProjectParameters.json +++ b/particle_mechanics/validation/granular_flow_2D/source/ProjectParameters.json @@ -19,7 +19,7 @@ "input_filename" : "granular_flow_2D_Body" }, "material_import_settings" : { - "materials_filename" : "ParticleMaterials.json" + "materials_filename" : "MaterialPointsMaterials.json" }, "time_stepping" : { "time_step" : 5e-5 @@ -58,9 +58,9 @@ "loads_process_list" : [], "list_other_processes" : [], "gravity" : [{ - "python_module" : "assign_gravity_to_particle_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "AssignGravityToParticleProcess", + "python_module" : "assign_gravity_to_material_point_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "AssignGravityToMaterialPointProcess", "Parameters" : { "model_part_name" : "MPM_Material", "variable_name" : "MP_VOLUME_ACCELERATION", @@ -71,9 +71,9 @@ }, "output_processes" : { "body_output_process" : [{ - "python_module" : "particle_gid_output_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "ParticleMPMGiDOutputProcess", + "python_module" : "mpm_gid_output_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "MPMGiDOutputProcess", "help" : "This process writes postprocessing files for GiD", "Parameters" : { "model_part_name" : "MPM_Material", @@ -100,9 +100,9 @@ } }, { - "python_module" : "particle_vtk_output_process", - "kratos_module" : "KratosMultiphysics.ParticleMechanicsApplication", - "process_name" : "ParticleVTKOutputProcess", + "python_module" : "mpm_vtk_output_process", + "kratos_module" : "KratosMultiphysics.MPMApplication", + "process_name" : "MPMVTKOutputProcess", "Parameters" : { "model_part_name" : "MPM_Material", "output_path" : "granular_flow_2D_Body",