SECTION 15.1 OF CHAPTER 15: UPDATED LAGRANGIAN FORMULATION (UL)

Plane Stress: Isoparametric 4-Node Quadrilateral Finite Element

An Updated Lagrangian plane-stress formulation in which the geometry, Jacobian, and spatial derivatives are updated after every iteration, with explicit Euler–Almansi strain increments and a validated MATLAB implementation.

Updated LagrangianPlane stressQ4MATLABANSYS

01

Formulation and updating procedures

StrainSmall
DisplacementLarge
MaterialLinear elastic
Stress statePlane stress

The isoparametric 4-node quadrilateral finite element is briefly described in Section 9.4.

Updated Lagrangian (UL) formulation. The equations are written with respect to a known current configuration. Two updating procedures are considered. In Section 15.1, the geometry is updated after each iteration, so the Jacobian and spatial derivatives are recomputed using the latest trial configuration. In Section 15.2, the converged configuration of the preceding load step is used throughout the next load step and the geometry is updated only after convergence.

In this section, at each iteration, the nodal coordinates x,yx,y represent the latest known current trial configuration. The routine stiff recomputes the Jacobian, spatial derivatives, and strain–displacement matrices using these coordinates. After the displacement correction is obtained, the coordinates are updated and this new geometry is used in the next iteration. Thus, the derivatives entering the Euler–Almansi relations are evaluated with respect to the latest current trial geometry.

Total Lagrangian (TL)Updated Lagrangian (UL) — version 1
Section 15.1
geometry updated after each iteration
Updated Lagrangian (UL) — version 2
Section 15.2
geometry updated after each load step
The initial configuration is the reference configuration.The latest current trial configuration is used to recompute geometry-dependent quantities during the iteration.The converged configuration of the preceding load step remains the reference throughout the next load step.
Target quantities are referred to the initial configuration. Derivatives and integrals are evaluated with respect to it.Target increments are evaluated from the latest trial geometry. Derivatives and integrals use the current trial configuration.Target increments are referred to the preceding converged configuration. Derivatives and integrals use that configuration.
Second Piola–Kirchhoff stress and Green–Lagrange strainCauchy stress and Euler–Almansi strainCauchy stress and Euler–Almansi strain

The comparison follows the reference-configuration discussion of Chatzi [1]. For small strains, Green–Lagrange and Euler–Almansi strains become close to their linearized counterparts. Similarly, PK2 and Cauchy stresses have close numerical values when compared in corresponding material and spatial directions. Large rotations may still produce different tensor components when they are expressed in a fixed global coordinate system.

02

Approximate deformation energy

For the present small-strain formulation, the following approximate deformation-energy expression written in the current configuration is used:

Uj+112el=1nelAel,jhjej+1Tσj+1dA=12el=1nelAel,jhj(ei+Δe)Tσj+1dAU_{j+1}\approx\frac12\sum_{el=1}^{n_{el}}\int_{A_{el,j}}h_j\,\boldsymbol e_{j+1}^{T}\boldsymbol\sigma_{j+1}\,dA=\frac12\sum_{el=1}^{n_{el}}\int_{A_{el,j}}h_j\left(\boldsymbol e_i+\Delta\boldsymbol e\right)^{T}\boldsymbol\sigma_{j+1}\,dA

In the natural coordinates s,ts,t:

Uj+112el=1nel1111hj(ei+Δe)Tσj+1detJjdsdtU_{j+1}\approx\frac12\sum_{el=1}^{n_{el}}\int_{-1}^{1}\int_{-1}^{1}h_j\left(\boldsymbol e_i+\Delta\boldsymbol e\right)^{T}\boldsymbol\sigma_{j+1}\left|\det\boldsymbol J_j\right|\,ds\,dt

Here, ei\boldsymbol e_i is the known accumulated strain at the beginning of the current load step, Δe\Delta\boldsymbol e is the strain increment produced during the current step, and σj+1\boldsymbol\sigma_{j+1} is the Cauchy stress evaluated at the current iteration. Engineering notation is used:

e={εxεyγxy},σ={σxσyτxy}\boldsymbol e=\begin{Bmatrix}\varepsilon_x\\\varepsilon_y\\\gamma_{xy}\end{Bmatrix},\qquad\boldsymbol\sigma=\begin{Bmatrix}\sigma_x\\\sigma_y\\\tau_{xy}\end{Bmatrix}

For a linear elastic plane-stress material:

σ=De,D=E1ν2[1ν0ν10001ν2]\boldsymbol\sigma=\boldsymbol D\boldsymbol e,\qquad\boldsymbol D=\frac{E}{1-\nu^2}\begin{bmatrix}1&\nu&0\\\nu&1&0\\0&0&\dfrac{1-\nu}{2}\end{bmatrix}

03

Current geometry and Jacobian

At iteration jj, the Jacobian is recomputed from the latest trial nodal coordinates:

Jj(s,t)=[xsysxtyt]=H(s,t)[x1y1x2y2x3y3x4y4]j\boldsymbol J_j(s,t)=\begin{bmatrix}\dfrac{\partial x}{\partial s}&\dfrac{\partial y}{\partial s}\\[4pt]\dfrac{\partial x}{\partial t}&\dfrac{\partial y}{\partial t}\end{bmatrix}=\boldsymbol H(s,t)\begin{bmatrix}x_1&y_1\\x_2&y_2\\x_3&y_3\\x_4&y_4\end{bmatrix}_j
H(s,t)=14[1+t(1+t)(1t)1t1+s1s(1s)(1+s)]\boldsymbol H(s,t)=\frac14\begin{bmatrix}1+t&-(1+t)&-(1-t)&1-t\\1+s&1-s&-(1-s)&-(1+s)\end{bmatrix}

The current spatial derivatives of the shape functions are obtained from:

bj=Jj1H\boldsymbol b_j=\boldsymbol J_j^{-1}\boldsymbol H

The four displacement-gradient relations are:

Δu,x=BuxΔuel\Delta u_{,x}=\boldsymbol B_{ux}\Delta\boldsymbol u_{el}
Δu,y=BuyΔuel\Delta u_{,y}=\boldsymbol B_{uy}\Delta\boldsymbol u_{el}
Δv,x=BvxΔuel\Delta v_{,x}=\boldsymbol B_{vx}\Delta\boldsymbol u_{el}
Δv,y=BvyΔuel\Delta v_{,y}=\boldsymbol B_{vy}\Delta\boldsymbol u_{el}
Δuel={Δu1Δv1Δu2Δv2Δu3Δv3Δu4Δv4}T\Delta\boldsymbol u_{el}=\begin{Bmatrix}\Delta u_1&\Delta v_1&\Delta u_2&\Delta v_2&\Delta u_3&\Delta v_3&\Delta u_4&\Delta v_4\end{Bmatrix}^{T}

04

Euler–Almansi strain increments

The explicit two-dimensional Euler–Almansi strain increments are:

Δεx=Δu,x12(Δu,x)212(Δv,x)2\Delta\varepsilon_x=\Delta u_{,x}-\frac12\left(\Delta u_{,x}\right)^2-\frac12\left(\Delta v_{,x}\right)^2
Δεy=Δv,y12(Δu,y)212(Δv,y)2\Delta\varepsilon_y=\Delta v_{,y}-\frac12\left(\Delta u_{,y}\right)^2-\frac12\left(\Delta v_{,y}\right)^2
Δγxy=Δu,y+Δv,xΔu,xΔu,yΔv,xΔv,y\Delta\gamma_{xy}=\Delta u_{,y}+\Delta v_{,x}-\Delta u_{,x}\Delta u_{,y}-\Delta v_{,x}\Delta v_{,y}

The minus signs distinguish these current-configuration increments from the Green–Lagrange expressions used in the Total Lagrangian formulation. Substitution of the displacement interpolation gives:

Δεx=BuxΔuel12ΔuelTGxΔuel\Delta\varepsilon_x=\boldsymbol B_{u_x}\Delta\boldsymbol u_{el}-\frac12\Delta\boldsymbol u_{el}^{T}\boldsymbol G_x\Delta\boldsymbol u_{el}
Δεy=BvyΔuel12ΔuelTGyΔuel\Delta\varepsilon_y=\boldsymbol B_{v_y}\Delta\boldsymbol u_{el}-\frac12\Delta\boldsymbol u_{el}^{T}\boldsymbol G_y\Delta\boldsymbol u_{el}
Δγxy=(Buy+Bvx)Δuel12ΔuelTGxyΔuel\Delta\gamma_{xy}=\left(\boldsymbol B_{u_y}+\boldsymbol B_{v_x}\right)\Delta\boldsymbol u_{el}-\frac12\Delta\boldsymbol u_{el}^{T}\boldsymbol G_{xy}\Delta\boldsymbol u_{el}

The symmetric 8×88\times8 matrices are:

Gx=BuxTBux+BvxTBvx\boldsymbol G_x=\boldsymbol B_{u_x}^{T}\boldsymbol B_{u_x}+\boldsymbol B_{v_x}^{T}\boldsymbol B_{v_x}
Gy=BuyTBuy+BvyTBvy\boldsymbol G_y=\boldsymbol B_{u_y}^{T}\boldsymbol B_{u_y}+\boldsymbol B_{v_y}^{T}\boldsymbol B_{v_y}
Gxy=BuxTBuy+BuyTBux+BvxTBvy+BvyTBvx\boldsymbol G_{xy}=\boldsymbol B_{u_x}^{T}\boldsymbol B_{u_y}+\boldsymbol B_{u_y}^{T}\boldsymbol B_{u_x}+\boldsymbol B_{v_x}^{T}\boldsymbol B_{v_y}+\boldsymbol B_{v_y}^{T}\boldsymbol B_{v_x}

05

Strain–displacement matrix

The strain variation is related to the element nodal displacement variation by:

δe=Bδuel\delta\boldsymbol e=\boldsymbol B\,\delta\boldsymbol u_{el}

For the Euler–Almansi component relations:

B=[BuxBvyBuy+Bvx]B0[uelTGxuelTGyuelTGxy]BL=B0BL\boldsymbol B=\underbrace{\begin{bmatrix}\boldsymbol B_{u_x}\\\boldsymbol B_{v_y}\\\boldsymbol B_{u_y}+\boldsymbol B_{v_x}\end{bmatrix}}_{\boldsymbol B_0}-\underbrace{\begin{bmatrix}\boldsymbol u_{el}^{T}\boldsymbol G_x\\\boldsymbol u_{el}^{T}\boldsymbol G_y\\\boldsymbol u_{el}^{T}\boldsymbol G_{xy}\end{bmatrix}}_{\boldsymbol B_L}=\boldsymbol B_0-\boldsymbol B_L

The negative nonlinear contribution is intentional. If the intermediate variation is written explicitly, the consistent sign is:

δB=δ(B0BL)=δBL\delta\boldsymbol B=\delta\left(\boldsymbol B_0-\boldsymbol B_L\right)=-\delta\boldsymbol B_L

06

MATLAB implementation

The Section 12.2 Total Lagrangian program is adapted to update the geometry after every iteration. The three displacement quantities in main have distinct roles:

  • dS is the displacement correction obtained in one iteration.
  • S is the displacement increment accumulated during the current load step.
  • St(:,istep+1) is the total accumulated displacement up to the converged load step.
S=zeros(neq,1);
while (error > tol) & (iter < itermax)
    iter=iter+1;
    stiff
    dS=K\F;
    S=S-dS;
    error=sqrt(dS'*dS/neq);
    x=x-dS(1:2:neq);
    y=y-dS(2:2:neq);
end
St(:,istep+1)=St(:,istep)+S;

The geometry update changes x,yx,y after each correction; consequently, stiff uses the latest current trial configuration at the next iteration. Its essential Euler–Almansi and assembly statements are:

% Euler-Almansi strains:
ex =ux-ux^2/2-vx^2/2;
ey =vy-uy^2/2-vy^2/2;
exy=uy+vx-ux*uy-vx*vy;

B=B0-BL;
ex =ex +strnt(ig,1,istep);
ey =ey +strnt(ig,2,istep);
exy=exy+strnt(ig,3,istep);
sigmt(ig,1:3,istep+1)=[ex ey exy]*DHooke;
th1=(1-nu/(1-nu)*(ex+ey))*th;
fel=fel+th1*(B'*sigmt(ig,1:3,istep+1)')*detJ;
kel=kel+th1*(B'*DHooke*B)*detJ;

In theoretical notation, these element vectors and matrices are assembled into the global quantities as:

Fint=Ael=1nel(fel),K=Ael=1nel(kel)\boldsymbol F_{\mathrm{int}}=\mathcal A_{el=1}^{n_{el}}\left(\boldsymbol f_{el}\right),\qquad\boldsymbol K=\mathcal A_{el=1}^{n_{el}}\left(\boldsymbol k_{el}\right)

Here, A\mathcal A denotes the standard finite-element assembly operator, which places the element contributions into the corresponding global degrees of freedom and adds overlapping contributions.

For a plane-stress state and small strains, the thickness strain is approximated by:

εz=ν1ν(εx+εy)\varepsilon_z=-\frac{\nu}{1-\nu}\left(\varepsilon_x+\varepsilon_y\right)

Therefore, the current thickness used by the program is:

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

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

The stresses are known at the four Gauss points. For each element, plot_stress fits the linear plane:

σ(x,y)=a1x+a2y+a3\sigma(x,y)=a_1x+a_2y+a_3

The existing least-squares equations determine the coefficients from the Gauss-point stresses. The fitted plane is evaluated at the four element nodes, and contributions from elements sharing a node are averaged arithmetically. The strain plotting routine uses the same extrapolation and averaging structure for strains.

07

Simplified tangent and incremental approximation

A simplified tangent stiffness is used in the present UL implementation. Since the geometry is updated after every iteration, the Jacobian and the strain–displacement matrices are recomputed for the latest current configuration. The geometric terms used in the TL tangent stiffness are therefore not transferred directly to the present formulation. Numerical tests showed that introducing these TL-type terms deteriorated convergence, whereas the simplified tangent used here produced a stable iterative process. This matrix is an approximate tangent stiffness; a fully consistent UL tangent would require a separate linearization in the current configuration.

Within the adopted UL model, the internal-force vector is evaluated directly from the current trial state, whereas the tangent stiffness used for the iterative correction is deliberately simplified. Thus, the additional approximation introduced in the tangent stiffness does not alter the direct evaluation of the internal-force vector at each iteration.

For one finite element, the implemented approximation is:

kel1111h1BTDBdetJdsdtnGh1BTDBdetJ\boldsymbol k_{el}\approx\int_{-1}^{1}\int_{-1}^{1}h_1\,\boldsymbol B^{T}\boldsymbol D\boldsymbol B\left|\det\boldsymbol J\right|\,ds\,dt\approx\sum_{n_G}h_1\,\boldsymbol B^{T}\boldsymbol D\boldsymbol B\left|\det\boldsymbol J\right|

The internal-force vector is recalculated at every iteration from the current geometry and stresses:

fel=nGh1BTσdetJ\boldsymbol f_{el}=\sum_{n_G}h_1\,\boldsymbol B^{T}\boldsymbol\sigma\left|\det\boldsymbol J\right|
Important remark

The present formulation uses an approximate incremental update. At each iteration, the equations are evaluated using the latest known geometry, which is subsequently updated by the newly calculated displacement correction. Euler–Almansi strain increments are accumulated over successive load steps. For small strains and sufficiently small load increments, the discrepancies introduced by these approximations become small and decrease as the load-step size is reduced.

08

Example 1: axial tension

A cantilever-like prismatic bar has initial length L0=100 mmL_0=100\ \mathrm{mm}, rectangular cross-section 5 mm×60 mm5\ \mathrm{mm}\times60\ \mathrm{mm}, Young’s modulus E=1000 MPaE=1000\ \mathrm{MPa}, Poisson ratio ν=0.3\nu=0.3, and an axial force applied at its free end.

Mesh, constraints, and axial loading for Example 1
Figure 1. Mesh, constraints, and axial loading.
Deformed bar in Example 1
Figure 2. Deformed configuration.

For the present one-dimensional model, Poisson contraction gives the current area A(1νεx)2A(1-\nu\varepsilon_x)^2. The analytical Cauchy stress is:

σx=FA(1νεx)2\sigma_x=\frac{F}{A\left(1-\nu\varepsilon_x\right)^2}

Using σx=Eεx\sigma_x=E\varepsilon_x, the strain is obtained from the cubic equation:

ν2εx32νεx2+εxFEA=0\nu^2\varepsilon_x^3-2\nu\varepsilon_x^2+\varepsilon_x-\frac{F}{EA}=0
Force versus axial strain from linear, analytical one-dimensional, and 2D finite element models
Figure 3. Force–strain comparison: linear response, analytical solution for the present one-dimensional model, and the 2D program.

The unusually large strain range is used only to emphasize the trend of the curves. It lies outside the strict small-strain range assumed by the formulation and should therefore be regarded as a numerical illustration rather than as a finite-strain constitutive validation.

The one-dimensional Euler–Almansi relation itself gives directly:

eEA=L2L022L2e_{EA}=\frac{L^2-L_0^2}{2L^2}

Therefore:

L=L012eEAL=\frac{L_0}{\sqrt{1-2e_{EA}}}
u=L0(112eEA1)u=L_0\left(\frac{1}{\sqrt{1-2e_{EA}}}-1\right)

The recursive development is nevertheless retained because it reproduces the incremental updating used by the UL finite-element algorithm. For Fi=iF/nfF_i=iF/n_f, the cubic equation is solved at each interval:

ν2εxi32νεxi2+εxiFiEA=0,i=1,,nf\nu^2\varepsilon_{x_i}^{3}-2\nu\varepsilon_{x_i}^{2}+\varepsilon_{x_i}-\frac{F_i}{EA}=0,\qquad i=1,\ldots,n_f

For a sufficiently small increment:

εxi+1εxiui+1uiL0+ui\varepsilon_{x_{i+1}}-\varepsilon_{x_i}\approx\frac{u_{i+1}-u_i}{L_0+u_i}

The recursive formula is:

ui+1=ui+(εxi+1εxi)(L0+ui),u0=0u_{i+1}=u_i+\left(\varepsilon_{x_{i+1}}-\varepsilon_{x_i}\right)\left(L_0+u_i\right),\qquad u_0=0
clear
E=1000;   % Young's modulus
nu=0.3;   % Poisson ratio
A=300;    % cross-section area
L0=100;   % initial length
F0=80000; % force
nf=5000;  % number of points
dF=F0/nf;
uu(1)=0;
for i=1:nf
    FF(i+1,1)=i*F0/nf;
    p=[nu^2 -2*nu 1 -FF(i+1)/E/A];
    eer=roots(p);
    ee(i+1,1)=eer(3);
    uu(i+1)=uu(i)+(ee(i+1)-ee(i))*(L0+uu(i));
end
figure(1), clf, hold on, grid on
plot([0 max(ee)],[0 max(ee)*L0],'k')
plot(ee,uu,'r','linewidth',1.5)
xlabel('\epsilon')
ylabel('u [mm]')
legend('Linear','1D analytical','Location','southeast')
Elongation versus Euler-Almansi strain
Figure 4. Elongation–strain comparison for the linear relation, analytical one-dimensional relation, and finite-element result.

09

Example 2: cantilever comparison

The cantilever beam has length L=400 mmL=400\ \mathrm{mm} and a rectangular cross-section 20 mm×5 mm20\ \mathrm{mm}\times5\ \mathrm{mm}. The material properties are E=1000 MPaE=1000\ \mathrm{MPa} and ν=0.3\nu=0.3. A vertical force F=100 NF=100\ \mathrm{N} is applied at the free end. The mesh contains 120×16=1920120\times16=1920 Q4 elements and 2,057 nodes. The load is applied in 50 load steps.

Figure 5. Deformed configurations obtained with the Total and Updated Lagrangian programs.
TL — PK2 stress

vmin=288.79 mmv_{\min}=-288.79\ \mathrm{mm}

umax=2.18 mmu_{\max}=2.18\ \mathrm{mm}

umin=159.51 mmu_{\min}=-159.51\ \mathrm{mm}

σx,max=84.62 MPa\sigma_{x,\max}=84.62\ \mathrm{MPa}

σx,min=82.72 MPa\sigma_{x,\min}=-82.72\ \mathrm{MPa}

ANSYS — Cauchy stress

vmin=289.48 mmv_{\min}=-289.48\ \mathrm{mm}

umax=2.38 mmu_{\max}=2.38\ \mathrm{mm}

umin=159.92 mmu_{\min}=-159.92\ \mathrm{mm}

σx,max=82.63 MPa\sigma_{x,\max}=82.63\ \mathrm{MPa}

σx,min=84.53 MPa\sigma_{x,\min}=-84.53\ \mathrm{MPa}

UL — Cauchy stress

vmin=289.95 mmv_{\min}=-289.95\ \mathrm{mm}

umax=2.28 mmu_{\max}=2.28\ \mathrm{mm}

umin=161.25 mmu_{\min}=-161.25\ \mathrm{mm}

σx,max=79.97 MPa\sigma_{x,\max}=79.97\ \mathrm{MPa}

σx,min=87.03 MPa\boxed{\sigma_{x,\min}=-87.03\ \mathrm{MPa}}

Figure 6. Cauchy normal stress σx\sigma_x from the Updated Lagrangian solution.

The displacement results show very good agreement among TL, UL, and ANSYS. Stress components require a more careful comparison: TL reports second Piola–Kirchhoff stress, whereas UL and ANSYS report Cauchy stress. In addition, strains near the clamped end reach approximately 0.070.080.07\text{–}0.08, which is outside the strict small-strain range assumed by the formulation. Large rotations and the different configurations in which the stress tensors are expressed also influence comparisons of global components.

The MATLAB R2026a run completed all 50 load steps, with no more than 6 iterations per step. At the final step, the calculated extrema were umin=161.2587 mmu_{\min}=-161.2587\ \mathrm{mm}, umax=2.2807 mmu_{\max}=2.2807\ \mathrm{mm}, vmin=289.9523 mmv_{\min}=-289.9523\ \mathrm{mm}, σx,min=87.0339 MPa\sigma_{x,\min}=-87.0339\ \mathrm{MPa}, and σx,max=79.9744 MPa\sigma_{x,\max}=79.9744\ \mathrm{MPa}.

10

Programs and downloads

11

References

  1. Eleni Chatzi, The Finite Element Method for the Analysis of Non-Linear and Dynamic Systems, ETH Zürich, Lecture 3, 15 October 2015.