ABAQUS Implementation of The Phase Field Fracture
ABAQUS Implementation of The Phase Field Fracture
method
Emilio Martı́nez-Pañedaa,∗, Alireza Golahmarb
a
Department of Engineering, Cambridge University, CB2 1PZ Cambridge, UK
b
Department of Mechanical Engineering, Technical University of Denmark, DK-2800
Kgs. Lyngby, Denmark
Abstract
Documentation that accompanies the user element (UEL) subroutine for im-
plementing the phase field model for fracture in Abaqus. Several Fortran
files are provided, each associated with a particular choice of element or time
integration scheme, along with the corresponding input files (see Appendix
B). If using this code for research or industrial purposes, please cite:
Keywords:
ABAQUS, Phase field, Fracture, Crack growth, Finite element analysis
∗
Corresponding author. Tel: +44 1223 7 48525.
Email address: [email protected] (Emilio Martı́nez-Pañeda)
1
The crack itself is not a discrete phenomenon but initiates with micro-cracks and nano
voids.
2
crack (cross section: )
F F
x
(a)
(x)
1
x
(b)
(x)
1
x
(c) -l l
Figure 1: Sharp and diffusive crack modeling. (a) 1D bar cut by a crack with cross section
Γ. (b) Sharp crack at x = 0. (c) Diffusive crack at x = 0 modeled with length scale `.
φ(0) = 1
(3)
φ(x) → 0 as x → ±∞
Taking derivatives of (2) gives
0 sgn(x) − |x|
φ (x) = − e `
`
2 |x| (4)
00 sgn(x) 1 |x| 1
φ (x) = e− ` = 2 e− ` = 2 φ(x)
` ` `
3
implying that (2) is the solution of the following ordinary differential equation
for x 6= 0
00 1
φ (x) − φ(x) = 0 in Ω (5)
`2
subject to Dririchlet-type boundary conditions (3). Thus, the differential
equation (5) is the Euler-Lagrange equation of the variational problem
φ = arg inf I(φ) (6)
φ∈W
where υ represents a test function. Plugging (2) into the functional (7) yields
the identification Z ∞ 2|x|
I(φ) = e− ` dx = ` (9)
−∞
Now, considering the integration over the volume domain dV = Γdx,
|x|
I(φ = e− ` ) = `Γ (10)
Thus, the crack surface Γ is related to the crack length scale parameter `.
Consequently, the crack surface density is introduced by means of the regu-
larized crack functional as
Z Z
1 1 h 2 2 0 2
i 0
Γ` (φ) = I(φ) = φ + ` (φ ) dV = γ(φ, φ ) dV (11)
` Ω 2` Ω
0
where γ(φ, φ ) is the crack surface density function in 1D. Similarly, in higher
dimensions it can be expressed as
1 2 `
γ(φ, ∇φ) = φ + |∇φ|2 (12)
2` 2
4
1.2. Strain energy degradation
In order to couple the fracture phase field with the deformation problem, the
total potential energy functional of a solid body takes the following form
Ω Ω
φ
Ω Ω
(a) (b)
Figure 2: Sharp and diffusive crack topology. Adapted from [5]. (a) The sharp crack
surface Γ embedded into the solid Ω and (b) the diffusive crack surface Γ` (φ) is a functional
of the crack phase field φ.
5
Z
b
Ψ (u, φ) = ψ ((u), φ) dV (16)
Ω
that depends on the displacement u and the fracture phase field φ. The
energy storage function ψ describes the stored bulk energy of the solid per
unit volume
with E and ν being the Young’s modulus and Poisson’s ratio, respectively.
Assuming small strains, the standard strain tensor can be defined as
1 T
= ∇ u + ∇u (20)
2
where u is the vector of displacements and ∇u its gradient. The monoton-
ically decreasing function g(φ) describes the degradation of the stored bulk
energy due to damage evolution by,
0
g(0) = 1, g(1) = 0, g (1) = 0 (21)
The first two constraints are the limits for the unbroken and fully broken
state while the last constraint ensures that ∂ψ/∂φ converges to a final value
6
for the fully broken state φ = 1. Consequently, the parabolic degradation
function g(φ) is introduced as
7
where ΓD is a possible given sharp crack surface inside the solid Ω (see Fig.
3b). The crack phase field φ is considered to be driven by the displacement
field u of the solid. Consequently, no prescribed external loading is considered
corresponding to the crack phase field φ. The external mechanical loading is
then defined by the variation of the external work increment as
Z Z
δWext = b · δu dV + h · δu dA (27)
Ω ∂Ωh
where b is a prescribed body force field per unit volume while h is a bound-
ary traction field per unit area. Furthermore, the variation of the internal
potential energy increment is given by
∂Ψ ∂Ψ
∂Wint = ∂Ψ(φ, u) = : δ + δφ (28)
∂ ∂φ
which for the case of (24) yields
Z
1
∂Wint = σδ − 2(1 − φ)δφψ0 () + Gc φδφ + `∇φ · ∇δφ dV (29)
Ω `
where the Cauchy stresses,
∂Ψ
= g(φ)σ0 = (1 − φ)2 + k σ0
σ= (30)
∂
Ω Ω
∈Ω
Ωh
∈Ω
b
φ
Ωu
(a) (b)
8
are given in terms of the stress tensor of the undamaged solid
σ0 = C0 (31)
Z
1
σδ − 2(1 − φ)δφψ0 () + Gc φδφ + `∇φ · ∇δφ dV
Ω `
Z Z (33)
− b · δu dV + h · δu dA = 0
Ω ∂Ωh
for all admissible δφ and δu of the phase field and the displacement field,
which satisfy the homogeneous form of the Dirichlet-type boundary condi-
tions. Application of the Gauss theorem gives
Z
1
− [Div [σ] + b] · δu − 2(1 − φ)ψ0 () − Gc φ − Div [`∇φ] δφ dV
Ω `
Z Z
+ [σ · n − h] · δu dA + [Gc `∇φ · n] δφ dA = 0
∂Ωh ∂Ω
(34)
where n denotes the outward unit vector normal to the surface ∂Ω. Thus, this
leads to the strong form of the governing balance equations of the coupled
problem
Div [σ] + b = 0
1
(35)
Gc φ − `∆φ − 2(1 − φ)ψ0 () = 0
`
9
σ·n=h on ∂Ωh and ∇φ · n = 0 on ∂Ω (36)
(35)1 is the macroscopic equilibrium condition while (35)2 determines the
evolution of the phase field, where ∆φ refers to the Laplacian of the phase
field.
Z Z
{σδ − b · δu} dV + h · δu dA = 0
Ω ∂Ωh
Z (37)
1
−2(1 − φ)δφψ0 () + Gc φδφ + `∇φ · ∇δφ dV = 0
Ω `
Here, Ni denotes the shape function associated with node i, m is the total
number of nodes per element, and ui = {ux , uy }T and φi are the displacement
and phase field values at node i. Consequently, the corresponding derivatives
can be discretized as
m
X m
X
= Bui ui and ∇φ = Bφi φi (40)
i=1 i=1
10
where = {xx , yy , xy }T . The strain-displacement matrices are expressed
as
Ni,x 0 " #
φ Ni,x
Bui = 0 Ni,y and Bi = (41)
Ni,y
Ni,y Ni,x
where Ni,x and Ni,x are the derivatives of the corresponding shape function
with respect to x and y, respectively. Similarly, the virtual quantities δu and
δφ and their derivatives can be discretized as
m
X m
X
δu = Nui δui and δφ = Ni δφi
i=1 i=1
(42)
m
X m
X
δ = Bδu
i ui and ∇δφ = Bφi δφi
i=1 i=1
Using the above expressions and due to the fact that (37) must hold for
arbitrary values of δu and δφ, the discrete equation corresponding to the
equilibrium condition can be expressed as the following residual with respect
to the displacement field
Z Z Z
u T u T
u 2
(Nui )T h dA (43)
ri = (1 − φ) + k (Bi ) σ0 dV − (Ni ) b dV −
Ω Ω ∂Ωh
Similarly, the residual with respect to the evolution of the crack phase field
can be expressed as
Z
φ 1 φ T
ri = −2(1 − φ)Ni ψ0 () + Gc Ni φ + `(Bi ) ∇φ dV (44)
Ω `
In order to obtain the solutions for which ru = 0 and rφ = 0 and due to the
fact that the corresponding residuals are nonlinear, an incremental-iterative
scheme using Newton-Raphson method is employed
( ) ( ) " #−1 ( )
u u Kuu Kuφ ru
= − (45)
φ φ Kφu Kφφ rφ
t+∆t t t t
11
in which the tangent stiffness matrices are calculated as
∂rui
Z
uu
(1 − φ)2 + k (Bui )T C0 Buj dV
Kij = =
∂uj Ω
∂rui
Z
uφ
Kij = = −2 (1 − φ) (Bui )T σ0 Nj dV
∂φj Ω
(46)
∂rφ
Z
Kφu
ij = i = −2 (1 − φ) Ni σ0 T Buj dV
∂uj Ω
∂rφ
Z
Gc φ T
Kφφ
ij = i = 2ψ0 () + φ
Ni Nj + Gc `(Bi ) (Bj ) dV
∂φj Ω `
The displacement field u and the phase field φ in the coupled system (35) can
now be solved simultaneously as fully coupled monolithic fields. It should be
noted that above system of equations does not guarantee the irreversibility
of the evolution of the crack phase field, i.e.
φt+∆t ≥ φt (47)
12
in which H is introduced as so-called history variable field
(
ψ0 () if ψ0 () > Ht
H= (49)
Ht otherwise
where Ht is the previously calculated energy obtained in history in terms
of the displacement field ut at time increment t. The calculation of the
current history field is the main idea for the algorithmic split of the coupled
equations. Being in fact a variable field which couples the phase field and
the displacement field in the staggered scheme. Furthermore, it enforces
the irreversibility of the evolution of the crack phase-filed, i.e. the growth
constraint (47). Consequently, the history field satisfies the Kuhn-Tucker
conditions [4],
ψ0 − H ≤ 0, Ḣ ≥ 0, Ḣ(ψ0 − H) = 0 (50)
for both loading and unloading case. Thus, no penalty term is needed in
contrast to the monolithic approach. In the same manner as outlined in
section 2.1, the residual corresponding to the evolution of the crack phase
field is then as follows
Z
φ 1 φ T
ri = −2(1 − φ)Ni H + Gc Ni φ + `(Bi ) ∇φ dV (51)
Ω `
Similarly, the residual corresponding to the displacement field is then as
follows
Z Z Z
u T u T
u 2
(Nui )T h dA (52)
ri = (1 − φ) + k (Bi ) σ0 dV − (Ni ) b dV −
Ω Ω ∂Ωh
13
The new formulation results in above-decoupled system of equations for the
sequential update of the phase field and the displacement field. Then, the
staggered scheme for Phase-field model is outlined as follows
1. The displacement, phase and history fields ut , φt and Ht are known at
the previous time increment t. Then, the prescribed load vectors b and
h are updated at the current time increment t + ∆t
2. The current phase field φt+∆t and the current displacement field ut+∆t
are now computed using the corresponding linear algebraic Euler equa-
tions
Kφφ
t φt+∆t = −rt
φ
(55)
Kuu u
t ut+∆t = −rt (56)
where Kφφ
t and rφt are built from Ht , and Kuu
t and rut are built from
φt .
The use of a Newton-Raphson backward Euler scheme implies that the
numerical solution is unconditionally stable, i.e., achieving convergence im-
plies attaining the equilibrium solution. Hence, the solution is independent of
the time increment, although small load increments may be needed to achieve
convergence if there is a sudden change in the solution (as in, e.g., unstable
crack propagation). In the staggered scheme adopted here, the phase and the
displacement fields are solved - within a Backward Euler approach - indepen-
dently. This is unlike the monolithic case, where convergence is fulfilled for
both coupled fields at the same time, retaining the unconditional stability.
The price to pay in the monolithic approach is the need to include a penalty
term (introducing additional parameters into the model) and difficulties to
achieve convergence in the very computationally demanding problem of un-
stable crack propagation. By solving for the phase and the displacement
fields independently, the staggered scheme can track the equilibrium solution
in a semi-implicit manner, leading to a more robust numerical implementa-
tion. One should, however, perform a time increment sensitivity study.
The specific staggered scheme outlined has proven to be the more robust
one and is therefore chosen for our implementation. Files are provided with
other two options: (1) a semi-implicit approach where Kuu t and rut are built
from ut + ∆t (denoted file B), and (2) an implicit, weakly coupled, approach
where ut + ∆t and Ht+∆t are used to build the linearized system through
14
an extrapolation procedure (denoted file A) - differences and similarities are
discussed at large in Appendix A. Msekh et al. [15] implemented the phase
field fracture method in Abaqus by means of an implicit approach. A more
robust approach is the one presented by Molnar and Gravouil [16]; how-
ever, they make use of a cumbersome multi-layer system that hinders the
implementation.
The use of user element subroutines has the drawback that integration
point variables cannot be visualized in Abaqus/Viewer. This limitation is
intrinsic to the fact that the only information that Abaqus requests from the
UEL subroutine are the stiffness matrix and the right-hand side nodal force
vector - the magnitude of the stresses and the strains, as well as the choice of
shape functions, is information that is not available as output. To overcome
this limitation we here make use of an auxiliary dummy mesh consisting of
15
standard Abaqus elements that resemble the user defined element in terms of
number of nodes and integration points (i.e., CPE4 or CPE8R). The material
response at each integration point in the auxiliary mesh is defined using
a user material subroutine (UMAT), which enables the user to define the
constitutive matrix and the stresses from the strain values. In this auxiliary
mesh, the stress components and the constitutive matrix are made equal to
zero (i.e., they have no influence in the solution of the global system). The
data from our UEL that we want to observe in Abaqus/Viewer is stored in
a Fortran module, which allows transferring to the UMAT subroutine. In
the UMAT the information is passed to the built-in array STATEV for each
corresponding element and integration point. If SDV variables are requested
as Field Output we would be able to visualize the results. Table 2 shows the
equivalence between model variables and SDVs.
16
time increment. This is due to the semi-implicit staggered scheme
adopted (see discussion in Section 2.2).
• The mesh has to be very refined in the expected crack propagation
area. As discussed in our publication [12], the characteristic element
size has to be at least 5 times smaller than ` to resolve the fracture
process zone. If the crack path is unknown a common strategy is to
start with a coarser uniform mesh and refine in subsequent calculations.
Use as element type CPE4 (or CPE8R if you run the analysis with the
quadratic element file).
Once the model has been developed, we create a job and write the input
file (Right click on the Job name and click “Write Input”). A few modifica-
tions have to be done to the input file to define the user element, the use of a
code editor like Notepad++ is recommended. First, we create the dummy vi-
sualization mesh. For this purpose we use the Matlab script VirtualMesh.m,
which is part of the Abaqus2Matlab package [17]. Running VirtualMesh.m
on the same folder as the input file (Job-1.inp) will create a new file (Vi-
sualMesh.inp) with the element connectivity of the visualization mesh.
17
*UEL PROPERTY, ELSET=SOLID
210000., 0.3, 0.025, 2.7, 1e-07
*Element, type=CPE4, elset=Visualization
and immediately afterwards the visualization connectivity list (i.e., the con-
tent of the file VisualMesh.inp created by the Matlab script). Here, we have
defined the user element properties following Table 3. Throughout our model
we employ SI (mm) units.
And finally, note that, since we have defined our dummy connectivity
list within the element set “Visualization”, we need to modify the Section
definition,
Additionally, one should note that a Fortran module has been defined in
the first lines of the subroutine for visualization purposes. One has to be
sure that the first dimension of the variable UserVar is larger than the total
number of elements.
18
release rate Gc = 2.7 MPa mm. The load is applied by prescribing a constant
total displacement of u = 0.01 mm.
Figure 4: Notched square plate subjected to tension test, geometry and boundary condi-
tions.
Linux users may have to change the extension of the subroutine, converting
the PhaseField.for file to PhaseField.f. The Python script ResultsQ4.py
can be used to obtain relevant results. Representative results are shown in
Figs. 5 and 6. Specifically, Fig. 5 shows the force versus displacement
curve obtained. As observed in the figure, damage brings in an important
drop in the load, with the crack propagating in an unstable manner across
the specimen. Computations persist beyond the point of almost complete
breakage. The resulting fracture patterns at different steps are illustrated in
Fig. 6. Blue and red colors correspond to the completely intact and the fully
broken state of the material, respectively. The response is not symmetric, as
the lower bound is fully clamped, and the crack is rather diffuse, as expected
given the choice of `. A quantitative agreement with the results of Miehe
19
et al. [5] can be adopted by choosing the same value of ` and refining the
mesh (see details in our paper [12]). A time sensitivity analysis should also
be conducted (a relatively large time increment is chosen to enable a fast
demonstration).
700
600
500
Force (N)
400
300
200
100
0
0 0.002 0.004 0.006 0.008 0.01
Displacement (mm)
Figure 5: Load-deflection curve obtained in the simple benchmark of a cracked square
plate subjected to tension.
20
Figure 6: Notched square plate subjected to tension test. Fracture pattern at a displace-
ment of (a) u = 0.06 mm, (b) u = 0.065 mm, (c) u = 0.07 mm and (d) u = 0.075
mm.
In addition to the main subroutine and the input file for this simple
boundary value problem, subroutines and input files are provided for other
integration schemes and type of elements (see Appendix B).
3. Conclusions
We have provided a robust implementation of the phase field fracture
method for the commercial finite element package Abaqus. As discrete meth-
ods (see, e.g., [18]), the phase field fracture method requires a refined mesh
along the potential crack propagation path to resolve the fracture process
zone. However, by decoupling the damage and displacement variables the
method is very robust and it is able to model unstable crack propagation
without the need of control algorithms [19, 20]. Also, as shown in our journal
publication [12], the phase field method is well-suited to deal with arbitrary
crack propagation paths. In summary, the method holds promise and we
hope that the present implementation will facilitate research in this field.
4. Acknowledgements
E. Martı́nez-Pañeda acknowledges financial support from the People Pro-
gramme (Marie Curie Actions) of the European Union’s Seventh Framework
Programme (FP7/2007-2013) under REA grant agreement n◦ 609405 (CO-
FUNDPostdocDTU).
21
Appendix A. Assessment of staggered schemes in Abaqus
Let us consider the simple case of a displacement-based finite element
scheme without any additional fields. We aim at computing the displacement
field u of the following linearised problem,
Ku = f (A.1)
K∆u = ∆f (A.2)
22
problem with the recently obtained φt+∆t . One can exactly reproduce this
scheme in Abaqus using sub-increments, solving for ∆φ and ∆u in alternate
sub-increments. Another approach, taken here, is to solve at the same time
for both ∆φ and ∆u. One can choose to build Kφφ and rφ from Ht , as done
by Miehe et al. [5], or follow a more implicit procedure where we employ
Ht+∆t , as computed from the proposed solution for the current increment
ut+∆t . This latter implicit approach may consider Ht instead of Ht+∆t , as
dictated by the Kuhn-Tucker conditions. We found that convergence im-
proves if Ht is updated during the non-converged increments as well. While
this sceme is unconditionally stable, we struggle to achieve convergence in
many of our tests; files are nevertheless provided, we refer to it as approach
A. Another option, referred to as approach B, is to follow Miehe et al. [5],
computing Kφφ and rφ from Ht , and build Kuu and ru from the proposed
φt+∆t (1 field, semi-implicit). A third approach (C), more robust, consists in
computing Kφφ and rφ from Ht , and build Kuu and ru from the converged
φt (2 fields, semi-implicit).
Two additional files are provided, although we never found the need to
use them for the computations conducted in [12]. However, they may be
useful for studies that entail strong convergence problems. One, denoted
as approach D, is the same as the 2 fields semi-implicit approach (C) but
we update Ht even if the increment does not converge. This has proven
to help in some of our convergence tests. The other one is a fully forward
Euler approach with equilibrium correction; this is referred to as approach E.
While it seems to work very well, one should be very careful to ensure that
the increment is sufficiently small such that we are not going away from the
equilibrium solution. In our tests we found that the explicit version works
best with approach B - semi-implicit, one field.
Job-1.inp - Input file for the benchmark problem of a cracked square sub-
jected to tension.
23
ResultsQ4.py - Python script to automatically extract the load displace-
ment curve and show contours.
ExtraFiles folder
Job-1a.inp - Input file for the implicit case (A), to be used with Phase-
FieldQ4a.for.
Job-1b.inp - Input file for the semi-implicit (1 field) case (B), to be used
with PhaseFieldQ4b.for.
Job-1d.inp - Input file for the semi-implicit (2 fields) case storing non-
converged Ht (D), to be used with PhaseFieldQ4d.for.
Job-1e.inp - Input file for the forward Euler case with residual correc-
tion (E), to be used with PhaseFieldQ4b.for.
Q8 folder
24
References
[1] G. Francfort, J.-J. Marigo, Revisiting brittle fracture as an energy mini-
mization problem, Journal of the Mechanics and Physics of Solids 46 (8)
(1998) 1319–1342.
25
[10] J. Reinoso, M. Paggi, C. Linder, Phase field modeling of brittle fracture
for enhanced assumed strain shells at large deformations: formulation
and finite element implementation, Computational Mechanics 59 (6)
(2017) 981–1001.
26
[20] E. Martı́nez-Pañeda, S. del Busto, C. Betegón, Non-local plasticity ef-
fects on notch fracture mechanics, Theoretical and Applied Fracture
Mechanics 92 (2017) 276–287.
27