Chapter 8

Theory and Implementation of the Finite Element Method

##### 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.

##### 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.4.

Given:

1.      The shape of the solid in its unloaded condition ${R}_{0}$ (this will be taken as the stress free reference configuration)

2.      A body force distribution $b$ 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 ${u}^{*}\left(x\right)$ on a portion ${\partial }_{1}R$ or tractions ${t}^{*}\left(x\right)$ on a portion ${\partial }_{2}R$ 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 ${t}^{0}$ per unit undeformed area acting on ${\partial }_{2}{R}_{0}$ if this is more convenient);

4.      The material constants ${\mu }_{1},{K}_{1}$ for the Neo-Hookean constitutive law described in Section 3.4.5;

5.      The mass density of the solid in its reference configuration ${\rho }_{0}$

Calculate displacements ${u}_{i}$, deformation gradient tensor ${F}_{ij}$ and Cauchy stresses ${\sigma }_{ij}$ satisfying the governing equations and boundary conditions

$\begin{array}{l}{y}_{i}={x}_{i}+{u}_{i}\left({x}_{k}\right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{F}_{ij}={\delta }_{ij}+\frac{\partial {u}_{i}}{\partial {x}_{j}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}J=\mathrm{det}\left(F\right),\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{B}_{ij}={F}_{ik}{F}_{jk}\\ \frac{\partial {\sigma }_{ij}}{\partial {y}_{i}}+\rho {b}_{j}=0\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{u}_{i}={u}_{i}^{*}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{on}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\partial }_{1}R\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\sigma }_{ij}{n}_{i}={t}_{j}^{*}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{on}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\partial }_{2}R\end{array}$

with Cauchy stress related to left Cauchy-Green tensor through the neo-Hookean constitutive law

${\sigma }_{ij}=\frac{{\mu }_{1}}{{J}^{5/3}}\left({B}_{ij}-\frac{1}{3}{B}_{kk}{\delta }_{ij}\right)+{K}_{1}\left(J-1\right){\delta }_{ij}$

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

$\underset{{R}_{0}}{\int }{\tau }_{ij}\delta {L}_{ij}d{V}_{0}-\underset{{R}_{0}}{\int }{\rho }_{0}{b}_{i}\delta {v}_{i}d{V}_{0}-\underset{\partial R}{\int }{t}_{i}^{*}\delta {v}_{i}dA=0$

for all virtual velocity fields $\delta {v}_{i}\left({x}_{i}\right)$ and virtual velocity gradients $\delta {L}_{ij}=\partial {v}_{i}/\partial {y}_{j}$ that satisfy $\delta {v}_{i}=0$ on ${\partial }_{1}R$.  Here ${\tau }_{ij}=J{\sigma }_{ij}$ 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 $\eta =dA/d{A}_{0}$.  One way (although not the best way in practice) to calculate $\eta$ would be through the relationship

$ndA=Jm\cdot {F}^{-1}d{A}_{0}$

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

$\eta =J\sqrt{{m}_{i}{F}_{ik}{}^{-1}{F}_{jk}{}^{-1}{m}_{j}}$

Then the virtual work equation becomes

$\underset{{V}_{0}}{\int }{\tau }_{ij}\delta {L}_{ij}d{V}_{0}-\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}\delta {v}_{i}d{V}_{0}-\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}\delta {v}_{i}\eta d{A}_{0}=0$

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.  We will denote the coordinates of these special points in the reference configuration by ${x}_{i}^{a}$, where the superscript a ranges from 1 to n.  The unknown displacement vector at each nodal point will be denoted by ${u}_{i}^{a}$.

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.

${u}_{i}\left(x\right)=\sum _{a=1}^{n}{N}^{a}\left(x\right){u}_{i}^{a}$           $\delta {v}_{i}\left(x\right)=\sum _{a=1}^{n}{N}^{a}\left(x\right)\delta {v}_{i}^{a}$

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

${F}_{ij}={\delta }_{ij}+\frac{\partial {u}_{i}}{\partial {x}_{j}}={\delta }_{ij}+\sum _{a=1}^{n}\frac{\partial {N}^{a}}{\partial {x}_{j}}{u}_{i}^{a}$

3.      The derivatives of shape functions with respect to reference coordinates are computed exactly as for small strain problems.  Let ${N}^{a}\left({\xi }_{i}\right)$ denote the shape functions in terms of local element coordinates ${\xi }_{i}$.  Then interpolate position within the element as

${x}_{i}=\sum _{a=1}^{{N}_{e}}{N}^{a}\left({\xi }_{j}\right){x}_{i}^{a}$

Define the Jacobian matrix

${\eta }_{ij}=\frac{\partial {x}_{i}}{\partial {\xi }_{j}}=\sum _{a=1}^{{N}_{e}}\frac{\partial {N}^{a}}{\partial {\xi }_{j}}{x}_{i}^{a}$

then

$\frac{\partial {N}^{a}}{\partial {x}_{j}}=\frac{\partial {N}^{a}}{\partial {\xi }_{k}}{\eta }_{kj}^{-1}$

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 ${\tau }_{ij}\left[{F}_{kl}\left({u}_{i}^{a}\right)\right]$

5.      Note also that the virtual velocity gradient can be calculated as

$\delta {L}_{ij}=\frac{\partial \delta {v}_{i}}{\partial {y}_{j}}=\frac{\partial \delta {v}_{i}}{\partial {x}_{k}}\frac{\partial {x}_{k}}{\partial {y}_{j}}=\frac{\partial \delta {v}_{i}}{\partial {x}_{k}}{F}_{kj}^{-1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}=\sum _{a=1}^{n}\frac{\partial {N}^{a}}{\partial {x}_{k}}{F}_{kj}^{-1}\delta {v}_{i}^{a}$

6.      We can now substitute everything back into the virtual work equation

$\left\{\underset{{R}_{0}}{\int }{\tau }_{ij}\left[{F}_{pq}\left({u}_{k}^{b}\right)\right]\frac{\partial {N}^{a}}{\partial {x}_{m}}{F}_{mj}^{-1}d{V}_{0}-\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}{N}^{a}d{V}_{0}-\underset{{\partial }_{2}{R}_{0}}{\int }{t}_{i}^{*}{N}^{a}\eta d{A}_{0}\right\}\delta {v}_{i}^{a}=0$

7.      Since this must hold for all $\delta {v}_{i}^{a}$ 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 ${u}_{i}^{a}$ - say ${w}_{i}^{a}$ (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 ${w}_{i}^{a}\to {w}_{i}^{a}+d{w}_{i}^{a}$.  Ideally, we would want the correction to satisfy

$\underset{{V}_{0}}{\int }{\tau }_{ij}\left[{F}_{pq}\left({w}_{k}^{b}+d{w}_{k}^{b}\right)\right]\frac{\partial {N}^{a}}{\partial {x}_{m}}{\left(F+dF\right)}_{mj}^{-1}d{V}_{0}-\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}{N}^{a}d{V}_{0}-\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}{N}^{a}\left(\eta +d\eta \right)d{A}_{0}=0$

where $F+dF$ denotes the deformation gradient for the updated solution. This equation cannot be solved for $d{w}_{k}^{b}$ in its present form.

3.      To make progress, linearize in $d{w}_{k}^{b}$, just as for the hypoelastic problem discussed in the preceding section.  The linearization (derived in detail below) yields a system of linear equations

${K}_{aibk}=\underset{{V}_{0}}{\int }\frac{\partial {\tau }_{ij}}{\partial {F}_{kl}}\frac{\partial {N}^{b}}{\partial {x}_{l}}\frac{\partial {N}^{a}}{\partial {x}_{m}}{F}_{mj}^{-1}d{V}_{0}-\underset{{V}_{0}}{\int }{\tau }_{ij}\frac{\partial {N}^{a}}{\partial {x}_{m}}{F}_{mk}^{-1}\frac{\partial {N}^{b}}{\partial {x}_{p}}{F}_{pj}^{-1}d{V}_{0}-\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}{N}^{a}\frac{\partial \eta }{\partial {w}_{k}^{b}}d{A}_{0}$

${R}_{i}^{a}=\underset{{V}_{0}}{\int }{\tau }_{ij}\frac{\partial {N}^{a}}{\partial {x}_{m}}{F}_{mj}^{-1}d{V}_{0}$ ${F}_{i}^{a}=\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}{N}^{a}d{V}_{0}+\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}{N}^{a}\eta d{A}_{0}=0$

which can be solved for $d{w}_{k}^{b}$.

4.      If you prefer, you can use a slightly simpler set of formulas for the stiffness matrix and force vector

${K}_{aibk}=\underset{{V}_{0}}{\int }{C}^{e}{}_{ijkl}\frac{\partial {N}^{a}}{\partial {y}_{j}}\frac{\partial {N}^{b}}{\partial {y}_{l}}d{V}_{0}-\underset{{V}_{0}}{\int }{\tau }_{ij}\frac{\partial {N}^{a}}{\partial {y}_{k}}\frac{\partial {N}^{b}}{\partial {y}_{j}}d{V}_{0}-\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}{N}^{a}\frac{\partial \eta }{\partial {w}_{k}^{b}}d{A}_{0}$   ${R}_{i}^{a}=\underset{{V}_{0}}{\int }{\tau }_{ij}\frac{\partial {N}^{a}}{\partial {y}_{j}}d{V}_{0}$

where we have defined

${C}^{e}{}_{ijkl}=\frac{\partial {\tau }_{ij}}{\partial {F}_{km}}{F}_{lm}=J{\sigma }_{ij}{\delta }_{kl}+J\frac{\partial {\sigma }_{ij}}{\partial {F}_{km}}{F}_{lm}$             $\frac{\partial {N}^{a}}{\partial {y}_{i}}=\frac{\partial {N}^{a}}{\partial {x}_{j}}{F}_{ji}^{-1}$

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 $d{w}_{k}^{b}$, check for convergence (you can use the magnitude of $d{w}_{k}^{b}$ or the magnitude of the force vector ${R}_{i}^{a}-{F}_{i}^{a}$ 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

$\underset{{V}_{0}}{\int }{\tau }_{ij}\left[{F}_{pq}\left({w}_{k}^{b}+d{w}_{k}^{b}\right)\right]\frac{\partial {N}^{a}}{\partial {x}_{m}}{\left(F+dF\right)}_{mj}^{-1}d{V}_{0}-\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}{N}^{a}d{V}_{0}-\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{*}{N}^{a}\left(\eta +d\eta \right)d{A}_{0}=0$

Note that

$\frac{\partial {F}_{ij}}{\partial {w}_{k}^{a}}=\frac{\partial {N}^{a}}{\partial {x}_{j}}{\delta }_{ik}$

We also have that

$\begin{array}{l}{F}_{ij}{F}_{jk}^{-1}={\delta }_{ik}⇒\frac{\partial {F}_{ij}}{\partial {w}_{n}^{a}}{F}_{jk}^{-1}+{F}_{ij}\frac{\partial {F}_{jk}^{-1}}{\partial {w}_{n}^{a}}=0⇒\frac{\partial {F}_{pk}^{-1}}{\partial {w}_{n}^{a}}=-{F}_{pi}^{-1}\frac{\partial {F}_{ij}}{\partial {w}_{n}^{a}}{F}_{jk}^{-1}\\ ⇒{\left(F+dF\right)}_{mn}^{-1}\approx {F}_{mn}^{-1}-{F}_{mi}^{-1}\frac{\partial {F}_{ij}}{\partial {w}_{k}^{b}}{F}_{jn}^{-1}d{w}_{k}^{b}={F}_{mn}^{-1}-{F}_{mk}^{-1}\frac{\partial {N}^{b}}{\partial {x}_{j}}{F}_{jn}^{-1}d{w}_{k}^{b}\end{array}$

${\tau }_{ij}\left[{F}_{pq}\left({w}_{k}^{b}+d{w}_{k}^{b}\right)\right]\approx {\tau }_{ij}+\frac{\partial {\tau }_{ij}}{\partial {F}_{kl}}\frac{\partial {F}_{kl}}{\partial {w}_{n}^{b}}d{w}_{n}^{b}={\tau }_{ij}+\frac{\partial {\tau }_{ij}}{\partial {F}_{kl}}\frac{\partial {N}^{b}}{\partial {x}_{l}}d{w}_{k}^{b}$

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

${C}^{e}{}_{ijkl}=\frac{\partial {\tau }_{ij}}{\partial {F}_{km}}{F}_{lm}=J{\sigma }_{ij}{\delta }_{kl}+J\frac{\partial {\sigma }_{ij}}{\partial {F}_{km}}{F}_{lm}$

The Neo-Hookean solid has a stress-strain relation given by

${\sigma }_{ij}=\frac{{\mu }_{1}}{{J}^{5/3}}\left({B}_{ij}-\frac{1}{3}{B}_{kk}{\delta }_{ij}\right)+{K}_{1}\left(J-1\right){\delta }_{ij}$

Evaluating the derivatives is a tedious but straightforward exercise in index notation. The following identity is helpful

$\frac{\partial J}{\partial {F}_{km}}=J{F}_{mk}^{-1}$

giving

${C}^{e}{}_{ijkl}=\frac{{\mu }_{1}}{{J}^{2/3}}\left({\delta }_{ik}{B}_{jl}+{B}_{il}{\delta }_{jk}-\frac{2}{3}\left\{{B}_{ij}{\delta }_{kl}+{B}_{kl}{\delta }_{ij}\right\}+\frac{2}{3}\frac{{B}_{qq}}{3}{\delta }_{ij}{\delta }_{kl}\right)+{K}_{1}\left(2J-1\right)J{\delta }_{ij}{\delta }_{kl}$

8.4.6 Evaluating the boundary traction integrals

Finally, we need to address how to calculate the factor $\eta$ 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 ${t}^{0}=\eta {t}^{*}$.  The expression for the external forcing can therefore be written

${F}_{i}^{a}=\underset{{V}_{0}}{\int }{\rho }_{0}{b}_{i}{N}^{a}d{V}_{0}+\underset{{\partial }_{2}{V}_{0}}{\int }{t}_{i}^{0}{N}^{a}d{A}_{0}=0$

and since this expression does not involve $\eta$ 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) ${x}_{i}^{a}={X}_{i}^{a}+{u}_{i}^{a}$  for a=1..n. Introduce a convenient interpolation scheme to define the shape of the element face in terms of its nodal coordinates

${x}_{i}\left({\xi }_{\alpha }\right)=\sum _{a=1}^{n}{M}^{a}\left({\xi }_{\alpha }\right){x}_{i}^{a}$

where $-1\le {\xi }_{\alpha }\le 1$ with $\alpha =1,2$ denote a suitable set of local coordinates that will specify position within an element face, and ${M}^{a}$ are a set of interpolation functions.

We now evaluate the surface integral as

$\underset{\partial {\Omega }_{e}}{\int }{t}_{i}^{*}{N}^{a}\eta d{A}_{0}=\underset{-1}{\overset{+1}{\int }}\underset{-1}{\overset{+1}{\int }}{t}_{i}^{*}{N}^{a}\left({\xi }_{\alpha }\right)\stackrel{˜}{\eta }\left({\xi }_{\alpha }\right)d{\xi }_{1}d{\xi }_{2}$

where $\eta$ must be computed by finding the two natural basis vectors

${p}_{i}^{\alpha }=\frac{\partial {x}_{i}}{\partial {\xi }_{\alpha }}=\sum _{a}\frac{\partial {M}^{a}}{\partial {\xi }_{\alpha }}{x}_{i}^{a}$

and then using $dA=|{p}^{\alpha }×{p}^{\beta }|d{\xi }_{1}d{\xi }_{2}=\stackrel{˜}{\eta }d{\xi }_{1}d{\xi }_{2}$ .  A straightforward exercise shows that

$\stackrel{˜}{\eta }=\sqrt{\left({p}_{k}^{1}{p}_{k}^{1}\right)\left({p}_{m}^{2}{p}_{m}^{2}\right)-{\left({p}_{k}^{1}{p}_{k}^{2}\right)}^{2}}$

With this in hand, we can calculate

$\frac{\partial \stackrel{˜}{\eta }}{\partial {u}_{j}^{b}}=\frac{1}{\stackrel{˜}{\eta }}\left\{\left({p}_{m}^{2}{p}_{m}^{2}\right){p}_{k}^{1}\frac{\partial {p}_{k}^{1}}{\partial {u}_{j}^{b}}+\left({p}_{m}^{1}{p}_{m}^{1}\right){p}_{k}^{2}\frac{\partial {p}_{k}^{2}}{\partial {u}_{j}^{b}}-\left({p}_{m}^{1}{p}_{m}^{2}\right)\left({p}_{k}^{2}\frac{\partial {p}_{k}^{1}}{\partial {u}_{j}^{b}}+{p}_{k}^{1}\frac{\partial {p}_{k}^{2}}{\partial {u}_{j}^{b}}\right)\right\}$

where

$\frac{\partial {p}_{i}^{\alpha }}{\partial {u}_{j}^{b}}=\frac{\partial {M}^{b}}{\partial {\xi }_{\alpha }}{\delta }_{ij}$

so that the last term in the stiffness can be evaluated as

$\underset{\partial {\Omega }_{e}}{\int }{t}_{i}^{*}{N}^{a}\frac{\partial \eta }{\partial {w}_{k}^{b}}d{A}_{0}=\underset{-1}{\overset{+1}{\int }}\underset{-1}{\overset{+1}{\int }}{t}_{i}^{*}{N}^{a}\left({\xi }_{\alpha }\right)\frac{\partial \stackrel{˜}{\eta }}{\partial {u}_{k}^{b}}d{\xi }_{1}d{\xi }_{2}$

8.4.7 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 code is provided in the file FEM_2Dor3D_hyperelastic_static.mws.  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 1 element problem.