Section 27.1 of Chapter 27: Updated Lagrangian formulation (UL)

Isoparametric 8-node hexahedral finite element

StrainSmall
DisplacementLarge
MaterialLinear elastic isotropic

01

Introduction

The 8-node hexahedral finite element is the 3D counterpart of the 4-node quadrilateral element presented in Section 15.3. The corresponding linear formulation is briefly described in Section 25.1. The Updated Lagrangian (UL) formulation has already been introduced in Chapter 15 and will not be repeated here.

As in the 2D case, the configuration at the beginning of each load increment is taken as the updated reference configuration. The HEX8 element has three displacement degrees of freedom per node and uses 23=82^3=8 Gauss integration points.

02

Direct evaluation of Euler–Almansi strain

Following Sections 15.3 and 15.4, the total deformation gradient is evaluated directly from the initial and current trial configurations:

Ftot=(J0−1Jt)T;b=FtotFtotT;e=12(I−b−1).\htmlClass{fea-math-bold-italic}{\boldsymbol F}_{\mathit{tot}}=(\htmlClass{fea-math-bold-italic}{\boldsymbol J}_0^{-1}\htmlClass{fea-math-bold-italic}{\boldsymbol J}_t)^T;\qquad\htmlClass{fea-math-bold-italic}{\boldsymbol b}=\htmlClass{fea-math-bold-italic}{\boldsymbol F}_{\mathit{tot}}\htmlClass{fea-math-bold-italic}{\boldsymbol F}_{\mathit{tot}}^T;\qquad\htmlClass{fea-math-bold-italic}{\boldsymbol e}=\tfrac12(\htmlClass{fea-math-bold-italic}{\boldsymbol I}-\htmlClass{fea-math-bold-italic}{\boldsymbol b}^{-1}).

Here J0\htmlClass{fea-math-bold-italic}{\boldsymbol J}_0 and Jt\htmlClass{fea-math-bold-italic}{\boldsymbol J}_t denote the Jacobians in the initial and current trial configurations. Thus, the total Euler–Almansi strain is obtained without accumulating strain components over successive increments.

This approach uses the MATLAB routine stiff.m when use_mult=false.

Direct evaluation — stiff.m
J0=H*[xel0 yel0 zel0];
Jt=H*[xelt yelt zelt];
Ftot=(J0\Jt)';
btens=Ftot*Ftot';
ee=0.5*(eye(3)-inv(btens));

03

Multiplicative update of the deformation gradient

Alternatively, the total deformation gradient can be updated from the preceding converged configuration instead of referring to the initial configuration at every iteration. At each Gauss point, the incremental deformation gradient and the total gradient in the trial configuration are:

ΔFn→t=(Jn−1Jt)T;Ft=ΔFn→tFn.\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol F}_{n\to t}=(\htmlClass{fea-math-bold-italic}{\boldsymbol J}_n^{-1}\htmlClass{fea-math-bold-italic}{\boldsymbol J}_t)^T;\qquad\htmlClass{fea-math-bold-italic}{\boldsymbol F}_t=\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol F}_{n\to t}\htmlClass{fea-math-bold-italic}{\boldsymbol F}_n.
et=12[I−(FtFtT)−1].\htmlClass{fea-math-bold-italic}{\boldsymbol e}_t=\tfrac12\left[\htmlClass{fea-math-bold-italic}{\boldsymbol I}-(\htmlClass{fea-math-bold-italic}{\boldsymbol F}_t\htmlClass{fea-math-bold-italic}{\boldsymbol F}_t^T)^{-1}\right].

Here Fn\htmlClass{fea-math-bold-italic}{\boldsymbol F}_n is the total deformation gradient stored at the end of the preceding converged load increment. Initially, F0=I\htmlClass{fea-math-bold-italic}{\boldsymbol F}_0=\htmlClass{fea-math-bold-italic}{\boldsymbol I} at every Gauss integration point. During Newton–Raphson iterations, Fn\htmlClass{fea-math-bold-italic}{\boldsymbol F}_n remains fixed while the trial Ft\htmlClass{fea-math-bold-italic}{\boldsymbol F}_t is recomputed. After convergence, the last evaluated Ft\htmlClass{fea-math-bold-italic}{\boldsymbol F}_t is stored for use in the next load increment.

Multiplicative update — stiff_mult.m
Jt=H*[xelt yelt zelt];
Finc=(J\Jt)';
Ftot=Finc*Fhist(:,:,ig);
Ftotsal(:,:,ig)=Ftot;
btens=Ftot*Ftot';
ee=0.5*(eye(3)-inv(btens));

In main.m, the Gauss-point history is initialized by Fhist=repmat(eye(3),[1 1 8*nel]) and, after convergence, updated by Fhist=Ftotsal. The alternative stiff_mult.m replaces the direct evaluation when use_mult=true; use_mult=false selects stiff.m. Both routines use the same internal-force and stiffness expressions.

04

Incremental stiffness and equilibrium

As in Section 15.3, the strain-displacement matrix B\htmlClass{fea-math-bold-italic}{\boldsymbol B} and the stiffness expressions retain the incremental Green–Lagrange construction (using the matrices Gx\htmlClass{fea-math-bold-italic}{\boldsymbol G}_x, Gy\htmlClass{fea-math-bold-italic}{\boldsymbol G}_y, Gz\htmlClass{fea-math-bold-italic}{\boldsymbol G}_z, Gxy\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{xy}, Gyz\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{yz} and Gzx\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{zx}), while stresses are calculated from the directly evaluated Euler–Almansi strain. The relevant program statements are:

Internal force and strain–displacement matrix
B0=[Bux; Bvy; Bwz; Buy+Bvx; Bvz+Bwy; Bwx+Buz];
BL=[sel'*Gx; sel'*Gy; sel'*Gz; sel'*Gxy; sel'*Gyz; sel'*Gzx];
B=B0+BL;
sigmt(ig,1:6,istep+1)=[ex ey ez exy eyz ezx]*DHooke;
fel=fel+(B'*sigmt(ig,1:6,istep+1)')*detJ;

The element tangent matrix is assembled as the material contribution BTDB\htmlClass{fea-math-bold-italic}{\boldsymbol B}^T\htmlClass{fea-math-bold-italic}{\boldsymbol D}\htmlClass{fea-math-bold-italic}{\boldsymbol B} plus six stress-dependent geometric contributions (Gx,Gy,Gz,Gxy,Gyz,Gzx\htmlClass{fea-math-bold-italic}{\boldsymbol G}_x,\htmlClass{fea-math-bold-italic}{\boldsymbol G}_y,\htmlClass{fea-math-bold-italic}{\boldsymbol G}_z,\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{xy},\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{yz},\htmlClass{fea-math-bold-italic}{\boldsymbol G}_{zx}), as shown in the downloadable MATLAB program.

This mixed formulation is an approximation intended to keep the implementation simple under the small-strain assumption. Its accuracy can be assessed by load-increment refinement; a fully consistent spatial residual and tangent matrix will be considered in Section 27.2.

05

Example

A straight cantilever of length L=200 mmL=200\,\mathit{mm} and rectangular cross-section t=20 mm, h=5 mmt=20\,\mathit{mm},\ h=5\,\mathit{mm} is subjected to the end loads F1=20 NF_1=20\,\mathit N and F2=4F1F_2=4F_1. The material constants are E=1000 MPaE=1000\,\mathit{MPa} and ν=0.3\nu=0.3. The mesh consists of 50×6×4=120050\times6\times4=1200 HEX8 elements, 1785 nodes and 5355 displacement degrees of freedom.

Loading and cross-section.
Figure 1a. Loading and cross-section.
HEX8 finite-element mesh.
Figure 1b. HEX8 finite-element mesh.

06

Numerical results

The displacement response of the center of the loaded cross-section agrees closely with the ANSYS results, as shown in Figure 2. For this diagram, the analysis used 50 load increments.

Figure 2. Load factor versus displacements: HEX8 and ANSYS.

The longitudinal Cauchy stress σx\sigma_x at load step 50 is shown in Figure 3. The plotted values range from −70.46-70.46 to 101.57 MPa101.57\,\mathit{MPa}.

Figure 3. Longitudinal stress σx\sigma_x [MPa], load step 50.

07

Load-increment sensitivity

The final extrema of the vertical displacement ww, computed with different numbers of load increments, are:

Load incrementswminw_{\mathop{\mathit{min}}} [mm]wmaxw_{\mathop{\mathit{max}}} [mm]
5 (relaxation factor 0.5: S=S-0.5*dS;)−113.311.4116
10−113.371.4142
20−113.431.4165
50−113.481.4181

The difference in ∣wmin∣|w_{\mathop{\mathit{min}}}| between 20 and 50 increments is approximately 0.044%, indicating low sensitivity to further load-increment refinement in this example. The supplied MATLAB main program uses nstep = 20 by default; set nstep = 50 to reproduce Figures 2 and 3.

08

MATLAB program

The MATLAB package contains both stiff.m and stiff_mult.m. Run main.m; select the direct or multiplicative approach using use_mult.

09

Interactive 3D figure

An interactive visualization of the longitudinal stress σx\sigma_x follows. The model can be rotated and enlarged; Reset view restores its initial orientation.

Figure 4. Interactive longitudinal stress σx\sigma_x [MPa], load step 50.