SECTION 15.3 OF CHAPTER 15: Updated Lagrangian Formulation (UL)

Direct Evaluation of Euler–Almansi Strains and Comparison of UL Approaches

Direct evaluation of the current Euler–Almansi strain, its kinematic equivalence with the transformed update, and a displacement-based comparison of the Chapter 15 implementations.

Updated LagrangianEuler–Almansi strainQ4MATLAB

01

Purpose and progression

This section grew out of discussions with Chiara, whose contribution was decisive in developing the idea of evaluating the Euler–Almansi strain directly from the current configuration.

Section 15.1 and Section 15.2 evaluate the Euler–Almansi strain through incremental procedures. The present section investigates whether the same strain can instead be evaluated directly from the total current deformation.

Section 15.1Geometry updated after every iteration; explicit Euler–Almansi component expressions with the characteristic minus signs; incremental accumulation.
Section 15.2 — stiffSimple additive strain update.
Section 15.2 — stiff2Accumulated strain and new strain increment transformed to the new current configuration.
Section 15.3 — stiff3Direct Euler–Almansi evaluation from the current configuration.

The transformed update used by stiff2 is:

ei+1=FΔT(ei+ΔE)FΔ1\boldsymbol e_{i+1}=\boldsymbol F_\Delta^{-T}\left(\boldsymbol e_i+\Delta\boldsymbol E\right)\boldsymbol F_\Delta^{-1}

The simple additive approximation applies to stiff. In stiff2, the accumulated strain and the new strain increment are transformed together to the new current configuration. This transformation is kinematically equivalent to the direct Euler–Almansi evaluation used in stiff3.

02

Direct Euler–Almansi strain

The Euler–Almansi strain introduced in Chapter 13 is:

e=12(Ib1)\boxed{\boldsymbol e=\frac12\left(\boldsymbol I-\boldsymbol b^{-1}\right)}

where:

b=FFT\boldsymbol b=\boldsymbol F\boldsymbol F^T

Here, F\boldsymbol F is the total deformation gradient from the initial configuration to the current trial configuration, not merely the deformation gradient of the latest load increment. No previously accumulated strain is required to evaluate the current strain. The Euler–Almansi strain is obtained directly from the total deformation of the current trial configuration.

In engineering notation:

ex=e11ey=e22γxy=2e12e_x=e_{11}\qquad e_y=e_{22}\qquad \gamma_{xy}=2e_{12}

stiff3 does not use ei+ΔE\boldsymbol e_i+\Delta\boldsymbol E and does not need strnt(:,:,istep) to calculate the current trial strain at load step i+1i+1. The array strnt remains only to store strain results for post-processing.

The complete finite-element algorithm nevertheless retains the linear elastic material assumption, the small-strain plane-stress thickness approximation, and the adopted internal-force formulation and approximate tangent stiffness discussed in Sections 15.1 and 15.2.

03

Initial and current trial geometries

At each Gauss point, J0\boldsymbol J_0 is the Jacobian of the initial undeformed configuration and Jt\boldsymbol J_t is the Jacobian of the current trial configuration.

Using the notation introduced in Chapter 13, x\boldsymbol x denotes the position in the initial configuration and x^\hat{\boldsymbol x} the position in the current configuration.

For an infinitesimal line element:

dx=J0Tdξ,dx^=JtTdξd\boldsymbol x=\boldsymbol J_0^T d\boldsymbol\xi,\qquad d\hat{\boldsymbol x}=\boldsymbol J_t^T d\boldsymbol\xi

Eliminating dξd\boldsymbol\xi:

dx^=JtTJ0Tdx=(J01Jt)Tdxd\hat{\boldsymbol x}=\boldsymbol J_t^T\boldsymbol J_0^{-T}d\boldsymbol x=\left(\boldsymbol J_0^{-1}\boldsymbol J_t\right)^T d\boldsymbol x

Since, by definition:

dx^=Ftotdxd\hat{\boldsymbol x}=\boldsymbol F_{\mathrm{tot}}d\boldsymbol x

it follows that:

Ftot=(J01Jt)T\boxed{\boldsymbol F_{\mathrm{tot}}=\left(\boldsymbol J_0^{-1}\boldsymbol J_t\right)^T}

The current trial nodal coordinates are obtained from the known configuration at the beginning of the load step plus the accumulated displacement increment of that step:

xt=xi+Δu\boldsymbol x_t=\boldsymbol x_i+\Delta\boldsymbol u

The implementation uses the initial nodal coordinates x0 and y0 stored by gen.m.

This matrix maps the initial material geometry directly to the current trial geometry. It therefore includes the complete deformation accumulated from the initial configuration, rather than only the latest increment.

The left Cauchy–Green tensor and the direct Euler–Almansi strain follow as:

b=FtotFtotT\boldsymbol b=\boldsymbol F_{\mathrm{tot}}\boldsymbol F_{\mathrm{tot}}^T
e=12(Ib1)\boldsymbol e=\frac12\left(\boldsymbol I-\boldsymbol b^{-1}\right)

04

MATLAB implementation

stiff3 was developed from the stiff routine of Section 15.2 so that only the strain-evaluation procedure changes. The geometry update after load-step convergence, B=B0+BL\boldsymbol B=\boldsymbol B_0+\boldsymbol B_L, the Gx,Gy,Gxy\boldsymbol G_x,\boldsymbol G_y,\boldsymbol G_{xy} terms, the internal force, the adopted tangent stiffness, the thickness approximation, load stepping, and convergence tolerance are retained.

The new conceptual block is:

% Current trial nodal coordinates
xelt=xel+sel(1:2:8);
yelt=yel+sel(2:2:8);

% Initial and current trial Jacobians
J0=H*[xel0 yel0];
Jt=H*[xelt yelt];

% Total deformation gradient
Ftot=(J0\Jt)';

% Left Cauchy-Green tensor
btens=Ftot*Ftot';

% Euler-Almansi strain tensor
ee=0.5*(eye(2)-inv(btens));

ex =ee(1,1);
ey =ee(2,2);
exy=2*ee(1,2);

The current trial coordinates used to form Jt\boldsymbol J_t are:

xelt=xel+sel(1:2:8)
yelt=yel+sel(2:2:8)

The plane-stress thickness remains the same small-strain approximation:

εz=ν1ν(εx+εy)\varepsilon_z=-\frac{\nu}{1-\nu}(\varepsilon_x+\varepsilon_y)
hcur(1+εz)hh_{\mathrm{cur}}\approx(1+\varepsilon_z)h

This thickness relation is a small-strain approximation; it is not a general exact relation for finite elastic strains.

05

Equivalence of stiff2 and stiff3

Let Fi\boldsymbol F_i be the total deformation gradient from the initial configuration to configuration ii, and FΔ\boldsymbol F_\Delta the incremental deformation gradient from configuration ii to configuration i+1i+1. Then:

Fi+1=FΔFi\boldsymbol F_{i+1}=\boldsymbol F_\Delta\boldsymbol F_i

The Euler–Almansi strain at configuration ii is:

ei=12(IFiTFi1)\boldsymbol e_i=\frac12\left(\boldsymbol I-\boldsymbol F_i^{-T}\boldsymbol F_i^{-1}\right)

The Green–Lagrange strain increment for ii+1i\rightarrow i+1 is:

ΔE=12(FΔTFΔI)\Delta\boldsymbol E=\frac12\left(\boldsymbol F_\Delta^T\boldsymbol F_\Delta-\boldsymbol I\right)

Substitution into the stiff2 update gives:

ei+1=FΔT(ei+ΔE)FΔ1=12[IFΔTFiTFi1FΔ1]=12[IFi+1TFi+11]=12(Ibi+11)\begin{aligned}\boldsymbol e_{i+1}&=\boldsymbol F_\Delta^{-T}\left(\boldsymbol e_i+\Delta\boldsymbol E\right)\boldsymbol F_\Delta^{-1}\\[3pt]&=\frac12\left[\boldsymbol I-\boldsymbol F_\Delta^{-T}\boldsymbol F_i^{-T}\boldsymbol F_i^{-1}\boldsymbol F_\Delta^{-1}\right]\\[3pt]&=\frac12\left[\boldsymbol I-\boldsymbol F_{i+1}^{-T}\boldsymbol F_{i+1}^{-1}\right]\\[3pt]&=\frac12\left(\boldsymbol I-\boldsymbol b_{i+1}^{-1}\right)\end{aligned}

Therefore:

stiff2andstiff3evaluate the same Euler–Almansi strain\boxed{\texttt{stiff2}\quad\text{and}\quad\texttt{stiff3}\quad\text{evaluate the same Euler\text{–}Almansi strain}}

stiff2 reaches the current Euler–Almansi strain by transporting the previously accumulated strain and the new increment, whereas stiff3 obtains the same strain directly from the total current deformation. This is an exact kinematic equivalence; it is not a claim that the complete finite-element formulation is exact.

Although stiff3 does not introduce a different Euler–Almansi strain measure, it provides an independent way of evaluating it. It avoids strain-history accumulation for current strain evaluation and provides a useful numerical verification of the transformed strain update introduced in Section 15.2.

06

Displacement comparison

The comparison uses only the displacement components of the node on the midline of the free-end section. This provides a clean common quantity because the implementations involve different stress descriptions. Direct MATLAB verification confirmed that the first listed displacement is uu and the second is vv; both are negative with the adopted global axes.

The TL reference solution, obtained with nstep=10n_{\mathrm{step}}=10, required 63 total iterations and gave:

uref=150.21mm,vref=282.46mmu_{\mathrm{ref}}=-150.21\,\mathrm{mm},\qquad v_{\mathrm{ref}}=-282.46\,\mathrm{mm}

Each cell lists the total number of iterations followed by the two signed displacement components at the midline node of the free-end section.

nstepn_{\mathrm{step}}Section 15.115.2
stiff
15.2
stiff2
15.3
stiff3
5
niter=66n_{\mathrm{iter}}=66u=159.73mmu=-159.73\,\mathrm{mm}v=287.74mmv=-287.74\,\mathrm{mm}
niter=40n_{\mathrm{iter}}=40u=155.93mmu=-155.93\,\mathrm{mm}v=284.50mmv=-284.50\,\mathrm{mm}
niter=102n_{\mathrm{iter}}=102u=149.51mmu=-149.51\,\mathrm{mm}v=282.69mmv=-282.69\,\mathrm{mm}
niter=102n_{\mathrm{iter}}=102u=149.51mmu=-149.51\,\mathrm{mm}v=282.69mmv=-282.69\,\mathrm{mm}
10
niter=86n_{\mathrm{iter}}=86u=158.69mmu=-158.69\,\mathrm{mm}v=287.31mmv=-287.31\,\mathrm{mm}
niter=64n_{\mathrm{iter}}=64u=152.84mmu=-152.84\,\mathrm{mm}v=283.48mmv=-283.48\,\mathrm{mm}
niter=106n_{\mathrm{iter}}=106u=149.90mmu=-149.90\,\mathrm{mm}v=282.88mmv=-282.88\,\mathrm{mm}
niter=106n_{\mathrm{iter}}=106u=149.90mmu=-149.90\,\mathrm{mm}v=282.88mmv=-282.88\,\mathrm{mm}
20
niter=137n_{\mathrm{iter}}=137u=154.47mmu=-154.47\,\mathrm{mm}v=284.97mmv=-284.97\,\mathrm{mm}
niter=111n_{\mathrm{iter}}=111u=151.45mmu=-151.45\,\mathrm{mm}v=283.00mmv=-283.00\,\mathrm{mm}
niter=154n_{\mathrm{iter}}=154u=149.99mmu=-149.99\,\mathrm{mm}v=282.93mmv=-282.93\,\mathrm{mm}
niter=154n_{\mathrm{iter}}=154u=149.99mmu=-149.99\,\mathrm{mm}v=282.93mmv=-282.93\,\mathrm{mm}
50
niter=267n_{\mathrm{iter}}=267u=151.91mmu=-151.91\,\mathrm{mm}v=283.53mmv=-283.53\,\mathrm{mm}
niter=221n_{\mathrm{iter}}=221u=150.68mmu=-150.68\,\mathrm{mm}v=282.72mmv=-282.72\,\mathrm{mm}
niter=300n_{\mathrm{iter}}=300u=150.02mmu=-150.02\,\mathrm{mm}v=282.94mmv=-282.94\,\mathrm{mm}
niter=300n_{\mathrm{iter}}=300u=150.02mmu=-150.02\,\mathrm{mm}v=282.94mmv=-282.94\,\mathrm{mm}

The corresponding average number of iterations per load step is:

nˉiter=niter,totalnstep\bar n_{\mathrm{iter}}=\frac{n_{\mathrm{iter,total}}}{n_{\mathrm{step}}}
nstepn_{\mathrm{step}}Section 15.1stiffstiff2 = stiff3
513.28.020.4
108.66.410.6
206.855.557.70
505.344.426.00
MATLAB validation. The current packages were executed in MATLAB R2026a using the approved convergence norm based on neq. For 5, 10, 20, and 50 load steps, both stiff2 and stiff3 required respectively 100, 104, 150, and 300 iterations. Their displacement differences were below 6.2×105mm6.2\times10^{-5}\,\mathrm{mm}, which is normal floating-point roundoff. The small differences between these iteration totals and the benchmark table arise from the convergence-norm normalization; the benchmark values are retained unchanged.

For nstep=5n_{\mathrm{step}}=5, the displacement differences relative to the TL reference are approximately 6.3% in uu and 1.9% in vv for Section 15.1; 3.8% and 0.7% for stiff; and 0.47% and 0.08% for stiff2/stiff3.

Exploratory calculations with only one to three load steps produced unacceptable displacement solutions and are therefore not included in the systematic comparison. No conclusion is drawn for four load steps.

07

Interpretation and conclusion

For every tested number of load steps, stiff2 and stiff3 produced identical displacement results to the reported precision and identical iteration counts. This provides a strong independent verification of the strain transformation used in stiff2.

Already with five load steps, their displacement solution is very close to the TL reference. The simple stiff update requires more load-step refinement to approach the same displacement accuracy, while Section 15.1 is still more sensitive to load-step size for this example.

Accuracy and iteration speed are different issues. The transformed/direct strain update requires more iterations per load step in this example, but substantially fewer load steps are needed to obtain an accurate displacement solution.

The larger number of iterations required by stiff2 and stiff3 is consistent with the use of an approximate tangent stiffness together with the corrected strain evaluation. The tangent primarily affects the convergence path and convergence rate; the equilibrium condition is governed by the internal-force vector. This is an observation for the present implementation, not a general statement that an approximate tangent always produces this behavior.

The direct strain evaluation eliminates strain-history accumulation from the Euler–Almansi calculation, but the complete nonlinear finite-element solution may still depend slightly on the load-step discretization because the remaining algorithmic approximations are unchanged.

The three UL implementations illustrate progressively different ways of treating strain updates. The direct Euler–Almansi evaluation in stiff3 eliminates the need to accumulate strain history for the purpose of evaluating the current strain. Its complete numerical agreement with stiff2 confirms that the tensor transformation introduced in Section 15.2 reproduces the same Euler–Almansi strain obtained directly from the total current deformation.

For the present example, this more accurate strain treatment requires more iterations per load step than the simple stiff update, but it reaches an accurate displacement solution with substantially fewer load steps.

08

Program and download

A MATLAB program package for the direct stiff3 implementation can be downloaded below.