/MPM-Geomechanics

MPM-Geomechanics is a program that allows us to model the behavior of geo-materials, like soil and rock, when these materials are subjected to extreme conditions.

Primary LanguageC++

MPM-Geomechanics

A material point method code for geomechanics

CI MSBuild

Motivation

MPM-Geomechanics is a program that allows us to model the behavior of geo-materials, like soil and rock, when these materials are subjected to different initial and boundary conditions. Currently, the geo-materials are present in several areas of the society, like for example, in the slopes and excavation process in mining industry activities, or in the study of risk associated to naturals disasters.

This program uses the Material Point Method (MPM) to integrate the motion equation of continuum mechanics. In this method the motion equation is solved in an fixed mesh (Eulerian mesh) and the solution is interpolated to points that can move freely inside the mesh, carrying all the mechanical information like strain, stress, temperature, etc. The points allows us to transport all properties inside the mesh during the simulation (Lagrangian points).

The objective of this repository is to provide a platform for developing the MPM for the study of geomechanical problems involving large deformations and distortions.

Collaboration

If you are interested to collaborate with this project, please contact to fabricio.fernandez@ucn.cl. There are several topics for developing in this project, here there are a few of them:

Program features

The main features of the program in the actuality are:

  • Three-dimensional formulation (can simulated 2D plane strain problems too)
  • Dynamic formulation (suitable for earthquake and general dynamic problems)
  • Shared memory parallelization (for computational time reduction)
  • Several constitutive models for soils and rock, including softening and hardening options.

Compiled binaries

  1. Go to the Actions page.
  2. Select the latest run of the MSBuild workflow for Window, or CI for Linux.
  3. At the bottom, you will find the available artifacts under the Artifacts section.
  4. Download the compiled-binaries artifact to get the compiled code.

Documentation and Compilation

To compile using make:

make -f make/makefile

Make sure you have installed OpenMP.

To generate the code documentation using doxygen run:

cd doxygen && doxygen

and the HTML documentation will be located in /doxygen/html.

To generate the documentation in PDF, run the make command in doxy/latex.

cd /doxygen/latex && make

Examples

Slope failure

In this example an soil slope failure is simulated using an elastoplastic material:

For more details of this simulation see the input file slope-failure.json

Exponential softening model to simulate fracturing process in rock

In this example an elastoplastic body impacts over an elastic body. The fracturing process in rock masses is captured using an exponential strain softening over tensile strength in the elastoplastic material: $\sigma^t(\epsilon_p^{pleff}) = \sigma^t_{final}-(\sigma^t_{initial}-\sigma^t_{final})e^{-\eta \epsilon_p^{pleff}}$, where $\eta$ is the shape factor and $\epsilon_p^{pleff}=\sqrt{2/3\epsilon_{pij}^{pl}\epsilon_{pij}^{pl}}$ is the effective plastic strain.

Example 1:

Fracturing induced by exponential softening over the tensile strength. The yellow body is subjected to an initial velocity. The withe body is elastic.

An elasto-plastic body impacts over an elastic body. The exponential softening used over the tensile strength, in order to reproduce the fracturing process in the body.

See exponential-softening.json input file for simulation details.

Example 2

In this example is tested the refinement mesh behavior. The fixed (left-bottom) and free boundary (right-up) conditions are tested too.

See exponential-softening-refined.json input file for simulation details.

Base acceleration

In this example the model base is setting up to vibrate with an acceleration and velocity record. The input velocity and acceleration used is:

The response of the model is:

See the input file of this model in vibrational-base.json