Skip to content

Commit

Permalink
Updated files related to material point method examples
Browse files Browse the repository at this point in the history
  • Loading branch information
ncrescenzio committed Jan 30, 2024
1 parent 8ee2e80 commit fe6d287
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 53 deletions.
8 changes: 4 additions & 4 deletions particle_mechanics/README.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down
20 changes: 10 additions & 10 deletions particle_mechanics/validation/cylinder_on_inclined_plane/README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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.

Expand All @@ -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
Original file line number Diff line number Diff line change
@@ -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__":
Expand All @@ -14,5 +14,5 @@
parameters = KratosMultiphysics.Parameters(parameter_file.read())

model = KratosMultiphysics.Model()
simulation = ParticleMechanicsAnalysis(model,parameters)
simulation = MPMAnalysis(model,parameters)
simulation.Run()
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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",
Expand All @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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",
Expand All @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions particle_mechanics/validation/granular_flow_2D/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -34,7 +34,7 @@ The problem stated above has been solved with a structured mesh with 3 material

<p align="center">
<img src="data/granular_flow_2D_results.png" alt="Obtained results and comparison." width="700" />

(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
</p>

Expand Down
Original file line number Diff line number Diff line change
@@ -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__":
Expand All @@ -14,5 +14,5 @@
parameters = KratosMultiphysics.Parameters(parameter_file.read())

model = KratosMultiphysics.Model()
simulation = ParticleMechanicsAnalysis(model,parameters)
simulation = MPMAnalysis(model,parameters)
simulation.Run()
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down

0 comments on commit fe6d287

Please sign in to comment.