8.4 Finite element
method for large deformations: hyperelastic materials
The finite element method can be used
to solve problems involving large shape changes. In this section, we show how to do this, using
a solid made from a hyperelastic material as an example. But we have to start
with a word of caution: the procedure described here will perform very poorly
in most practical applications because of ‘volumetric locking,’ which causes standard finite elements to have
a spuriously high stiffness. A cure
for this problem is described in Section 8.6.2.
8.4.1 Summary of
governing equations
To keep things as simple as possible
we will devise a method to model a hyperelastic solid with a Neo-Hookean
constitutive law as discussed in Section 3.5.
A generic hyperelasticity problem is
shown in the figure. We are given:
1. The shape of the solid in its
unloaded condition (this will be taken as the stress free
reference configuration)
2. A body force distribution acting on the solid (Note that in this section
we return to using b to denote force per unit mass)
3. Boundary conditions, specifying
displacements on a portion or tractions on a portion of the boundary of the deformed solid (note that tractions are
specified as force per unit deformed area but we could also specify the tractions per unit undeformed area acting on if this is more convenient);
4. The material constants for the Neo-Hookean constitutive law described
in Section 3.4.5;
5. The mass density of the solid in its
reference configuration
We then wish to calculate
displacements , deformation gradient tensor and Cauchy stresses satisfying the governing equations and
boundary conditions
with Cauchy stress related to left Cauchy-Green tensor
through the neo-Hookean constitutive law
8.4.2 Governing equations in terms of
the principle of virtual work
As always the stress equilibrium
equation is replaced by the equivalent principle of virtual work which now has to be in a form appropriate for
finite deformations. The virtual work
equation is given in terms of various stress and deformation measures in
Section 2.4.5. For our purposes, a
slightly modified form of the version in terms of Kirchhoff stress is the most
convenient. This states that
for all virtual velocity fields and virtual velocity gradients that satisfy on .
Here is the Kirchhoff stress. Some notes on this equation
1. The volume integrals in the virtual
work equation are taken over the reference configuration this is convenient, because in a real problem
we can take the given initial shape of the solid as reference, whereas the
deformed configuration is unknown.
2. The area integral is taken over the
deformed configuration, but can be mapped back to the reference configuration
by computing the inverse surface Jacobian .
One way (although not the best way in practice) to calculate would be through the relationship
where m is the normal to the
surface in the reference configuration, and n is the normal to the
surface in the deformed configuration.
Taking the magnitude of both sides gives
Then the virtual work equation
becomes
8.4.3 Finite element equations
The finite element solution follows
almost exactly the same procedure as before.
We first discretize the displacement field, by choosing to calculate the
displacement field at a set of n nodes, as shown in the figure. We will denote the coordinates of these
special points in the reference configuration by , where the superscript a
ranges from 1 to n. The unknown
displacement vector at each nodal point will be denoted by .
1. The displacement field and virtual
velocity field at an arbitrary point within the solid is again specified by
interpolating between nodal values in some convenient way.
Here, x denotes the coordinates of an
arbitrary point in the reference configuration.
Note that the interpolation gives virtual velocity as a function of
position x in the reference configuration, not y in the deformed configuration, so we have to be careful when
computing the velocity gradient.
2. Observe that we can compute the
deformation corresponding to a given displacement field as
3. The derivatives of shape functions
with respect to reference coordinates are computed exactly as for small strain
problems. Let denote the shape functions in terms of local
element coordinates .
Then interpolate position within the element as
Define the Jacobian matrix
then
4. Given the deformation gradients, we
can compute any other deformation measure we need we don’t need to spell out the details for
now. By substituting the appropriate
deformation measure we could calculate the Kirchhoff stress. Note that the Kirchhoff stress depends on
displacements through the deformation gradient we will express this functional relationship
as
5. Note also that the virtual velocity
gradient can be calculated as
6. We can now substitute everything back
into the virtual work equation
7. Since this must hold for all we must ensure that
This is a set of n nonlinear
equations in n unknowns, very similar to those we obtained for
hypoelastic problems except that now we have to deal with all the
additional geometric terms associated with finite deformations. The procedure for solving these equations is
outlined in the following sections.
8.4.4 Solution using Consistent
Newton Raphson Iteration
As before, we can solve the nonlinear virtual work equation
using Newton-Raphson iteration, as follows
1. Start with some initial guess for - say (we can start with zero displacements, or for
incremental solutions we can use the solution at the end of the preceding
increment). This solution will not
satisfy the governing equation (unless you are very lucky)
2. Next, attempt to correct this guess
to bring it closer to the proper solution by setting .
Ideally, we would want the correction to satisfy
where denotes the deformation gradient for the
updated solution. This equation cannot be solved for in its present form.
3. To make progress, linearize in , just as for the hypoelastic problem
discussed in Section 8.3. The
linearization (derived in detail below) yields a system of linear equations
which can be solved for .
4. If you prefer, you can use a slightly
simpler set of formulas for the stiffness matrix and force vector
where we have defined
Note that the formula for
stiffness is very similar to the result for small strain problems, except for
two additional terms. These additional
terms are called the `geometric stiffness’ because they arise as a result of
accounting properly for finite geometry changes. In addition, note that while the first
integral in the stiffness is symmetric, the second and third are not. There is therefore some additional
computational cost associated with finite strain problems, since it is
necessary to store and solve an unsymmetric system of equations.
5. After solving the system of equations
in (3) for , check for convergence (you can use
the magnitude of or the magnitude of the force vector as a measure of error). If the solution has not yet converged, go
back to (3) and correct the solution again.
Linearizing the virtual
work equation: This is a tedious, but straightforward
calculation. Start with
Note that
We also have that
In addition,
Substituting these expansions in the virtual work equation,
and retaining linear terms in dw leads to the results given in step (3)
above.
8.4.5 Tangent stiffness for the neo-Hookean material
The tangent stiffness is defined as
The Neo-Hookean solid has a stress-strain relation given by
where . Evaluating
the derivatives is a tedious but straightforward exercise in index notation.
The following identity is helpful
giving
8.4.6 Matrix form for element stiffness and residual force
Calculating the stiffness and
residual force for large deformation problems is somewhat more involved than
the equivalent small-strain analysis. We
will run through the procedure using a 3D element as an example; the
corresponding 2D case can be deduced from the forms given in Section 8.1.13.
The calculation begins with the same steps: loop over the integration points,
and
1. Assemble matrices of the coordinates
and displacements of nodes on the element and shape functions derivatives (at
the current integration point) are stored as matrices
2. Calculate the Jacobian matrix, its
determinant and the referential shape function derivatives
3. Calculate the deformation gradient
and the left Cauchy-Green deformation tensor
4. Calculate the spatial shape function
derivatives
5. Calculate the stress (stored as both
a matrix and a vector) and material tangent matrix
where
6. Assemble a matrix used in calculating
the material contribution to the stiffness
7. Assemble matrices A and that map the element displacement vector onto
the infinitesimal strain and the full 9 components of displacement gradient,
respectively (the symbol B was used for the equivalent small-strain
version of these matrices in Section 8.1.13, but there is an unfortunate
conflict between the standard notation used for the constitutive equations for
hyperelastic materials and that used for the FEA matrices)


8.
Assemble two 3nx3n (where n is the number of nodes on the element) matrices with the
repeating pattern

where and and n is
the number of nodes on the element.
9.
Add the contribution from the current integration
point to the element residual force vector and stiffness matrix
where denotes the elemental (or Hadamard) product.
Health Warning: The
procedure outlined here will not give good results for most hyperelastic
materials of practical interest. This is because materials such as rubbers and
polymers have a very large ratio of bulk modulus to tangent shear modulus,
which causes standard fully integrated elements to ‘lock,’ with a spuriously high stiffness. Several methods for correcting this problem
are discussed in Section 8.6.
8.4.7 Evaluating the boundary traction integrals
Finally, we need to address how to calculate the factor and its derivative in the surface integrals.
There are two common cases we need to
deal with. In some problems, we find it
convenient to specify the nominal traction (force per unit undeformed
area) acting on part of a solid. For
example, if you were to model the behavior of a bar under uniaxial tension, you
might know the force you are going to apply to the bar. Since you know the cross sectional area of
the undeformed bar, you could easily calculate nominal traction. However, in this case you would have no idea
what the true traction acting on the bar is to calculate that, you have to know the cross
sectional area of the deformed bar.
In other problems you need to be able
to impose a certain force per unit deformed area i.e. to specify the true traction
distribution. This would be the case if
you wanted to model fluid or aerodynamic forces acting on part of the solid.
We will deal with both cases. The first case is easy note that the nominal and true traction are
related by .
The expression for the external forcing can therefore be written
and since this expression does not involve the last term in the expression for stiffness
vanishes.
The second case is a pain. It is simplest to treat the surface integrals
directly. Consider a general 3D element
face, with nodal coordinates (in the deformed configuration) for a=1..n. Introduce a convenient
interpolation scheme to define the shape of the element face in terms of its
nodal coordinates
where with denote a suitable set of local coordinates
that will specify position within an element face, and are a set of interpolation functions.
We now evaluate the surface integral as
where must be computed by finding the two natural
basis vectors
and then using . A
straightforward exercise shows that
With this in hand, we can calculate
where
so that the last term in the stiffness can be evaluated as
8.4.8 Example hyperelastic finite element code
It is evidently quite straightforward
to extend a nonlinear small-strain finite element code to account for finite
strains. The only changes necessary are:
(1) The general finite deformation
measures must be calculated;
(2) The material tangent stiffness is now
a function of strain;
(3) Two additional geometric terms must
be added to the stiffness matrix one of these is a volume integral over all the
elements, the second is an integral over the boundary;
(4) We have to deal with an unsymmetric
stiffness matrix.
An example MATLAB code is provided in
the files FEM_2Dor3D_hyperelastic_static.m. For simplicity, the example is
coded to apply a fixed nominal traction to the boundary (the geometric
terms in the surface integral outlined above are not included).
An input file Hyperelastic_quad4.txt
is also provided: the file sets up a simple plane strain 1 element problem, and
plots the traction-displacement relation for the element.
HEALTH WARNING:
This demonstration code uses fully integrated elements and will in general
perform very poorly because of volumetric locking. The demonstration problem does not lock,
because the strain field in the solid is uniform. For details of locking and how to avoid it
see section 8.6.