From edd34f847a7cc2758d9957290f9cd45aeed06356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabricio=20Fern=C3=A1ndez?= Date: Fri, 3 Jan 2025 12:40:55 -0300 Subject: [PATCH] doc: creating md files for introduction in the manual --- docs/Loads_8h.html | 6 +- docs/Loads_8h.js | 2 +- docs/Loads_8h_source.html | 12 +- docs/MPM_8h_source.html | 168 +++---- docs/classBodyCuboid.html | 2 +- docs/classBodyParticle.html | 2 +- docs/classBodyPolygon.html | 10 +- docs/classBodySphere.html | 2 +- docs/classMPM.html | 4 +- docs/doxygen_crawl.html | 40 +- docs/index.html | 52 +- docs/intro-and-compiling_8md.html | 121 +++++ docs/namespaceLoads.html | 21 +- docs/namespaceLoads.js | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/navtreedata.js | 50 +- docs/navtreeindex0.js | 500 ++++++++++---------- docs/navtreeindex1.js | 500 ++++++++++---------- docs/navtreeindex2.js | 500 ++++++++++---------- docs/navtreeindex3.js | 496 +++++++++---------- docs/navtreeindex4.js | 87 ++-- docs/search/all_0.js | 8 +- docs/search/all_1.js | 8 +- docs/search/all_10.js | 6 +- docs/search/all_11.js | 16 +- docs/search/all_12.js | 10 +- docs/search/all_13.js | 10 +- docs/search/all_15.js | 2 +- docs/search/all_2.js | 55 ++- docs/search/all_3.js | 12 +- docs/search/all_4.js | 12 +- docs/search/all_5.js | 6 +- docs/search/all_7.js | 2 +- docs/search/all_8.js | 17 +- docs/search/all_b.js | 8 +- docs/search/all_c.js | 28 +- docs/search/all_d.js | 2 +- docs/search/all_f.js | 11 +- docs/search/files_5.js | 3 +- docs/search/functions_2.js | 2 +- docs/theory_and_numerical_formulation_.html | 22 +- docs/verification_problems.html | 12 +- inc/Loads.h | 7 +- inc/MPM.h | 80 +--- manual/intro-and-compiling.md | 66 +++ 46 files changed, 1537 insertions(+), 1449 deletions(-) create mode 100644 docs/intro-and-compiling_8md.html create mode 100644 manual/intro-and-compiling.md diff --git a/docs/Loads_8h.html b/docs/Loads_8h.html index cc0e325..9eb13fc 100644 --- a/docs/Loads_8h.html +++ b/docs/Loads_8h.html @@ -240,9 +240,9 @@ void Loads::setInitialVelocity (vector< Body * > &bodies)  Set initial velocity in bodies.
  -void Loads::configureNodalPointLoads (Mesh *) - configure nodeid-point-load data for nodal force application
-  +void Loads::configureNodalPointLoads (Mesh *mesh) + configure nodeid-point-load data for nodal force application
NodalPointLoadDataLoads::getNodalPointList ()  Get (node-id load) vector for set nodal point load.
  diff --git a/docs/Loads_8h.js b/docs/Loads_8h.js index 8f478f9..6753e93 100644 --- a/docs/Loads_8h.js +++ b/docs/Loads_8h.js @@ -7,7 +7,7 @@ var Loads_8h = [ "Loads::PressureMaterial", "structLoads_1_1PressureMaterial.html", "structLoads_1_1PressureMaterial" ], [ "Loads::PrescribedPorePressure", "structLoads_1_1PrescribedPorePressure.html", "structLoads_1_1PrescribedPorePressure" ], [ "Loads::SeismicData", "structLoads_1_1SeismicData.html", "structLoads_1_1SeismicData" ], - [ "configureNodalPointLoads", "Loads_8h.html#a70b671a26b22a970ebdb930b2c43a505", null ], + [ "configureNodalPointLoads", "Loads_8h.html#a17a7cd5461a3f485a589936ab71da9da", null ], [ "getNodalPointList", "Loads_8h.html#a67971878871ece27ff54401ffcd9a5ff", null ], [ "getSeismicData", "Loads_8h.html#ac2794cc202d1527d21f610dd1bfc4310", null ], [ "setGravity", "Loads_8h.html#a1a2299651bd04336c8233e10785aca1b", null ], diff --git a/docs/Loads_8h_source.html b/docs/Loads_8h_source.html index 270ac30..882265e 100644 --- a/docs/Loads_8h_source.html +++ b/docs/Loads_8h_source.html @@ -219,20 +219,20 @@
150
153 void setInitialVelocity(vector<Body*>& bodies);
154
-
157 void configureNodalPointLoads(Mesh*);
+
157 void configureNodalPointLoads(Mesh* mesh);
158
-
161 NodalPointLoadData& getNodalPointList();
-
162};
-
163
-
164#endif /* LOADS_H_ */
+
160 NodalPointLoadData& getNodalPointList();
+
161};
+
162
+
163#endif /* LOADS_H_ */
Class representing a rectangular grid mesh.
Definition Mesh.h:29
Operations to manage loads in the MPM model.
+
void configureNodalPointLoads(Mesh *mesh)
configure nodeid-point-load data for nodal force application
void setGravity(vector< Body * > &bodies)
Configures the gravity load in particles.
void setLoadDistributedBox(vector< Body * > &bodies, vector< Loads::LoadDistributedBox > loads)
Configure distributed load in particles inside of a box.
NodalPointLoadData & getNodalPointList()
Get (node-id load) vector for set nodal point load.
void updatePrescribedPorePressure(vector< Body * > *bodies)
Set prescribed pore pressure in particles.
-
void configureNodalPointLoads(Mesh *)
configure nodeid-point-load data for nodal force application
void setInitialVelocity(vector< Body * > &bodies)
Set initial velocity in bodies.
void setPrescribedPorePressureBoundaryForceBox(vector< Body * > &bodies, vector< Loads::PressureBoundaryForceBox > loads)
Set external boundary force in fluid phase due the prescribed pore pressure in particles.
void setInitialPorePressureMaterial(vector< Body * > &bodies, vector< Loads::PressureMaterial > pressures)
Configure initial pore pressure in particles by material id.
diff --git a/docs/MPM_8h_source.html b/docs/MPM_8h_source.html index f2fb0cc..4e4175e 100644 --- a/docs/MPM_8h_source.html +++ b/docs/MPM_8h_source.html @@ -109,85 +109,85 @@
Go to the documentation of this file.
1
-
85
-
86#ifndef MPM_H_
-
87#define MPM_H_
-
88
-
89#include "Mesh/Mesh.h"
-
90#include "Body/Body.h"
-
91#include "Model.h"
-
92#include "Output.h"
-
93#include "Input.h"
-
94#include "States.h"
-
95#include "Solver/Solver.h"
-
96
-
-
101class MPM {
-
102
-
103public:
-
104
-
107 MPM();
-
108
-
111 virtual ~MPM();
-
112
-
116 void readInputFile(int argument_counter, char ** argument_vector);
-
117
- -
121
-
124 void solve();
-
125
-
128 void end();
-
129
-
132 void loadState();
-
133
-
136 void saveState();
-
137private:
-
138
- -
140
-
141 vector<Body*> bodies;
-
142
-
143 vector<Particle*> particles;
-
144
-
145 vector<Material*> materials;
-
146
- -
148
- -
152
-
155 void setSolver();
-
156
-
159 void setupMesh();
-
160
- -
164
- -
168
- -
172
- -
176
- -
180
- -
184
- -
188
- -
192
- -
196
- -
200
-
201
- -
205
- - -
208};
+
7
+
8#ifndef MPM_H_
+
9#define MPM_H_
+
10
+
11#include "Mesh/Mesh.h"
+
12#include "Body/Body.h"
+
13#include "Model.h"
+
14#include "Output.h"
+
15#include "Input.h"
+
16#include "States.h"
+
17#include "Solver/Solver.h"
+
18
+
+
23class MPM {
+
24
+
25public:
+
26
+
29 MPM();
+
30
+
33 virtual ~MPM();
+
34
+
38 void readInputFile(int argument_counter, char ** argument_vector);
+
39
+ +
43
+
46 void solve();
+
47
+
50 void end();
+
51
+
54 void loadState();
+
55
+
58 void saveState();
+
59private:
+
60
+ +
62
+
63 vector<Body*> bodies;
+
64
+
65 vector<Particle*> particles;
+
66
+
67 vector<Material*> materials;
+
68
+ +
70
+ +
74
+
77 void setSolver();
+
78
+
81 void setupMesh();
+
82
+ +
86
+ +
90
+ +
94
+ +
98
+ +
102
+ +
106
+ +
110
+ +
114
+ +
118
+ +
122
+
123
+ +
127
+ + +
130};
-
209
-
210#endif /* MPM_H_ */
+
131
+
132#endif /* MPM_H_ */
@@ -195,15 +195,15 @@ -
Components and algorithms of the MPM This class contain the basic objects of a MPM model,...
Definition MPM.h:101
+
Components and algorithms of the MPM This class contain the basic objects of a MPM model,...
Definition MPM.h:23
void readInputFile(int argument_counter, char **argument_vector)
Read the input file of the model.
void setupLoads()
Configure loads in the model.
void setupParticles()
Configure particles.
-
Solver * solver
operation for solve the equations in time
Definition MPM.h:147
+
Solver * solver
operation for solve the equations in time
Definition MPM.h:69
void setThreads()
Configure number of threads.
bool getSeismicAnalysis()
void setupDamping()
Configure damping forces.
-
Mesh mesh
grid mesh
Definition MPM.h:139
+
Mesh mesh
grid mesh
Definition MPM.h:61
void createBodies()
Create bodies.
MPM()
Default constructor.
void setSimulationTime()
Configure the simulation time.
@@ -213,17 +213,17 @@
void createModel()
Create the numerical MPM model.
void setInterpolationFunctions()
Configure the interpolation functions.
virtual ~MPM()
Default destructor.
-
vector< Material * > materials
bodies discretized by material points
Definition MPM.h:145
+
vector< Material * > materials
bodies discretized by material points
Definition MPM.h:67
void setupMesh()
Configure the mesh.
void saveState()
Save model state.
void setupBodyList()
Configure the body list.
-
vector< Body * > bodies
bodies discretized by material points
Definition MPM.h:141
+
vector< Body * > bodies
bodies discretized by material points
Definition MPM.h:63
void setupResults()
Configure results to be written.
void end()
Finish all program structure.
void setupMaterialList()
Configures the material list.
void setTimeStep()
Configure the time step.
void setNumberPhasesInSimulation()
Configure number of phases in the simulation.
-
vector< Particle * > particles
material points list
Definition MPM.h:143
+
vector< Particle * > particles
material points list
Definition MPM.h:65
void solve()
Solve the problem in time.
Class representing a rectangular grid mesh.
Definition Mesh.h:29
Represents the operations to solve the equations in time.
Definition Solver.h:19
diff --git a/docs/classBodyCuboid.html b/docs/classBodyCuboid.html index 0ba5003..7013c65 100644 --- a/docs/classBodyCuboid.html +++ b/docs/classBodyCuboid.html @@ -220,7 +220,7 @@

Detailed Description

Is a type of Body representing a cuboid in 3D.

-

+

Cuboid definition

The cuboid in geometrically defined by the coordinates of the lower left point (Point 1) and the higher right point (Point 2). See Figure bellow.

Cuboid
diff --git a/docs/classBodyParticle.html b/docs/classBodyParticle.html index f8d7ff8..c981f4b 100644 --- a/docs/classBodyParticle.html +++ b/docs/classBodyParticle.html @@ -219,7 +219,7 @@

Detailed Description

Is a Body created by a list of particles.

-

+

Introduction

This class allows to create a 3D body in the space by a list of particles.

Constructor & Destructor Documentation

diff --git a/docs/classBodyPolygon.html b/docs/classBodyPolygon.html index cb68117..4603baa 100644 --- a/docs/classBodyPolygon.html +++ b/docs/classBodyPolygon.html @@ -238,23 +238,23 @@

Detailed Description

Is a type of Body created by the extrusion of a 2D polygon.

-

+

Introduction

This class allows to create a 3D body in the space by extrusion of a 2D polygon.

The extrusion is performed according to a direction and to a displacement. The direction of the extrusion is represented by the extrudeDirection attribute. The displacement of the extrusion is represented by the extrudeDisplacement attribute. This body is fill up with particles according to a discretization parameter distretizationLength.

-

+

Extrusion direction

The extrude direction is the axis by with the polygon will be extruded.

Extrusion in x Extrusion in y Extrusion in z

z x y ^ ^ ^ | | | o---> y o---> z o---> x

o : is the axis pointing out of the plane

-

+

Extrusion displacement

Is the total displacement of the polygon through the extrusion direction.

-

+

The Discretization Length

When the particles are put in the body an auxiliary grid is used. The discretizationLength attribute is the dimension of a grid cell.

-

+

How the material points are placed in the body

Once the body was created by extrusion, the material points need to be distributed inside the body. For do that the create method performs this operations:

    diff --git a/docs/classBodySphere.html b/docs/classBodySphere.html index a7efb57..6d6bc81 100644 --- a/docs/classBodySphere.html +++ b/docs/classBodySphere.html @@ -226,7 +226,7 @@

    Detailed Description

    Is a type of Body representing a sphere in 3D.

    -

    +

    Sphere definition

    The sphere is geometrically defined by its center and diameter.

    Constructor & Destructor Documentation

    diff --git a/docs/classMPM.html b/docs/classMPM.html index 1569056..d4906a2 100644 --- a/docs/classMPM.html +++ b/docs/classMPM.html @@ -245,7 +245,9 @@

    Detailed Description

    Components and algorithms of the MPM This class contain the basic objects of a MPM model, and the operations between them.

    -

    Constructor & Destructor Documentation

    +
    MPM-Geomechanics my_model.json
    +
    Components and algorithms of the MPM This class contain the basic objects of a MPM model,...
    Definition MPM.h:23
    +

Constructor & Destructor Documentation

◆ MPM()

diff --git a/docs/doxygen_crawl.html b/docs/doxygen_crawl.html index b71feb3..5baa25c 100644 --- a/docs/doxygen_crawl.html +++ b/docs/doxygen_crawl.html @@ -78,6 +78,7 @@ + @@ -372,11 +373,11 @@ + - @@ -1038,14 +1039,13 @@ - - - - - - - - + + + + + + + @@ -1103,11 +1103,11 @@ + - @@ -1264,23 +1264,23 @@ - - - - - + + + + + - - - - - + + + + + diff --git a/docs/index.html b/docs/index.html index 3c0315e..53d05a1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -108,22 +108,17 @@
MPM-Geomechanics
-

+

Introduction

-

The MPM-Geomechanics is a implementation of the Material Point Method (MPM) to simulate large strain geomechanical problems in 3D. The main objective of this program is to provide an open source platform suitable for the study and application of the MPM in various geomechanical problems were materials are subjected to extreme deformation conditions.

-

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:

-

\( \frac{\partial \sigma_{i j}}{\partial x_j}+\rho b_i=\rho \ddot{u}_i \)

-

that can be expressed discretely, using the nodes of an Eulerian mesh:

+

The MPM-Geomechanics is a implementation of the Material Point Method (MPM) to simulate large strain geomechanical problems in 3D. The main objective of this program is to provide an open source platform suitable for the study and application of the MPM in various geomechanical problems were materials are subjected to extreme deformation conditions. 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:

+

\( \frac{\partial \sigma_{i j}}{\partial x_j}+\rho b_i=\rho \ddot{u}_i \) that can be expressed discretely, using the nodes of an Eulerian mesh:

\( \dot{p}_{i I}=f_{i I}^{i n t}+f_{i I}^{e x t} \)

-

where \( p_{i I}=\sum_p S_{I p} p_{i p}\) is the momentum, \( f_{i I}^{int}=-\sum_p \sigma_{i j p} S_{I p, j} V_p\) is the internal force, and \( f_{i I}^{e x t}=\sum_p m_p S_{I p} b_{i p}+\int_{\Gamma} \mathrm{t}_i N_I\left(x_i\right) d A\) is the external force at node \( I \).

-

The function \( S_{I p} \) and its gradient \( S_{I p, j} \) are the weighting functions of node \( I \) evaluated at the position of particle \( p \), defined by \( S_{I p}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_I\left(x_{ip}\right) dV \) and \( S_{I p, j}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_{I, j}\left(x_{ip}\right) dV \).

+

where \( p_{i I}=\sum_p S_{I p} p_{i p}\) is the momentum, \( f_{i I}^{int}=-\sum_p \sigma_{i j p} S_{I p, j} V_p\) is the internal force, and \( f_{i I}^{e x t}=\sum_p m_p S_{I p} b_{i p}+\int_{\Gamma} \mathrm{t}_i N_I\left(x_i\right) d A\) is the external force at node \( I \). The function \( S_{I p} \) and its gradient \( S_{I p, j} \) are the weighting functions of node \( I \) evaluated at the position of particle \( p \), defined by \( S_{I p}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_I\left(x_{ip}\right) dV \) and \( S_{I p, j}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_{I, j}\left(x_{ip}\right) dV \).

The integration of the weight functions is performed analytically over the particle domain using linear functions for \( N_I\left(x_{ip}\right) \) and unit step functions for \( \chi_p\left(x_{ip}\right) \).

-

For more details on the formulation and integration process, refer to: program_theory_manual

-

-Program Features

-

The main features of the program are:

-
    +

    For more details on the formulation and integration process, refer to: Theory and Numerical Formulation

    +

    +Program features

    +

    The main features of the program are:

    • Three-dimensional 3D formulation
    • Dynamic formulation
    • Shared memory parallelization using OpenMP
    • @@ -132,37 +127,30 @@

    • Softening/hardening models to represent weakness during large deformations
    • Coupled fluid-mechanical formulation (under development)
    -

    -Program compiled binaries

    +

    +Compiled binaries

    For downloading the 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.
    -

    -Compilation

    -

    The best way to use the program is to compile it into your system.

    -

    -Compilation in windows

    -

    For compiling the code in windows you can use the Visual Studio solution file /build/MPM-Geomechanics.sln, and build it by pressing Ctr+B.

    -

    Alternatively you can compile it by using command in a Developer Command Prompt:

    -
    msbuild MPM-Geomechanics.sln -p:Configuration=Release
    -
    Components and algorithms of the MPM This class contain the basic objects of a MPM model,...
    Definition MPM.h:101
    -

    -Compilation in Linux

    +

    +Compilation in windows

    +

    For compiling the code in windows you can use the Visual Studio solution file /build/MPM-Geomechanics.sln, and build it by pressing Ctr+B. Alternatively you can compile it by using command in a Developer Command Prompt:

    +
    msbuild MPM-Geomechanics.sln -p:Configuration=Release
    +

    +Compilation in Linux

    For compile the code in a linux environment, execute the make command into the make folder, in with is located de makefile MPM-Geomechanics\build\make\makefile:

    -
    make
    -

    +

    Documentation

    The program documentation is generated using Doxygen:

    doxygen Doxyfile

    The HTML generated documentation is located in /docs/index.html.

    -

    +

    Execution

    -

    In order to run simulations in several terminal, you can add the compiled code in the system PATH. After that, the common use is to call the program with the input file as argument:

    -
    MPM-Geomechanics my_model.json
    -

+

In order to run simulations in several terminal, you can add the compiled code in the system PATH. After that, the common use is to call the program with the input file as argument:

+
diff --git a/docs/intro-and-compiling_8md.html b/docs/intro-and-compiling_8md.html new file mode 100644 index 0000000..843cc07 --- /dev/null +++ b/docs/intro-and-compiling_8md.html @@ -0,0 +1,121 @@ + + + + + + + +MPM-Geomechanics: intro-and-compiling.md File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
MPM-Geomechanics +
+
Material Point Method for simulating geo-materials under large deformation conditions
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
intro-and-compiling.md File Reference
+
+
+
+
+ + + + diff --git a/docs/namespaceLoads.html b/docs/namespaceLoads.html index 8418ab6..e148339 100644 --- a/docs/namespaceLoads.html +++ b/docs/namespaceLoads.html @@ -170,9 +170,9 @@ void setInitialVelocity (vector< Body * > &bodies)  Set initial velocity in bodies.
  -void configureNodalPointLoads (Mesh *) - configure nodeid-point-load data for nodal force application
-  +void configureNodalPointLoads (Mesh *mesh) + configure nodeid-point-load data for nodal force application
NodalPointLoadDatagetNodalPointList ()  Get (node-id load) vector for set nodal point load.
  @@ -180,8 +180,8 @@

Detailed Description

Operations to manage loads in the MPM model.

Function Documentation

- -

◆ configureNodalPointLoads()

+ +

◆ configureNodalPointLoads()

diff --git a/docs/namespaceLoads.js b/docs/namespaceLoads.js index 6ec3feb..f2c4f83 100644 --- a/docs/namespaceLoads.js +++ b/docs/namespaceLoads.js @@ -7,7 +7,7 @@ var namespaceLoads = [ "PressureBox", "structLoads_1_1PressureBox.html", "structLoads_1_1PressureBox" ], [ "PressureMaterial", "structLoads_1_1PressureMaterial.html", "structLoads_1_1PressureMaterial" ], [ "SeismicData", "structLoads_1_1SeismicData.html", "structLoads_1_1SeismicData" ], - [ "configureNodalPointLoads", "namespaceLoads.html#a70b671a26b22a970ebdb930b2c43a505", null ], + [ "configureNodalPointLoads", "namespaceLoads.html#a17a7cd5461a3f485a589936ab71da9da", null ], [ "getNodalPointList", "namespaceLoads.html#a67971878871ece27ff54401ffcd9a5ff", null ], [ "getSeismicData", "namespaceLoads.html#ac2794cc202d1527d21f610dd1bfc4310", null ], [ "setGravity", "namespaceLoads.html#a1a2299651bd04336c8233e10785aca1b", null ], diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index 3955db9..5d8311c 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -119,7 +119,7 @@

- c -

diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 0f89dbc..525e3dc 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -117,7 +117,7 @@

- b -

-

+

Introduction to the Material Point Method (MPM)

The Material Point Method, or MPM, is a hybrid Lagrangian-Eulerian method that allows for simulating continuum mechanics processes involving large deformations and displacements without issues related to computational mesh distortion. In MPM, the material domain to be simulated is discretized into a set of material points that can move freely within a computational mesh, where the equations of motion are solved. The material points store all variables of interest during the simulation, such as stress, pore pressure, temperature, etc., giving the method its Lagrangian characteristic.

@@ -120,7 +120,7 @@
"MPM computational cycle"
-

+

MPM Formulation

MPM enables the numerical solution of the equation of motion in continuum mechanics by using the nodes of an Eulerian mesh for integration and Lagrangian material points to transfer and store the properties of the medium.

The equation of motion in continuum mechanics

@@ -251,11 +251,11 @@

S_{I p}(x_{i p}) = S_{I p}(\xi) S_{I p} (\eta) S_{I p} (\zeta) \)

where \( \xi=x_p-x_I, \eta=y_p-y_I \) and \( \zeta=z_p-z \).

-

+

Explicit MPM integration

The discrete form of the motion equation \( f_{iI}^{int} + f_{iI}^{ext} = \dot{p}_{iI} \), is a second order ordinary differential equation in terms of displacement with respect to time, and can be solved by integration, using an explicit or implicit integration scheme.

-

+

Central difference Method

The displacement, the velocity and the acceleration at time \( t = 0, t^1, t^2, ... , t^n \) are knows, and the values at time \( t^{n+1} \) are required, namely the solution of the problem.

In central difference method, the velocity at \( t^{n+1/2} \) can be approximated as:

@@ -301,7 +301,7 @@

\dot u ^ {n+1/2} = \dot u ^ {n-1/2} + f ^{n} / m \, \Delta t \]

-

+

Numerical implementation

  1. Calculate force \( f_n \)
  2. @@ -311,7 +311,7 @@

  3. Update position \( u^{n+1} = u^{n} + \dot u ^ {n+1/2} \, \Delta t \)
  4. Let \( n = n + 1 \)
-

+

Stability Requirement

The central difference method is conditionally stable, so the time step must be less that a certain value. For linear systems this critical time step value depends on the natural period of the system, in particular for undamped linear systems the critical time step is:

@@ -330,29 +330,29 @@

\[ \Delta t_{cr} = l^e / max_p ( c_p + |v_p| ) \]

In a structured regular mesh, \( l^e \) is the grid cell dimension.

-

+

Explicit MPM Scheme

In the MPM the particles stores all the material information and the mesh is used to integrate the motion equation \( \dot{p} = m \frac{dv}{dt} = f \). Therefore, the nodal values of mass, velocity, force, stress, ..., etc., needs no tb interpolated from particles using interpolation functions. After solving the motion equation, the acceleration and velocity are interpolated back to the particles to update their velocities and their positions.

The total force in the motion equation includes internal force and it depends on the stress state store in particles. The stresses can be updated by using a constitutive model, relating stresses with deformations. The deformation tensor can be obtained from the velocity field. The nodal velocities are used to calculate the strain and the vorticity tensor to update the stress. So, in the numerical integration the stresses could be updated with the velocities at the beginning or at the end of each time step. Regarding the velocity field used we have the Update Stress First - USF scheme or the Update Stress Last - USL scheme.

-

+

Update Stress First - USF - Scheme

In the USF scheme the velocities in \( n-1/2 \) are used to update the stress state:

\[ v_{iI}^{k-1/2} = p^{k-1/2}_{iI} / m_p = \sum_p S_{Ip} m_p v_{ip}^{i-1/2} / m_I^k \]

-

+

Update Stress Last - USL - Scheme

In the USL scheme the updated velocities in nodes \( n+1/2 \) are used to update the stress state:

\[ v_{iI}^{k+1/2} = p^{k+1/2}_{iI} / m_I^k \]

-

+

Modified Update Stress Last - MUSL - Scheme

In the Modified USL scheme, the updated particle velocities are used to update the stress state:

\[ v_{iI}^{k+1/2} = \sum_p S_{Ip} m_p v_{ip}^{i+1/2} / m_I^k \]

-

+

References

  • Zhang, X., Chen, Z., & Liu, Y. (2017). The material point method : a continuum-based particle method for extreme loading cases (First edition). Elsevier. http://site.ebrary.com/id/11285709
  • diff --git a/docs/verification_problems.html b/docs/verification_problems.html index 2d446c5..391752e 100644 --- a/docs/verification_problems.html +++ b/docs/verification_problems.html @@ -108,9 +108,9 @@
    Verification problems
-

+

Bousssinesq's problem

-

+

Introduction

In Geomechanics, the Boussinesq's problem refers to the point load acting on a surface of an elastic half-space problem. The boundary conditions for this problem are:

    @@ -122,7 +122,7 @@

    "Boussinesq' problem"

-

+

Analytical solution

The analytical solution of the vertical displacement field is:

\[ @@ -130,7 +130,7 @@

\]

where \( G = \frac{E}{2(1+\nu)} \) is the Shear modulus of the elastic material, \( \nu \) is the Poisson ratio and \( d = \sqrt{ x^2 + y^2 + z^2 } \) is the total distance from load to the point.

-

+

MPM model and result comparison

For model the displacement field generated due the point load we will create an elastic body with dimensions \( l_x = l_y = l_z = 1 m \), for this we can use the keyword "cuboid", with point 1 in (0,0,0) and Point 2 in (1,1,1). For the elastic parameters of the material, we will use Young's modulus equal to \( E = 200e6 \) Pa, a density equal to \( \rho = 1500 kg/m^3\). This body is placed in a computational mesh with cell dimension \( dx = dy = dz = 0.1\) m. The boundary condition of this problem is a nodal load at the middle point on the body surface acting in vertical direction with magnitude of 1. For set this condition we will use the "nodal_point_load" keyword. The displacement boundary condition of the mesh is set using the "boundary_conditions" keyword. In this problem the plane Zn (upper plane) is set as free no move, and all the others planes are set as sliding, allowing movements only in parallel direction of the plane. The current MPM formulation solves the motion equation so, we need to add some damping to avoid the transient solution using "damping" keyword, with "kinetic" option for the damping's type. The "kinetic" keyword is used to active dynamic relaxations techniques on the velocity field for obtaining the static solution of the problem.

The input file for this problem is:

{
@@ -192,14 +192,14 @@ 

"Results comparison"

-

+

Base acceleration example

In this example we will show how to model the movement of an elastic body subjected to a dynamic boundary condition. The geometry of the body will be a regular cuboid with edge dimension \( l_x = 0.3\) m, \( l_y = 0.3 \) m, and \( l_z = 0.8 \) m in the \( xyz \) coordinate system. The lower coordinate point is located at \( p_{min} = (0.4, 0.4, 0.0) \) m. The dynamic boundary condition considered is a base acceleration defined as a function of time as \( \ddot{u} = A 2 \pi f cos ( 2 \pi f t + \alpha ) \). The total time of the simulation is 2 seconds, and the time step is \( \Delta t = 1e-4\) seconds. The material density considered is \( \rho = 2500 \) kg/m \(^3\), and the elastic behavior is defined by Young's modulus \( E = 100e6 \) MPa and Poisson ratio equal to \( \nu = 0.25 \). The figure below shows the body in the space.

"Geometry of the body"
-

+

MPM-Model

With these data we will to create an MPM model consisting in uniformly distributed particles inside the geometry of the body. For do so, we used the "body" and "cuboid" keywords. When body type is "cuboid" we can create a body with the lower and highest coordinate point P1 (lower) and P2 (hight) of the geometry. The material established using the "material_id" keyword. This material must to be correctly defined using the keyword "materials". When we create a body using uniformly distributed particles, eight in the case of a regular element mesh, the number of total particles in the body depends of the mesh grid cell dimension. In this case we will consider a uniform mesh consisting in elements of dimension \( \Delta x = \Delta y = \Delta z = 0.1 \) m. In a MPM model the mesh must to cover the whole domain, covering the complete amplitude of the body movement. For this example we will consider the same number of element in each direction \( n_x=12, n_y=12, n_z=15 \) to account from the origin of coordinate \( (0,0,0) \).

The complete JSON file with the keywords we write:

{
diff --git a/inc/Loads.h b/inc/Loads.h
index 1698537..6149955 100644
--- a/inc/Loads.h
+++ b/inc/Loads.h
@@ -153,11 +153,10 @@ namespace Loads {
     void setInitialVelocity(vector& bodies);
 
     /// \brief configure nodeid-point-load data for nodal force application
-    /// \param [in] Mesh* mesh pointer
-    void configureNodalPointLoads(Mesh*);
+    /// \param [in] mesh mesh pointer
+    void configureNodalPointLoads(Mesh* mesh);
 
-    /// \brief Get (node-id load) vector for set nodal point load.
-    /// \param [out] NodalPointLoad vector 
+    /// \brief Get (node-id load) vector for set nodal point load. 
     NodalPointLoadData& getNodalPointList();
 };
 
diff --git a/inc/MPM.h b/inc/MPM.h
index 94fcb9d..61db76d 100644
--- a/inc/MPM.h
+++ b/inc/MPM.h
@@ -1,82 +1,4 @@
-///
-/// \mainpage MPM-Geomechanics
-///
-/// \section program_intro Introduction
-///
-/// The MPM-Geomechanics is a implementation of the Material Point Method (MPM) to simulate large strain geomechanical problems in 3D. The main objective of this program is to provide an open source platform suitable for the study and application of the MPM in various geomechanical problems were materials are subjected to extreme deformation conditions.
-///
-/// 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:
-///
-/// 
-/// \f$ \frac{\partial \sigma_{i j}}{\partial x_j}+\rho b_i=\rho \ddot{u}_i \f$
-///
-/// that can be expressed discretely, using the nodes of an Eulerian mesh:
-/// 
-/// \f$ \dot{p}_{i I}=f_{i I}^{i n t}+f_{i I}^{e x t} \f$
-/// 
-/// where \f$ p_{i I}=\sum_p S_{I p} p_{i p}\f$ is the momentum, \f$ f_{i I}^{int}=-\sum_p \sigma_{i j p} S_{I p, j} V_p\f$ is the internal force, and \f$ f_{i I}^{e x t}=\sum_p m_p S_{I p} b_{i p}+\int_{\Gamma} \mathrm{t}_i N_I\left(x_i\right) d A\f$ is the external force at node \f$ I \f$.
-///
-/// The function \f$ S_{I p} \f$ and its gradient \f$ S_{I p, j} \f$ are the weighting functions of node \f$ I \f$ evaluated at the position of particle \f$ p \f$, defined by \f$ S_{I p}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_I\left(x_{ip}\right) dV \f$ and \f$ S_{I p, j}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_{I, j}\left(x_{ip}\right) dV \f$. 
-/// 
-/// The integration of the weight functions is performed analytically over the particle domain using linear functions for \f$ N_I\left(x_{ip}\right) \f$ and unit step functions for \f$ \chi_p\left(x_{ip}\right) \f$. 
-///
-/// For more details on the formulation and integration process, refer to: \ref program_theory_manual
-///
-/// \section program_features Program Features
-///
-/// The main features of the program are:
-///
-/// - Three-dimensional 3D formulation
-/// - Dynamic formulation
-/// - Shared memory parallelization using OpenMP
-/// - Many ways to crate bodies (polygons, particle list, pre-defined bodies)
-/// - Several constitutive models for soil and rock materials
-/// - Softening/hardening models to represent weakness during large deformations 
-/// - Coupled fluid-mechanical formulation (*under development*)
-///
-/// \section program_binaries Program compiled binaries
-/// For downloading the compiled binaries
-/// 1. Go to the [Actions page](https://github.com/fabricix/MPM-Geomechanics/actions).
-/// 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.
-///
-/// \section program_compilation Compilation
-///
-/// The best way to use the program is to compile it into your system.
-///
-/// ## Compilation in windows
-/// For compiling the code in windows you can use the Visual Studio solution file `/build/MPM-Geomechanics.sln`, and build it by pressing `Ctr+B`.
-///
-/// Alternatively you can compile it by using command in a *Developer Command Prompt*: 
-/// 
-/// ```
-/// msbuild MPM-Geomechanics.sln -p:Configuration=Release
-/// ```
-///
-/// ## Compilation in Linux
-/// 
-/// For compile the code in a linux environment, execute the [make](https://www.gnu.org/software/make/) command into the make folder, in with is located de makefile `MPM-Geomechanics\build\make\makefile`:
-///  
-/// ```
-/// make
-/// ```
-///
-/// \section program_documentation Documentation
-/// 
-/// The program documentation is generated using [Doxygen](https://www.doxygen.nl/index.html):
-///
-/// ```
-/// doxygen Doxyfile
-/// ```
-///
-/// The HTML generated documentation is located in `/docs/index.html`.
-///
-/// \section program_execution Execution
-///
-/// In order to run simulations in several terminal, you can add the compiled code in the system `PATH`. After that, the common use is to call the program with the input file as argument:
+
 ///
 /// ```
 /// MPM-Geomechanics my_model.json
diff --git a/manual/intro-and-compiling.md b/manual/intro-and-compiling.md
new file mode 100644
index 0000000..17a84f4
--- /dev/null
+++ b/manual/intro-and-compiling.md
@@ -0,0 +1,66 @@
+\mainpage MPM-Geomechanics
+
+# Introduction
+
+The MPM-Geomechanics is a implementation of the Material Point Method (MPM) to simulate large strain geomechanical problems in 3D. The main objective of this program is to provide an open source platform suitable for the study and application of the MPM in various geomechanical problems were materials are subjected to extreme deformation conditions.
+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:
+
+\f$ \frac{\partial \sigma_{i j}}{\partial x_j}+\rho b_i=\rho \ddot{u}_i \f$
+that can be expressed discretely, using the nodes of an Eulerian mesh:
+
+\f$ \dot{p}_{i I}=f_{i I}^{i n t}+f_{i I}^{e x t} \f$
+
+where \f$ p_{i I}=\sum_p S_{I p} p_{i p}\f$ is the momentum, \f$ f_{i I}^{int}=-\sum_p \sigma_{i j p} S_{I p, j} V_p\f$ is the internal force, and \f$ f_{i I}^{e x t}=\sum_p m_p S_{I p} b_{i p}+\int_{\Gamma} \mathrm{t}_i N_I\left(x_i\right) d A\f$ is the external force at node \f$ I \f$.
+The function \f$ S_{I p} \f$ and its gradient \f$ S_{I p, j} \f$ are the weighting functions of node \f$ I \f$ evaluated at the position of particle \f$ p \f$, defined by \f$ S_{I p}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_I\left(x_{ip}\right) dV \f$ and \f$ S_{I p, j}=\frac{1}{V_p} \int_{\Omega_p \cap \Omega} \chi_p\left(x_{ip}\right) N_{I, j}\left(x_{ip}\right) dV \f$. 
+
+The integration of the weight functions is performed analytically over the particle domain using linear functions for \f$ N_I\left(x_{ip}\right) \f$ and unit step functions for \f$ \chi_p\left(x_{ip}\right) \f$. 
+
+For more details on the formulation and integration process, refer to: \ref theory_and_numerical_formulation_
+
+# Program features
+
+The main features of the program are:
+- Three-dimensional 3D formulation
+- Dynamic formulation
+- Shared memory parallelization using OpenMP
+- Many ways to crate bodies (polygons, particle list, pre-defined bodies)
+- Several constitutive models for soil and rock materials
+- Softening/hardening models to represent weakness during large deformations 
+- Coupled fluid-mechanical formulation (*under development*)
+
+# Compiled binaries
+
+For downloading the compiled binaries
+1. Go to the [Actions page](https://github.com/fabricix/MPM-Geomechanics/actions).
+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.
+
+# Compilation in windows
+
+For compiling the code in windows you can use the Visual Studio solution file `/build/MPM-Geomechanics.sln`, and build it by pressing `Ctr+B`.
+Alternatively you can compile it by using command in a *Developer Command Prompt*: 
+
+```
+msbuild MPM-Geomechanics.sln -p:Configuration=Release
+```
+
+# Compilation in Linux
+
+For compile the code in a linux environment, execute the [make](https://www.gnu.org/software/make/) command into the make folder, in with is located de makefile `MPM-Geomechanics\build\make\makefile`:
+ 
+
+# Documentation
+
+The program documentation is generated using [Doxygen](https://www.doxygen.nl/index.html):
+
+```
+doxygen Doxyfile
+```
+
+The HTML generated documentation is located in `/docs/index.html`.
+
+# Execution
+
+In order to run simulations in several terminal, you can add the compiled code in the system `PATH`. After that, the common use is to call the program with the input file as argument:
\ No newline at end of file