Material Point Method
Material Point Method
u
i
a
i
d +
_
u
i
x
j
s
ij
d =
_
u
i
b
i
d +
_
t
u
i
t
i
d (1)
where denotes the current conguration,
s
ij
is the specic stresses i.e.,
s
ij
=
ij
/.
The whole material domain is described with a set of material points, and it is assumed that
the whole mass of a material subdomain is concentrated at the corresponding material point,
which means that the mass density eld is expressed as
(x, t) =
np
p=1
M
p
(x x
p
) (2)
where is the Dirac delta function with dimension of the inverse of volume. Substitution of
Equation (2) into Equation (1) results in
np
p=1
M
p
u
i
(x
p
)a
i
(x
p
)+
np
p=1
M
p
u
i
x
j
(xp)
s
ij
(x
p
) =
np
p=1
M
p
u
i
(x
p
)b
i
(x
p
)+
np
p=1
M
p
u
i
(x
p
)
t
i
(x
p
)
(3)
At this point, MPM is identical to FEM in which the material points are served as integration
points. The background Eulerian grid serves as a nite element mesh with shape functions
{N
I
}
nn
I=1
where n
n
denotes the total number of nodes. Thanks to the use of a grid, evaluation of
shape functions and derivatives are standard and does not involve neighbor search as in meshfree
methods such as SPH. The position and displacement of particle p are then given by
x
i
(x
p
) =
nn
I=1
N
I
(x
p
)x
iI
(4)
u
i
(x
p
) =
nn
I=1
N
I
(x
p
)u
iI
(5)
5
4 WEAK FORM AND DISCRETISATION
where x
iI
is the i component of the position vector of node I. In 3D, one writes x
I
=
(x
1I
, x
2I
, x
3I
). And u
iI
is the i component of the displacement vector of node I. Subscript
I denotes the value of grid node I, and subscript p denotes the value of particle p.
The velocity and acceleration elds are given by
v
i
(x
p
) =
nn
I=1
N
I
(x
p
)v
iI
(6)
a
i
(x
p
) =
nn
I=1
N
I
(x
p
)a
iI
(7)
where v
iI
, a
iI
are the i component of the velocity and acceleration vectors of node I.
Using the Bubnov-Galerkin method, the virtual displacement eld is approximated as
u
i
(x
p
) =
nn
I=1
N
I
(x
p
)u
iI
(8)
thus
u
i
x
j
(xp)
=
nn
I=1
N
I
x
j
(xp)
u
iI
(9)
Substituting Equations (8), (7) and (9) into Equation (3) leads to
np
p=1
M
p
_
nn
I=1
N
I
(x
p
)u
iI
__
nn
J=1
N
J
(x
p
)a
iJ
_
np
p=1
M
p
_
nn
I=1
N
I
x
j
(xp)
u
iI
_
s
ij
(x
p
) =
np
p=1
M
p
_
nn
I=1
N
I
(x
p
)u
iI
_
b
i
(x
p
) +
np
p=1
M
p
_
nn
I=1
N
I
(x
p
)u
iI
_
t
i
(x
p
) (10)
Since u
iI
are arbitrary, we obtain the following set of equations (i equations for each node
I, I = 1, . . . , n
n
)
np
p=1
M
p
N
I
(x
p
)(
nn
J=1
N
J
(x
p
)a
iJ
)
np
p=1
M
p
N
I
x
j
(xp)
s
ij
(x
p
) =
np
p=1
M
p
N
I
(x
p
)b
i
(x
p
) +
np
p=1
M
p
N
I
(x
p
)
t
i
(x
p
) (11)
which can be written in the following compact form
m
IJ
a
J
= f
ext
I
+ f
int
I
(12)
where m
IJ
, f
ext
I
, f
int
I
are the consistent mass matrix, the external force vector and the internal
force vector. This equation is exactly identical to FEM.
6
5 EXPLICIT TIME INTEGRATION
The consistent mass matrix is given by
m
IJ
=
np
p=1
M
p
N
I
(x
p
)N
J
(x
p
) (13)
Note that the mass matrix is not constant as in FEM but changes in time because the material
points move while the grid nodes are xed. Therefore, for every time step, an inversion of the
mass matrix must be carried out. Thus, explicit integration is usually employed in MPM with
the use of a diagonal lumped mass matrix. The diagonal mass matrix is the standard row sum
matrix in which the diagonal terms are given by
m
I
=
nn
J=1
m
IJ
=
nn
J=1
np
p=1
M
p
N
I
(x
p
)N
J
(x
p
) =
np
p=1
M
p
N
I
(x
p
) (14)
where Equation (13) and the partition of unity property of FE shape functions were used.
The external force vector is written as
f
ext
I
=
np
p=1
M
p
N
I
(x
p
)b(x
p
) +
np
p=1
M
p
N
I
(x
p
)
t(x
p
) (15)
and the internal force vector as
f
int
I
=
np
p=1
M
p
/
p
p
N
I
(x
p
) =
np
p=1
V
p
N
I
(x
p
) (16)
where N
I
= (
N
I
x
1
,
N
I
x
2
,
N
I
x
3
)
T
denotes the gradient of the shape function; V
p
is the volume
of particle p. Note that particle densities are dened as the ratio of particle mass to particle
volume. Note also that
p
is a 3 3 matrix in 3D. This is different from the usual stress vector
written in Voigt notation in FEM.
5 Explicit time integration
If a lumped mass matrix is used, Equation (12) becomes
m
t
I
a
t
I
= f
ext
I
+ f
int
I
f
t
I
(17)
and after being multiplied with t, one gets
m
t
I
(v
t+t
I
v
t
I
) = f
t
I
t (18)
which permits the computation of the updated nodal momenta (mv)
t+t
I
. Note that essential
boundary conditions must be applied before (18). It was shown in Ref. [39] that the explicit
procedure of time integration of the dynamic equations required shorter time increment when
the MPM is utilized than in the case of using the nite element method. However, before
7
5 EXPLICIT TIME INTEGRATION
node particle
(a) node to particle (b) particle to node
Figure 4: FE mapping in the material point method: (a) nodes to particles mapping and (b)
particles to nodes mapping. The former is the standard FE mapping (from nodal displacements
to integration points strains). The latter is something unpopular in FEM although this is also
used for FE visualization (mapping the stresses of integration points to the nodes). Note also
that the former mapping is local and the latter is non-local (for C
0
shape functions). It should
be emphasized that some high order Lagrange basis functions are negative and therefore they
are not used in the particles to nodes mapping. High order B-splines are always positive and
hence can be used.
solving Equation (17), one needs the nodal masses and momenta which are not stored at the
nodes. Therefore, they are mapped from the particles using the shape functions
m
t
I
=
p
N
I
(x
t
p
)M
p
(mv)
t
I
=
p
N
I
(x
t
p
)(Mv)
t
p
(19)
Note that this mapping, graphically illustrated in Fig. (4), is a kind of extrapolation and is a
non-local operation.
The particle velocities and positions are updated as follows
v
t+t
p
= v
t
p
+ t
I
N
I
(x
p
)f
t
I
/m
t
I
(20)
x
t+t
p
= x
t
p
+ t
I
N
I
(x
p
)(mv)
t+t
I
/m
t
I
(21)
which are standard FE interpolations, cf. Fig. (4). Note that this is the momentum formulation
in which momentum is used instead of velocity as much as possible, thus avoiding divisions
by potentially small nodal masses. Because the velocity eld is single-valued, interpenetration
of material is precluded. It should be emphasized that this is totally an updated Lagrangian
formulation since the grid nodes are moved to new positions x
t+t
I
= v
t
I
+ tv
t+t
I
. However
8
5 EXPLICIT TIME INTEGRATION
node
particle
Figure 5: Troubled nodes with nearly zero mass resulting in innite acceleration (node 2).
the grid nodes are not explicitly moved because it will be discarded anyway at the end of the
time step.
Next, one needs to compute the updated particle gradient velocities using the nodal veloc-
ities v
t+t
I
. However if the velocities were computed as v
t+t
I
= (mv)
t+t
I
/m
t
I
from Equa-
tion (18) the velocities would then be innite if the mass m
t
I
is small. This happens when a
particle is very closed to a node having only one particle within its support, Fig. 5. There are at
least three ways to treat this issue: (i) using a cutoff value to detect small nodal masses, (ii) a
modied USL and (iii) USF. In the rst approach, the nodal velocities are computed as
v
t+t
I
=
_
_
_
(mv)
t+t
I
m
t
I
if m
t
I
> tol
0 otherwise
(22)
which requires an extra parameter (a cutoff value) in the algorithm which is not clear how to
choose. Even a good cutoff value can be chosen, it produces an undesirable constraint which
should not be in the system. For example it results in non-zero stresses (albeit small) in particles
which are moving with the same speed.
The second way Sulsky et al. [1994] is to map the particle velocities back to the nodal
velocities using
(mv)
t+t
I
=
p
N
I
(x
p
)(Mv)
t+t
p
(23)
and thus
v
t+t
I
=
(mv)
t+t
I
m
t
I
=
p
N
I
(x
p
)(Mv)
t+t
p
p
N
I
(x
p
)M
p
=
p
N
I
(x
p
)(Mv)
t+t
p
m
t
I
(24)
The appearance of the shape functions in both numerator and denominator, in the second equal-
ity, cancel out its role and the numerical problem is thus cured. Our implementation uses the
nal equality because m
t
I
was computed in Equation (19). Note, however, that this option is
inefcient for Equation (23) is a particle-to-node map within the node-to-particle phase.
Next particle velocity gradients are computed
9
6 IMPLEMENTATION
L
t+t
p
v
t+t
p
=
I
N
I
(x
p
)v
t+t
I
(25)
where L
p
is a 3 3 matrix of which components are L
ij
= v
i,j
(in three dimensions). It is
a 2 2 matrix in two dimensions. From the velocity gradients one can compute the gradient
deformation using the relation
F = LF. Utilizing a forward Euler method, one can write
F
t+t
F
t
t
= L
t+t
F
t
(26)
And the gradient deformation tensor is thus computed
F
t+t
p
= (I + L
t+t
p
t)F
t
p
(27)
which allows to compute the updated particle volume V
t+t
p
= det F
t+t
p
V
0
p
. In the above
equation, I is the identity matrix.
Next, the particle stresses are updated. This depends on the constitutive model. For example,
one might need to compute the strain increment
e
p
=
_
symL
t+t
p
_
t (28)
and using it to compute the stress increment
p
. The updated particle stresses are given by
t+t
p
=
t
p
+
p
(29)
In Box 5.1 the step-by-step algorithm of an explicit MPM is given. In the literature it is
referred to as USL (Update Stress Last). In Bardenhagen [2002], another MPM implementation
named USF (Update Stress First) was presented and for completeness, the USF procedure is
given in Box 5.2. For explicit dynamics, there is an restriction on the time step dt < dx/c,
where dx is the grid spacing and c =
_
E/ is the speed of sound in the material.
6 Implementation
In this section, we present a serial implementation of MPM that reuses existing FE resources.
Before doing so, it is benecial to recognize the resemblances and differences between MPM
and FEM:
MPM can be seen as the updated Lagrangian nite element method in which material
points serve as integration points and uncoupled from the Eulerian grid. Practically ma-
terial points, where constitutive equations are applied, move from elements to elements
rather than remain at the Gauss points of an element. This requires to track the movement
of the material points.
Contrary to standard FEM where the mesh is tted to the physical domain of interest,
the Eulerian grid in MPM is dimensioned sufciently large to cover the deformed solid.
Therefore, at a certain time step, there are elements with no material points. They are
labeled as inactive elements and skipped in the assembly process.
10
6 IMPLEMENTATION
Box 5.1 Solution procedure of an explicit MPM code: USL formulation.
1. Initialisation phase
(a) Particle distribution in the undeformed conguration
(b) Grid set up
(c) Initialise particle quantities such as mass, stress, strain etc.
2. Solution phase for time step t to t + t
(a) Mapping from particles to nodes
i. Compute nodal mass m
t
I
=
p
N
I
(x
t
p
)M
p
ii. Compute nodal momentum (mv)
t
I
=
p
N
I
(x
t
p
)(Mv)
t
p
iii. Compute external force f
ext,t
I
iv. Compute internal force f
int
I
=
np
p=1
V
p
p
N
I
(x
p
)
v. Compute nodal force f
I
= f
ext
I
+ f
int
I
(b) Update the momenta (mv)
t+t
I
= (mv)
t
I
+ f
I
t
(c) Mapping from nodes to particles
i. Update particle velocities v
t+t
p
= v
t
p
+ t
I
N
I
(x
p
)f
t
I
/m
t
I
ii. Update particle positions x
t+t
p
= x
t
p
+ t
I
N
I
(x
p
)(mv)
t+t
I
/m
t
I
iii. Update nodal velocities v
t+t
I
= (mv)
t+t
I
/m
t
I
iv. Update gradient velocity L
t+t
p
=
I
N
I
(x
p
)v
t+t
I
v. Updated gradient deformation tensor F
t+t
p
= (I + L
t+t
p
t)F
t
p
vi. Update volume V
t+t
p
= det F
t+t
p
V
0
p
.
vii. Update stresses
t+t
p
=
t
p
+
p
3. Reset the grid (if it was updated) and advance to the next time step.
11
6 IMPLEMENTATION
Box 5.2 Solution procedure of an explicit MPM code: USF formulation.
1. Initialisation phase
2. Solution phase for time step t to t + t
(a) Mapping from particles to nodes
i. Compute nodal mass m
t
I
=
p
N
I
(x
t
p
)M
p
ii. Compute nodal momentum (mv)
t
I
=
p
N
I
(x
t
p
)(Mv)
t
p
iii. Compute nodal velocities v
t
I
= (mv)
t
I
/m
t
I
iv. Compute gradient velocity L
t
p
=
I
N
I
(x
p
)v
t
I
v. Compute gradient deformation tensor F
t
p
= (I + L
t
p
t)F
t
p
vi. Update volume V
t
p
= det F
t+t
p
V
0
p
vii. Update stresses
t
p
=
t
p
+
p
viii. Compute external force f
ext,t
I
ix. Compute internal force f
int
I
=
np
p=1
V
p
p
N
I
(x
p
)
x. Compute nodal force f
I
= f
ext
I
+ f
int
I
(b) Update the momenta (mv)
t+t
I
= (mv)
t
I
+ f
I
t
(c) Mapping from nodes to particles
i. Update particle velocities v
t+t
p
= v
t
p
+ t
I
N
I
(x
p
)f
t
I
/m
t
I
ii. Update particle positions x
t+t
p
= x
t
p
+ t
I
N
I
(x
p
)(mv)
t+t
I
/m
t
I
3. Reset the grid (if it was updated) and advance to the next time step.
12
6 IMPLEMENTATION
Unlike FEM, in MPM there is a mapping from Gauss points (particles) to nodes.
Some advantages of MPM are listed as follows
Mesh distortion of Lagrangian FEM is eliminated.
The problem of free surface is easy to solve.
The problem of no-slip self-contact is solved automatically in the case of granular ma-
terial: there is no penetration of particles because the velocities of the material point are
single valued.
Boundary conditions can be applied as easily as in the case of standard FEM.
Adding material points during calculations is relatively easy as there is no coupling be-
tween them and the grid.
The MPM can be implemented in a FEM program in a relatively easy way in constrast to
meshfree methods or ALE methods.
Solving uid-structure interaction is relatively straightforward: the background grid is
also used as an Eulerian grid for the uid.
The MPM suffers from the following disadvantages
Efciency of MPM is lower than that of FEM due to the mappings between the back-
ground grid and the particles and the accuracy of particles quadrature used in MPM is
lower than that of Gauss quadrature used in FEM.
This method, in analogy with meshless methods, also introduces new visualization chal-
lenges.
Whereas the nite element method (FEM) has long-established basic verication stan-
dards (patch tests, convergence testing, etc.), no such standards have been universally
adopted within the particle method community.
Available MPM codes
Uintah, http://www.uintah.utah.edu
MPM-GIMP, http://sourceforge.net/p/mpmgimp/home/Home/
Mechsys, http://mechsys.nongnu.org/index.shtml
NairnMPM, http://osupdocs.forestry.oregonstate.edu/index.php/Main_Page
CartaBlanca
All are written in C++ except the last one which is written in Java.
13
6.1 Eulerian grid 6 IMPLEMENTATION
Figure 6: A two dimensional structured grid.
6.1 Eulerian grid
In MPM a structured Eulerian grid is usually used for its advantages. Among other bene-
ts, a uniform Cartesian grid eliminates the need for computationally expensive neighborhood
searches during particle-mesh interaction. A structured mesh is illustrated in Fig. 6 for 2D
cases. For a particle p with coordinates (x
p
, y
p
), it is straightforward to track which element it
belongs to using the following equation
e = [oor((x
p
x
min
)/
x
) + 1] + nel
x
[oor((y
p
y
min
)/y)] (30)
where nel
x
denotes the number of elements along the x direction and (x
min
, y
min
) are the mini-
mum node coordinates and x, y are the nodal spacing in the x and y directions, respectively.
In order to keep the implementation similar to FEM as much as possible, at every time step,
the elements must know which particles they are storing. Listing 1 gives a simple data structure
implemented in Matlab for this purpose.
Listing 1: Matlab data structures for mesh-particle interaction
pElems = ones ( pCount , 1 ) ;
mpoi nt s = c e l l ( el emCount , 1 ) ;
f or p =1: pCount
x = xp ( p , 1 ) ;
y = xp ( p , 2 ) ;
e = f l o o r ( x / d e l t a x ) + 1 + numx2 f l o o r ( y / d e l t a y ) ;
pElems ( p ) = e ; % p a r t i c l e " p " s t a y s i n e l e me nt " e "
end
f or e =1: el emCount
i d = f i nd ( pElems==e ) ;
mpoi nt s {e }= i d ; % mpoi nt s {e}> i n d i c e s of p a r t i c l e s i n " e "
end
14
6 IMPLEMENTATION 6.2 Shape functions
Figure 7: Material point method: One dimensional shape functions dened in global coordinate
system.
6.2 Shape functions
Although any grid can be used in MPM, a Cartesian grid is usually chosen for computational
convenience reasons. In order to avoid nding the natural coordinates of material points if shape
functions are dened in the parameter space, in MPM shape functions are conveniently dened
in the global coordinate system. In 1D, the shape functions are dened as
N
x
I
(x) =
_
1 |x x
I
|/l
x
if |x x
I
| l
x
0 else
(31)
where l
x
denotes the nodal spacing or element size in the x direction. For 2D, the shape func-
tions are simply the tensor-product of the two shape functions along the x and y directions
N
I
(x, y) = N
x
I
(x)N
y
(y) (32)
Remark 6.1. If shape functions are dened in the parent domain as most isoparametric elements
are i.e., N
I
= N
I
(, ), then one has to perform one extra stepafter getting the updated particle
positions, determine the natural coordinates (, ) of them. For a 2D structured grid with linear
elements, it is straightforward to do so as
=
2x (x
e
1
+ x
e
2
)
x
e
2
x
e
1
=
2y (y
e
1
+ y
e
2
)
y
e
2
y
e
1
(33)
where (x
e
1
, y
e
1
) and (x
e
2
, y
e
2
) denote the lower-left and upper-right nodes of element e, respec-
tively. Extension to 3D is straightforward.
15
6.3 Initial particle distribution 6 IMPLEMENTATION
(a) parametric mesh (b) physical mesh
Figure 8: A two dimensional structured grid with B-splines.
6.2.1 B-splines basis functions
Steffen et al. [2008] showed that for simple problems, the use of cubic splines improves the
spatial convergence properties of method as grid-crossing errors are reduced.
Given a knot vector
1
= {
1
,
2
, . . . ,
n+p+1
}, the associated set of B-spline basis functions
{N
i,p
}
n
i=1
are dened recursively by the Cox-de-Boor formula, starting with the zeroth order
basis function (p = 0)
N
i,0
() =
_
1 if
i
<
i+1
,
0 otherwise,
(34)
and for a polynomial order p 1
N
i,p
() =
i
i+p
i
N
i,p1
() +
i+p+1
i+p+1
i+1
N
i+1,p1
(). (35)
in which fractions of the form 0/0 are dened as zero.
In two dimensions, the knot vectors are
1
= {
1
,
2
, . . . ,
n+p+1
} and
2
=
{
1
,
2
, . . . ,
m+q+1
} and the bi-variate B-spline basis functions are dened as
N
i,j
(, ) = N
i,p
()M
j,q
() (36)
The mapping between the parameter space and the physical space is always linear regardless
of the basis order and is given by
x = (x
max
x
min
) + x
min
, y = (y
max
y
min
) + y
min
(37)
High order B-spline basis functions are C
p1
not C
0
, the connectivity of elements is different
from standard nite elements. Fig. 9 illustrates this difference in case of cubic B-splines. Apart
from this B-splines MPM is exactly identical to standard MPM.
6.3 Initial particle distribution
There are numerous ways to obtain the initial particle distribution depends on the geometry of
the object and/or the available tools. For example, in order to generate particles for a circular
16
6 IMPLEMENTATION 6.3 Initial particle distribution
0 0.2 0.4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
elements
nodes
1 2 3 4 5 6 7 8
particle
Figure 9: One dimensional cubic (p = 3) B-spline basis functions on a open uniform knot =
{0, 0, 0, 0, 0.2, 0.4, 0.6, 0.8, 1, 1, 1, 1}. There are 8 nodes (control points in CAD terminology)
and 5 elements (or knot spans in CAD). At can be seen from the gure, at any point there are 4
(= (p + 1)) non-zero basis functions. Therefore each element has 4 nodes. The rstelements
connectivity is [1, 2, 3, 4].
17
6.4 Visualisation 7 EXAMPLES
Figure 10: Initial particle distribution: obtained using the available FE mesh generators.
disk, one can use a mesh generator to partition the disk into a set of triangles. The particles
can be taken as the centers of these triangles, Fig. 10. Alternatively, integration points of the
triangular elements are mapped to the global coordinate systems and then are used as material
points. The area of each triangle can be easily obtained and thus the particle volumes and
masses can be determined.
6.4 Visualisation
In FEM visualisation is typically performed on the mesh. Information stored at the integration
points are extrapolated to the nodes to this end. In MPM, the computational grid is xed and
thus not suitable for visualisation. There are at least two approaches to visualizing MPM results
Particle visualization: the particles are visualized directly as spheres. Particle data (posi-
tion, stresses etc.) are written to les (say VTK les) and can be processed by Paraview
or Visit.
Particle mesh visualization: in standard MPM, one can generate a mesh from the parti-
cle positions using a Delaunay triangulation and use this mesh for visualization. Note
however that this method is expensive since the particles positions are evolving in time.
7 Examples
In this section various examples in one and two dimensions are provided to verify the imple-
mentation as well as to demonstrate the performance of the MPM.
7.1 1D examples
As the simplest MPM example, let us consider the vibration of a single material point as shown
in Fig. 11. The bar is represented by a single point initially located at X
p
= L/2, which has an
initial velocity v
0
. The material is linear elastic.
18
7 EXAMPLES 7.1 1D examples
Figure 11: Vibration of a single material point (solid point).
The exact solution is given by
v(t) = v
0
cos(t), =
1
L
_
E/ (38)
for the velocity and
x(t) = x
0
exp
_
v
0
Lw
sin(t)
_
(39)
for the position. The density is constant and equals one. The constitutive equation is = E ,
= dv/dx where E is the Youngs modulus. The grid consists of one two-noded element.
The elastic wave speed is c =
_
E/ = 2. Boundary conditions are imposed on the grid
and demand that both the node velocity and the acceleration at x = 0 (the left node) be zero
throughout the simulation. The Matlab implementation is given in Listing 2. Comparison
between MPM and the exact solutions are given in Fig. 12. Kinetic, strain and total energies
are plotted in Fig. 13 from which one observes that energy is conserved. The strain and kinetic
energy are computed as
U =
1
2
p
V
p
, K =
1
2
v
2
p
M
p
(40)
Listing 2: Matlab implementation
% Comput a t i ona l g r i d
nodes = [ 0 L ] ;
e l e me nt s = [ 1 2 ] ;
el emCount = s i z e ( el ement s , 1 ) ;
nodeCount = s i z e ( nodes , 2 ) ;
% Ma t e r i a l p o i n t s
xp = 0. 5L; % p o s i t i o n
Mp = 1 ; % mass
Vp = 1 ; % volume
vp = 0 . 1 ; % v e l o c i t y
s = 0 . ; % s t r e s s
q = Mpvp ; % momentum
% Time l oop
t i me = 0 . 1 ;
dt i me = 0 . 0 1 ;
t = 0 ;
19
7.1 1D examples 7 EXAMPLES
t a = [ ] ; va = [ ] ; xa = [ ] ;
whi l e ( t < t i me )
% s hape f u n c t i o n s and d e r i v a t i v e s
N1 = 1 abs ( xpnodes ( 1 ) ) / L;
N2 = 1 abs ( xpnodes ( 2 ) ) / L;
dN1 = 1/L;
dN2 = 1 / L;
% p a r t i c l e mass and momentum t o node
m1 = N1Mp;
m2 = N2Mp;
mv1 = N1q ;
mv2 = N2q ;
mv1 = 0 ; % Boundar y c o n d i t i o n v=0 a t node 1
% i n t e r n a l f o r c e
f i n t 1 = Vp s dN1 ;
f i n t 2 = Vp s dN2 ;
f 1 = f i n t 1 ; % t h e r e i s no e x t e r n a l f o r c e
f 2 = f i n t 2 ;
% upda t e noda l momenta
f 1 = 0 ; % Boundar y c o n d i t i o n s f 1 = m1a1 , a1=0
mv1 = mv1 + f 1 dt i me ;
mv2 = mv2 + f 2 dt i me ;
% upda t e p a r t i c l e v e l o c i t y and p o s i t i o n
vp = vp + dt i me ( N1 f 1 / m1 + N2 f 2 / m2 ) ;
xp = xp + dt i me ( N1mv1 / m1 + N2mv2 / m2 ) ;
q = Mpvp ; % momentum
v1 = N1Mpvp / m1;
v2 = N2Mpvp / m2;
v1 = 0 ; % boundar y c o n d i t i o n
Lp = dN1 v1 + dN2 v2 ; % g r a d i e n t v e l o c i t y
dEps = dt i me Lp ; % s t r a i n i n c r e me n t
s = s + E dEps ; % s t r e s s upda t e
% s t o r e t i me , v e l o c t y f o r p l o t t i n g
t a = [ t a ; t ] ;
va = [ va ; vp ] ;
xa = [ xa ; xp ] ;
% advance t o t h e ne xt t i me s t e p
t = t + dt i me ;
end
20
7 EXAMPLES 7.1 1D examples
0 2 4 6 8 10
0.2
0.15
0.1
0.05
0
0.05
0.1
0.15
Time
V
e
l
o
c
i
t
y
MPM
Exact
0 2 4 6 8 10
8
6
4
2
0
2
4
6
8
10
Time
D
i
s
p
l
a
c
e
m
e
n
t
MPM
Exact
Figure 12: Vibration of a single material point.
0 0.5 1 1.5 2
0
1
2
3
4
5
6
7
x 10
3
Time
E
n
e
r
g
y
kinetic
strain
total
Figure 13: Vibration of a single material point: kinetic, strain and total energies.
21
7.2 Axial vibration of a continuum bar 7 EXAMPLES
7.2 Axial vibration of a continuum bar
In this example, we study the axial vibration of a continuumbar with Youngs modulus E = 100
and the bar length L = 25.
Exact solutions for mode 1 are
v(x, t) = v
0
cos(
1
t) sin(
1
x) (41)
u(x, t) =
v
0
1
sin(
1
t) sin(
1
x) (42)
where
1
=
2L
_
E/ and
1
=
2L
.
The initial velocity is given by
v(x, 0) = v
0
sin(
1
x) (43)
The grid consists of 13 two-noded line elements (14 grid nodes) and 13 material points
placed at the center of the elements are used. The initialisation step implemented in Matlab is
given in Listing 3. The solution step implemented in Matlab is given in Listing 4. The results
are given in Fig. 14 and the evolution of kinetic energy, strain energy and their sum (the total
energy) is plotted in Fig. 15. The time increment is chosen as t = 0.1x/c where x denotes
the nodal spacing.
Listing 3: Vibration of a continuum bar: initialisation.
% Comput a t i ona l g r i d : twonoded e l e me nt s
el emCount = 13;
nodes = l i ns pa c e ( 0 , L, el emCount +1 ) ;
e l e me nt s = z e r os ( el emCount , 2 ) ;
f or i e =1: el emCount
e l e me nt s ( i e , : ) = i e : i e +1;
end
nodeCount = s i z e ( nodes , 2 ) ;
ve l o = z e r os ( nodeCount , 1 ) ;
mId = f l o o r ( ( el emCount ) / 2 ) + 1 ; % i d of t h e c e n t e r mass p a r t i c l e
% Ma t e r i a l p o i n t s : c e n t e r s of t h e e l e me nt s one p a r t i c l e pe r e l e me nt
c = s qr t ( E/ r ho ) ;
b e t a 1 = pi / 2 / L;
omega1 = b e t a 1 c ;
d e l t a x = L/ el emCount ; % noda l s p a c i n g
% ma t e r i a l p o i n t s a t t h e c e n t e r of e l e me nt s
xp = z e r os ( el emCount , 1 ) ;
f or p =1: el emCount 1
xp ( p ) = 0 . 5 ( nodes ( p ) + nodes ( p + 1 ) ) ;
end
pCount = l e ngt h ( xp ) ;
Mp = d e l t a x ones ( pCount , 1 ) ; % mass
Vp = d e l t a x ones ( pCount , 1 ) ; % volume
22
7 EXAMPLES 7.2 Axial vibration of a continuum bar
Fp = ones ( pCount , 1 ) ; % g r a d i e n t d e f o r ma t i o n
Vp0 = Vp ; % i n i t i a l volume
sp = z e r os ( pCount , 1 ) ; % s t r e s s
vp = z e r os ( pCount , 1 ) ; % v e l o c i t y
% i n i t i a l v e l o c i t i e s
f or p =1: pCount
vp ( p ) = 0. 1 s i n ( b e t a 1 xp ( p ) ) ;
end
Listing 4: Vibration of a continuum bar: processing step.
dt i me = 0. 1 d e l t a x / c ;
t i me = 100;
t = 0 ;
t a = [ ] ; va = [ ] ; xa = [ ] ;
nmass = z e r os ( nodeCount , 1 ) ; % noda l mass v e c t o r
nmomentum = z e r os ( nodeCount , 1 ) ; % noda l momentum v e c t o r
n i f o r c e = z e r os ( nodeCount , 1 ) ; % noda l i n t e r n a l f o r c e v e c t o r
n e f o r c e = z e r os ( nodeCount , 1 ) ; % noda l e x t e r n a l f o r c e v e c t o r
whi l e ( t < t i me )
nmass ( : ) = 0 ;
nmomentum( : ) = 0 ;
n i f o r c e ( : ) = 0 ;
% l oop over c o mp u t a t i o n a l c e l l s or e l e me nt s
f or e =1: el emCount
e s c t r = e l e me nt s ( e , : ) ;
enode = nodes ( e s c t r ) ;
Le = enode (2) enode ( 1 ) ;
mpt s = mpoi nt s {e } ;
% l oop over p a r t i c l e s
f or p =1: l e ngt h ( mpt s )
pi d = mpt s ( p ) ;
N1 = 1 abs ( xp ( pi d )enode ( 1 ) ) / Le ;
N2 = 1 abs ( xp ( pi d )enode ( 2 ) ) / Le ;
dN1 = 1/Le ;
dN2 = 1 / Le ;
% p a r t i c l e mass and momentum t o node
nmass ( e s c t r ( 1 ) ) += N1Mp( pi d ) ;
nmass ( e s c t r ( 2 ) ) += N2Mp( pi d ) ;
nmomentum( e s c t r ( 1 ) ) += N1Mp( pi d ) vp ( pi d ) ;
nmomentum( e s c t r ( 2 ) ) += N2Mp( pi d ) vp ( pi d ) ;
% i n t e r n a l f o r c e
n i f o r c e ( e s c t r ( 1 ) ) = n i f o r c e ( e s c t r ( 1 ) ) Vp( pi d ) sp ( pi d ) dN1 ;
n i f o r c e ( e s c t r ( 2 ) ) = n i f o r c e ( e s c t r ( 2 ) ) Vp( pi d ) sp ( pi d ) dN2 ;
end
end
% upda t e noda l momenta
nmomentum( 1 ) = 0 ; % Boundar y c o n d i t i o n s f 1 = m1a1 , a1=0
n i f o r c e ( 1 ) = 0 ;
23
7.3 Impact of two elastic bodies 7 EXAMPLES
f or i =1: nodeCount
nmomentum( i ) = nmomentum( i ) + n i f o r c e ( i ) dt i me ;
end
% upda t e p a r t i c l e v e l o c i t y and p o s i t i o n and s t r e s s e s
f or e =1: el emCount
e s c t r = e l e me nt s ( e , : ) ;
enode = nodes ( e s c t r ) ;
Le = enode (2) enode ( 1 ) ;
mpt s = mpoi nt s {e } ;
% l oop over p a r t i c l e s
f or p =1: l e ngt h ( mpt s )
pi d = mpt s ( p ) ;
N1 = 1 abs ( xp ( pi d)enode ( 1 ) ) / Le ;
N2 = 1 abs ( xp ( pi d)enode ( 2 ) ) / Le ;
dN1 = 1/Le ; dN2 = 1 / Le ;
i f nmass ( e s c t r ( 1 ) ) > t o l
vp ( pi d ) += dt i me N1 n i f o r c e ( e s c t r ( 1 ) ) / nmass ( e s c t r ( 1 ) ) ;
end
i f nmass ( e s c t r ( 2 ) ) > t o l
vp ( pi d ) += dt i me N2 n i f o r c e ( e s c t r ( 2 ) ) / nmass ( e s c t r ( 2 ) ) ;
end
xp ( pi d ) += dt i me ( N1nmomentum( e s c t r ( 1 ) ) / nmass ( e s c t r ( 1 ) ) +
N2nmomentum( e s c t r ( 2 ) ) / nmass ( e s c t r ( 2 ) ) ) ;
v1 = nmomentum( e s c t r ( 1 ) ) / nmass ( e s c t r ( 1 ) ) ;
v2 = nmomentum( e s c t r ( 2 ) ) / nmass ( e s c t r ( 2 ) ) ;
%i f ( e s c t r ( 1 ) == 1 ) v1 = 0 ; end
Lp = dN1 v1 + dN2 v2 ; % g r a d i e n t v e l o c i t y
Fp ( pi d ) = ( 1 + Lp dt i me ) Fp ( pi d ) ; % g r a d i e n t d e f o r ma t i o n
Vp( pi d ) = Fp ( pi d ) Vp0( pi d ) ; % volume
dEps = dt i me Lp ; % s t r a i n i n c r e me n t
sp ( pi d ) = sp ( pi d ) + E dEps ; % s t r e s s upda t e
end
end
% s t o r e t i me , v e l o c t y f o r p l o t t i n g
t a = [ t a ; t ] ; va = [ va ; vp ( mId ) ] ; xa = [ xa ; xp ( mId ) ] ;
% advance t o t h e ne xt t i me s t e p
t = t + dt i me ;
end
7.3 Impact of two elastic bodies
Fig. 16 shows the problem of the impact of two identical elastic disks which move in opposite
direction towards each other Sulsky et al. [1994]. The computational domain is a square which
is discretised into 20 20 Q4 elements. A plane strain condition is assumed. The mesh and
the initial particle distribution are shown in Fig. 17. There are 320 particles for two disks which
are obtained by meshing (using Gmsh) the two disks and take the centers as the initial particle
positions. Initial condition for this problem is the initial velocities of the particles, v
p
= v for
lower-left particles and v
p
= v for upper-right particles. There is no boundary conditions
in this problem since the simulation stops before the particles after impact move out of the
24
7 EXAMPLES 7.3 Impact of two elastic bodies
0 20 40 60 80 100
0.1
0.08
0.06
0.04
0.02
0
0.02
0.04
0.06
0.08
0.1
Time
V
e
l
o
c
i
t
y
MPM
Exact
Figure 14: Vibration of a continuum bar: comparison of the MPM velocity solution and the
exact solution.
0 20 40 60 80 100
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
Time
E
n
e
r
g
y
kinetic
strain
total
Figure 15: Vibration of a continuum bar: kinetic, strain and total energies.
25
7.3 Impact of two elastic bodies 7 EXAMPLES
Figure 16: Impact of two elastic bodies: problem statement.
computational box.
In order to check the energy conservation, the strain and kinetic energy are computed for
each time step. They are dened as
U =
np
p=1
u
p
V
p
, K =
1
2
np
p=1
v
p
v
p
M
p
(44)
where u
p
denotes the strain energy density of particle p, u
p
= 1/2
p,ij
p,ij
or explicitly as
u
p
=
1
4
_
+ 1
4
(
2
p,xx
+
2
p,yy
) 2(
p,xx
p,yy
2
p,xy
)
_
(45)
with and are the shear modulus and the Kolosov constant, respectively.
List 5 and 6 gives the code for initialising the particle data and nodal data. Lists 7, 8 and
9 presents the codes for the solution phase. Note that some C++ notations (+=) were adopted
to save space. It should be emphasized that the code has not been optimized to make it easy
to understand. One can, for example, store the shape functions and its derivatives computed in
List 8 so that they can be reused in List 9.
Listing 5: Two dimensional MPM: particle initialisation.
pCount = numelem; % # of p a r t i c l e s
Mp = ones ( pCount , 1 ) ; % mass
Vp = ones ( pCount , 1 ) ; % volume
Fp = ones ( pCount , 4 ) ; % g r a d i e n t d e f o r ma t i o n
s = z e r os ( pCount , 3 ) ; % s t r e s s
eps = z e r os ( pCount , 3 ) ; % s t r a i n
vp = z e r os ( pCount , 2 ) ; % v e l o c i t y
xp = z e r os ( pCount , 2 ) ; % p o s i t i o n
% i n i t i a l i s e p a r t i c l e p o s i t i o n , mass , volume , v e l o c i t y
f or e = 1 : numelem
coor d = node1 ( el ement 1 ( e , : ) , : ) ;
a = det ( [ coor d , [ 1 ; 1 ; 1 ] ] ) / 2 ;
Vp( e ) = a ;
26
7 EXAMPLES 7.3 Impact of two elastic bodies
Figure 17: Impact of two elastic bodies: Eulerian mesh and initial particle distribution.
Mp( e ) = a r ho ;
xp ( e , : ) = mean( coor d ) ;
% t h i s i s p a r t i c u l a r f o r t h e two i mpact d i s k s exampl e
i f xp ( e , 1 ) < 0. 5
vp ( e , : ) = [ v v ] ;
e l s e
vp ( e , : ) = [v v ] ;
end
Fp ( e , : ) = [ 1 0 0 1 ] ;
end
Vp0 = Vp ;
Listing 6: Two dimensional MPM: nodal initialisation.
% b u i l d t h e s t r u c t u r e d g r i d . . .
% i n i t i a l i s e noda l d a t a
nmass = z e r os ( nodeCount , 1 ) ; % noda l mass v e c t o r
nmomentum = z e r os ( nodeCount , 2 ) ; % noda l momentum v e c t o r
n i f o r c e = z e r os ( nodeCount , 2 ) ; % noda l i n t e r n a l f o r c e v e c t o r
n e f o r c e = z e r os ( nodeCount , 2 ) ; % noda l e x t e r n a l f o r c e v e c t o r
Listing 7: Two dimensional MPM: solution phase (explicit).
whi l e ( t < t i me )
% r e s e t g r i d d a t a
nmass ( : ) = 0 ;
nmomentum( : ) = 0 ;
n i f o r c e ( : ) = 0 ;
% p a r t i c l e t o g r i d nodes
27
7.3 Impact of two elastic bodies 7 EXAMPLES
See Li s t 8
% upda t e noda l momenta
nmomentum = nmomentum + n i f o r c e dt i me ;
% nodes t o p a r t i c l e s
See Li s t 9
% s t o r e t i me , v e l o c t y f o r p l o t t i n g
pos { i s t e p } = xp ;
v e l { i s t e p } = vp ;
% upda t e t h e e l e me nt p a r t i c l e l i s t
f or p =1: pCount
x = xp ( p , 1 ) ;
y = xp ( p , 2 ) ;
e = f l o o r ( x / de l t a X ) + 1 + numx2 f l o o r ( y / de l t a Y ) ;
pElems ( p ) = e ;
end
f or e =1: el emCount
i d = f i nd ( pElems==e ) ;
mpoi nt s { e}= i d ;
end
% VTK o u t p u t
i f ( mod( i s t e p , i n t e r v a l ) == 0 )
xp = pos { i s t e p } ;
v t k Fi l e = s pr i nt f ( ../results/%s%d , vt kFi l eName , i s t e p ) ;
VTKPa r t i c l e s ( xp , v t k Fi l e , s ) ;
end
% advance t o t h e ne xt t i me s t e p
t = t + dt i me ; i s t e p = i s t e p + 1 ;
end
Listing 8: Two dimensional MPM: particles to nodes.
f or e =1: el emCount % l oop over e l e me nt s
e s c t r = e l e me nt ( e , : ) ; % e l e me nt c o n n e c t i v i t y
enode = node ( e s c t r , : ) ; % e l e me nt node c oor ds
mpt s = mpoi nt s {e } ; % p a r t i c l e s i n s i d e e l e me nt e
% l oop over p a r t i c l e s
f or p =1: l e ngt h ( mpt s )
pi d = mpt s ( p ) ; % p a r t i c l e ID
p t ( 1) = ( 2 xp ( pi d , 1) ( enode ( 1 , 1 ) + enode ( 2 , 1 ) ) ) / de l t a X ;
p t ( 2) = ( 2 xp ( pi d , 2) ( enode ( 2 , 2 ) + enode ( 3 , 2 ) ) ) / de l t a Y ;
[N, dNdxi ] = l a g r a n g e _ b a s i s ( Q4 , p t ) ; % e l e me nt s hape f u n c t i o n s
J0 = enode dNdxi ; % e l e me nt J a c o b i a n ma t r i x
i n v J 0 = i nv ( J0 ) ;
dNdx = dNdxi i n v J 0 ;
% p a r t i c l e mass and momentum t o node
s t r e s s = s ( pi d , : ) ;
f or i =1: l e ngt h ( e s c t r )
i d = e s c t r ( i ) ; % node ID
dNIdx = dNdx ( i , 1 ) ;
dNIdy = dNdx ( i , 2 ) ;
nmass ( i d ) += N( i ) Mp( pi d ) ;
28
7 EXAMPLES 7.3 Impact of two elastic bodies
nmomentum( i d , : ) += N( i ) Mp( pi d ) vp ( pi d , : ) ;
n i f o r c e ( i d , 1 ) = Vp( pi d ) ( s t r e s s ( 1 ) dNIdx + s t r e s s ( 3 ) dNIdy ) ;
n i f o r c e ( i d , 2 ) = Vp( pi d ) ( s t r e s s ( 3 ) dNIdx + s t r e s s ( 2 ) dNIdy ) ;
end
end
end
Listing 9: Two dimensional MPM: nodes to particles.
f or e =1: el emCount % l oop over e l e me nt s
e s c t r = e l e me nt ( e , : ) ;
enode = node ( e s c t r , : ) ;
mpt s = mpoi nt s {e } ;
% l oop over p a r t i c l e s
f or p =1: l e ngt h ( mpt s )
pi d = mpt s ( p ) ;
p t ( 1) = ( 2 xp ( pi d , 1) ( enode ( 1 , 1 ) + enode ( 2 , 1 ) ) ) / de l t a X ;
p t ( 2) = ( 2 xp ( pi d , 2) ( enode ( 2 , 2 ) + enode ( 3 , 2 ) ) ) / de l t a Y ;
[N, dNdxi ] = l a g r a n g e _ b a s i s ( Q4 , p t ) ;
J0 = enode dNdxi ;
i n v J 0 = i nv ( J0 ) ;
dNdx = dNdxi i n v J 0 ;
Lp = z e r os ( 2 , 2 ) ;
f or i =1: l e ngt h ( e s c t r )
i d = e s c t r ( i ) ; % node ID
vI = [ 0 0 ] ;
i f nmass ( i d ) > t o l
vp ( pi d , : ) += dt i me N( i ) n i f o r c e ( i d , : ) / nmass ( i d ) ;
xp ( pi d , : ) += dt i me N( i ) nmomentum( i d , : ) / nmass ( i d ) ;
vI = nmomentum( i d , : ) / nmass ( i d ) ;% noda l v e l o c i t y
end
Lp = Lp + vI dNdx ( i , : ) ; % p a r t i c l e g r a d i e n t v e l o c i t y
end
F = ( [ 1 0; 0 1] + Lp dt i me ) reshape ( Fp ( pi d , : ) , 2 , 2 ) ;
Fp ( pi d , : ) = reshape ( F , 1 , 4 ) ;
Vp( pi d ) = det ( F) Vp0( pi d ) ;
dEps = dt i me 0. 5 ( Lp+Lp ) ;
dsi gma = C [ dEps ( 1 , 1 ) ; dEps ( 2 , 2 ) ; 2 dEps ( 1 , 2 ) ] ;
s ( pi d , : ) = s ( pi d , : ) + dsigma ;
eps ( pi d , : ) = eps ( pi d , : ) + [ dEps ( 1 , 1 ) dEps ( 2 , 2 ) 2dEps ( 1 , 2 ) ] ;
end
end
The movement of two disks is given in Fig. 18. The collision occurs in a physically realistic
fashion, although no contact law has been specied. Fig. 19 plots the evolution of the kinetic,
strain and total energy.
29
7.3 Impact of two elastic bodies 7 EXAMPLES
time: 0.930000 time: 1.205000
time: 1.930000 time: 2.480000
Figure 18: Impact of two elastic bodies: time snapshots of the bodies. Top gures: twp bodies
move towards each other and collide. Bottom gures: they bounce back and move far from
each other. These gures were created in Matlab using the scatter command.
30
7 EXAMPLES 7.4 Impact of two elastic rings
0 0.5 1 1.5 2 2.5 3 3.5
0
0.5
1
1.5
2
2.5
3
Time
E
n
e
r
g
y
kinetic
strain
total
Figure 19: Impact of two elastic bodies: evolution of strain, kinetic and total energies in time.
Figure 20: Impact of two elastic bodies: problem description. Dimensions are in millimeters.
7.4 Impact of two elastic rings
This example problem involves two hollow elastic cylinders, under the assumption of plane
strain, impacting each other Fig. 20. The material is a compressible Neo-Hookean with bulk
modulus K = 121.7 MPa, shear modulus = 26.1 MPa, the density is = 1010 10
12
kg/mm
3
. The Cauchy stresses are computed as follows
=
1
J
[
0
(b I) +
0
ln JI] (46)
where J = det F and b = FF
T
is the left Cauchy strain tensor;
0
= K 2/3
0
is the rst
Lam constant.
A grid of 100 60 elements is adopted and each cylinder is discretized by 5488 particles.
The time step was chosen as t = 0.2
_
E/ = 1.5 10
6
s. For this problem, it is very
31
8 GENERALIZED INTERPOLATION MATERIAL POINT METHOD-GIMP
hard to nd a cutoff value in Equation (22). We therefore used Equation (24) to compute the
nodal velocities which are subsequently used to compute the particle velocity gradient L
p
. For
visualization, the particle data (positions and stresses) are written to a VTP le (PolyData) and
processed in Paraview using the lter Glyph.
8 Generalized Interpolation Material Point Method-GIMP
The original MPM with C
0
shape functions suffers from the so-called cell crossing instability.
In order to illustrate this phenomenon, consider a 1D MPM discretisation shown in Fig. 22 in
which all particles have the same stress (i.e., uniform stress state), and the same volume and a
uniform element size. Each element has two particles, Fig. 22a. The internal force at node 2 is
identically zero in the absence of body force. When a particle have just moved to a new cell,
Fig. 22b, the internal force at node 2 is non-zero resulting in non-equilibrium. One solution is
not to reset the grid at the end of the time step. However doing so can result in mesh distortion
which makes MPM resemble to FEM. The cell-crossing error can be mitigated using high order
B-splines basis functions or the generalized interpolation material point (GIMP) method.
These functions, which can be interpreted as averages of the basis function and its gradient
over the particle domain, are used for mapping and interpolating data between particles and grid
nodes as well as calculating internal and external forces.
Ip
I
(x
p
) =
S
Ip
=
1
V
p
_
(x x
p
)N
I
(x)d (47)
Ip
I
(x
p
) =
S
Ip
=
1
V
p
_
(x x
p
)N
I
(x)d (48)
where (x) is the particle characteristic function centered at the particle position and
denotes
the current support of this function; N
I
are the standard linear shape functions. Typically piece-
wise constant particle characteristic function is used
(x) =
_
1 if x
p
0 otherwise
(49)
More precisely in 1D the following particle characteristic function is usually employed
(x)
p
=
_
1 if |x| l
p
/2
0 otherwise
(50)
Here l
p
is the current particle size. The initial particle size is determined by dividing the cell
spacing L by the number of particles per cell. In order to have a closed form expression for
the weighting functions given in Equation (48) so as to avoid numerical integration of these
functions, it is assumed that
p
is always a rectangle which is aligned with the grid. In this
case, one can explicitly compute the weighting function as
32
8 GENERALIZED INTERPOLATION MATERIAL POINT METHOD-GIMP
Figure 21: Impact of two elastic bodies: simulation snapshots.
33
9 IMPLICIT TIME INTEGRATION
node
particle
(equilibriuum)
(a)
(b)
Figure 22: Cell crossing issue in MPM.
(x) =
_
_
1 (4x
2
+ l
2
p
)/(4hl
p
) if |x| < 0.5l
p
1 |x|/h if l
p
|x| h 0.5l
p
(h + l
p
/2 |x|)
2
/(2hl
p
) if h 0.5l
p
|x| < h + 0.5l
p
0 otherwise
(51)
of which an example is given in Fig. 23. Note that
I
= (x x
I
). As can be seen, if there are
many particles per element (l
p
is getting smaller), the GIMP functions resemble the standard
FE hat functions.
Since the GIMP functions depend on the particle size which in turn evolves in time, the
GIMP functions are particle specic and time-dependent. To simplify things,
p
is kept xed
and the resulting approach is referred to as uGIMP (unchanged GIMP). A more complicated
approach, known as cpGIMP (contiguous particle GIMP), is to update the particle domain using
the deformation gradient F, cf. Fig. 24. Still, the updated particle domain is a rectangle in 2D
and space cannot be tiled.
The implementation of uGIMP follows closely the MPM except two things: (i) the GIMP
functions
I
replace the FE hat functions N
I
and (ii) a larger connectivity array of the elements
i.e., the particles not only contribute to the nodes of the element they locate but also nodes of
neighboring elements.
(x)
p
= V
p
(x x
p
) (52)
9 Implicit time integration
The explicit code operates with a time step restricted by the usual Courant-Friedrichs-Lewy
(CFL) condition, and thus the code resolves all waves. Simulating many manufacturing and
34
9 IMPLICIT TIME INTEGRATION
node
0 0.5 1 1.5 2 2.5 3 3.5 4
0
0.2
0.4
0.6
0.8
1
0 0.5 1 1.5 2 2.5 3 3.5 4
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
0 0.5 1 1.5 2 2.5 3 3.5 4
0
0.2
0.4
0.6
0.8
1
Figure 23: One dimensional GIMP basis functions.
Figure 24: Tracking particle domain in GIPM: space cannot be tiled in a general multi-
dimension domain using rectilinear
p
.
35
10 FLUID-STRUCTURE INTERACTION
(a) MPM (b) GIMP
1 2
5
5
Figure 25: Larger element connectivity in GIMP (b) than in MPM (a). The connectivity of an
element in GIMP can be determined by getting rstly its neighboring elements (very fast for
structured grids used in MPM/GIMP) and then the nodes of these elements.
other problems with an implicit method can result in a considerable reduction in computational
cost if one is interested only in the low-frequency, bulk motion, and not in the elastic wave
motion.
10 Fluid-structure interaction
Action of the air on aeronautic structures (aeroelasticity, utter)
Effect of the wind on civil structures (bridges, suspended cables, skyscrapers)
Effect of water movement on dam or sloshing of a uid in a container
Fluid-membrane interaction (parachutes, vehicle airbags, blood vessels etc.)
The numerical procedures to solve the Fluid-structure interaction (FSI) problems may be
broadly classied into two approaches
Monolithic approach: the equations governing the uid ow and the structure deforma-
tion are solved in a single solver;
Partitioned approach: the uid and solid equations are solved separately using different
solvers.
The monolithic approach requires a code developed for this particular FSI problem whereas the
partitioned approach preserves software modularity because an existing ow solver and solid
solver are coupled. On the other hand, development of stable and accurate coupling algorithms
is required in partitioned approaches. Particularly, the uid-solid interface location is not known
a priori and usually changed in time; thus, the partitioned approach requires the tracking of the
new interface location and its related quantities, which can be cumbersome and error-prone.
36
REFERENCES REFERENCES
The partitioned approach is also referred to as coupling method as there are two models
which are coupled. Within the coupling method, one can differentiate between one-way and
two-way coupling. The coupling is one-way if the motion of a uid ow inuences a solid
structure but the reaction of a solid upon a uid is negligible. The other way around is also
possible. Moreover, the coupling can be loose or tight coupling.
f
= 2
2
3
tr( )I pI (53)
p = ( 1)e (54)
e is the specic internal energy and is the ratio of specic heats.
References
S.G. Bardenhagen. Energy Conservation Error in the Material Point Method for Solid Mechan-
ics. Journal of Computational Physics, 180(1):383403, 2002.
M Steffen, PC Wallstedt, and JE Guilkey. Examination and analysis of implementation choices
within the material point method (MPM). Computer Modeling in Engineering and Sciences,
31(2):107127, 2008.
D Sulsky and HL Schreyer. Axisymmetric form of the material point method with applications
to upsetting and Taylor impact problems. Computer Methods in Applied Mechanics and
Engineering, 0457825(96), 1996.
D Sulsky, Z Chen, and HL Schreyer. A particle method for history-dependent materials. Com-
puter Methods in Applied Mechanics and Engineering, 5, 1994.
D. Sulsky, S.J. Zhou, and H. L. Schreyer. Application of a particle-in-cell method to solid
mechanics. Computer Physics Communications, 87(1-2):236252, 1995.
D. Sulsky, H.L. Schreyer, K. Peterson, R. Kwok, and M. Coon. Using the material-point method
to model sea ice dynamics. Journal of Geophysical Research, 112(C2):C02S90, 2007.
AR York, D. Sulsky, and HL Schreyer. The material point method for simulation of thin
membranes. International Journal for Numerical Methods in Engineering, 1456(May 1998),
1999.
AR York, D. Sulsky, and HL Schreyer. Fluid