# Programming the Finite Element Method, 4th Edition

# Programming the Finite Element Method, 4th Edition

ISBN: 978-0-470-01124-9 June 2005 646 Pages

## Description

*Programming the Finite Element Method*established themselves as an authority in this area. This fully revised 4th edition includes completely rewritten programmes with a unique description and list of parallel versions of programmes in Fortran 90. The Fortran programmes and subroutines described in the text will be made available on the Internet via anonymous ftp, further adding to the value of this title.

## Table of contents

Acknowledgement.

**1. Preliminaries: Computer Strategies.**

1.1 Introduction.

1.2 Hardware.

1.3 Memory management.

1.4 Vector processors.

1.5 Parallel processors.

1.6 BLAS libraries.

1.7 MPI libraries.

1.8 Applications software.

1.8.1 Arithmetic.

1.8.2 Conditions.

1.8.3 Loops.

1.9 Array features.

1.9.1 Dynamic arrays.

1.9.2 Broadcasting.

1.9.3 Constructors.

1.9.4 Vector subscripts.

1.9.5 Array sections.

1.9.6 Whole-array manipulations.

1.9.7 Intrinsic procedures for arrays.

1.9.8 Additional Fortran 95 features.

1.9.9 Subprogram libraries.

1.9.10 Structured programming.

1.10 Conclusions.

References.

**2. Spatial Discretisation by Finite Elements.**

2.1 Introduction.

2.2 Rod element.

2.2.1 Rod stiffness matrix.

2.2.2 Rod mass element.

2.3 The eigenvalue equation.

2.4 Beam element.

2.4.1 Beam element stiffness matrix.

2.4.2 Beam element mass matrix.

2.5 Beam with an axial force.

2.6 Beam on an elastic foundation.

2.7 General remarks on the discretisation process.

2.8 Alternative derivation of element stiffness.

2.9 Two-dimensional elements: plane strain and plane stress.

2.10 Energy approach.

2.11 Plane element mass matrix.

2.12 Axisymmetric stress and strain.

2.13 Three-dimensional stress and strain.

2.14 Plate-bending element.

2.15 Summary of element equations for solids.

2.16 Flow of fluids: Navier–Stokes equations.

2.17 Simplified flow equations.

2.17.1 Steady state.

2.17.2 Transient state.

2.17.3 Advection.

2.18 Further coupled equations: Biot consolidation.

2.19 Conclusions.

References.

**3. Programming Finite Element Computations.**

3.1 Introduction.

3.2 Local coordinates for quadrilateral elements.

3.2.1 Numerical integration for quadrilaterals.

3.2.2 Analytical integration for quadrilaterals .

3.3 Local coordinates for triangular elements.

3.3.1 Numerical integration for triangles.

3.4 Multi-element assemblies.

3.5 “Element-by-element” or “Mesh-free” techniques.

3.5.1 Conjugate gradient method.

3.5.2 Preconditioning.

3.5.3 Unsymmetric systems.

3.5.4 Symmetric non-positive definite equations.

3.5.5 Symmetric eigenvalue systems.

3.6 Incorporation of boundary conditions.

3.7 Programming using building blocks.

3.7.1 Black box routines.

3.7.2 Special purpose routines.

3.7.3 Plane elastic analysis using quadrilateral elements.

3.7.4 Plane elastic analysis using triangular elements.

3.7.5 Axisymmetric strain of elastic solids.

3.7.6 Plane steady laminar fluid flow.

3.7.7 Mass matrix formation.

3.7.8 Higher-order 2D elements.

3.7.9 Three-dimensional elements.

3.7.10 Assembly of elements.

3.8 Solution of equilibrium equations.

3.9 Evaluation of eigenvalues and eigenvectors.

3.9.1 Jacobi algorithm.

3.9.2 Lanczos algorithm.

3.10 Solution of first order time dependent problems.

3.11 Solution of coupled Navier–Stokes problems.

3.12 Solution of coupled transient problems.

3.12.1 Absolute load version.

3.12.2 Incremental load version.

3.13 Solution of second order time dependent problems.

3.13.1 Modal superposition.

3.13.2 Newmark or Crank–Nicolson method.

3.13.3 Wilson’s method.

3.13.4 Explicit methods and other storage-saving strategies.

References.

**4. Static Equilibrium of Structures.**

4.1 Introduction.

Program 4.1 One-dimensional analysis of axially loaded elastic rods using 2-node rod elements.

Program 4.2 Analysis of elastic pin-jointed frames using 2-node rod elements in two or three dimensions.

Program 4.3 Analysis of elastic beams using 2-node beam elements (elastic foundation optional).

Program 4.4 Analysis of elastic rigid-jointed frames using 2-node beam/rod elements in two or three dimensions.

Program 4.5 Analysis of elastic–plastic beams or rigid-jointed frames using 2-node beam or beam/rod elements in one, two or three dimensions.

Program 4.6 Stability (buckling) analysis of elastic beams using 2-node beam elements (elastic foundation optional).

Program 4.7 Analysis of plates using 4-node rectangular plate elements. Homogeneous material with identical elements. Mesh numbered in *x*- or *y*-direction.

4.2 Concluding remarks.

4.3 Exercises.

References.

**5. Static Equilibrium of Linear Elastic Solids.**

5.1 Introduction.

Program 5.1 Plane or axisymmetric strain analysis of an elastic solid using 3-, 6-, 10-, or 15-node right-angled triangles or 4-, 8-, or 9-node rectangular quadrilaterals. Mesh numbered in *x(r)*- or *y(z)*-direction.

Program 5.2 Non-axisymmetric analysis of an axisymmetric elastic solid using 8-node rectangular quadrilaterals. Mesh numbered in *r*- or *z*-direction.

Program 5.3 Three-dimensional analysis of an elastic solid using 8-, 14-, or 20-node brick hexahedra. Mesh numbered in *x*-*z* planes then in the *y*-direction. Program 5.4 General two- (plane strain) or three-dimensional analysis of elastic solids.

Program 5.5 Three-dimensional strain of an elastic solid using 8-, 14-, or 20-node brick hexahedra. Mesh numbered in *x*-*z* planes then in the *y*-direction. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver.

Program 5.6 Three-dimensional strain of an elastic solid using 8-, 14-, or 20-node brick hexahedra. Mesh numbered in *x*-*z* planes then in the *y*-direction. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver. Vectorised version.

5.2 Exercises.

References.

**6. Material Non-linearity.**

6.1 Introduction.

6.2 Stress–strain behaviour.

6.3 Stress invariants.

6.4 Failure criteria.

6.4.1 Von Mises.

6.4.2 Mohr–Coulomb and Tresca.

6.5 Generation of body loads.

6.6 Viscoplasticity.

6.7 Initial stress.

6.8 Corners on the failure and potential surfaces.

Program 6.1 Plane strain bearing capacity analysis of an elastic–plastic (von Mises) material using 8-node rectangular quadrilaterals. Viscoplastic strain method.

Program 6.2 Plane strain bearing capacity analysis of an elastic–plastic (von Mises) material using 8-node rectangular quadrilaterals. Viscoplastic strain method. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver.

Program 6.3 Plane strain slope stability analysis of an elastic–plastic (Mohr–Coulomb) material using 8-node rectangular quadrilaterals. Viscoplastic strain method.

Program 6.4 Plane strain earth pressure analysis of an elastic–plastic (Mohr–Coulomb) material using 8-node rectangular quadrilaterals. Initial stress method.

6.9 Elasto-plastic rate integration.

6.9.1 Forward Euler method.

6.9.2 Backward Euler method.

6.10 Tangent stiffness approaches.

6.10.1 Inconsistent tangent matrix.

6.10.2 Consistent tangent matrix.

6.10.3 Convergence criterion.

Program 6.5 Plane strain bearing capacity analysis of an elastic–plastic (von Mises) material using 8-node rectangular quadrilaterals. Initial stress method. Tangent stiffness. Consistent return algorithm.

Program 6.6 Plane strain bearing capacity analysis of an elastic–plastic (von Mises) material using 8-node rectangular quadrilaterals. Initial stress method. Tangent stiffness. Consistent return algorithm. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver.

6.11 The geotechnical processes of embanking and excavation.

6.11.1 Embanking.

Program 6.7 Plane strain construction of an elastic–plastic (Mohr–Coulomb) embankment in layers on a foundation using 8-node quadrilaterals. Viscoplastic strain method.

6.11.2 Excavation.

Program 6.8 Plane strain construction of an elastic–plastic (Mohr–Coulomb) excavation in layers using 8-node quadrilaterals. Viscoplastic strain method.

6.12 Undrained analysis.

Program 6.9 Axisymmetric “undrained” strain of an elastic–plastic (Mohr–Coulomb) solid using 8-node rectangular quadrilaterals. Viscoplastic strain method.

Program 6.10 Three-dimensional strain analysis of an elastic–plastic (Mohr–Coulomb) slope using 20-node hexahedra. Viscoplastic strain method.

Program 6.11 Three-dimensional strain analysis of an elastic–plastic (Mohr–Coulomb) slope using 20-node hexahedra. Viscoplastic strain method. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver.

6.13 Exercises.

References.

**7. Steady State Flow.**

7.1 Introduction.

Program 7.1 One-dimensional analysis of steady seepage using 2-node line elements.

Program 7.2 Plane or axisymmetric analysis of steady seepage using 4-node rectangular quadrilaterals. Mesh numbered in *x*(*r*)- or *y*(*z*)- direction.

Program 7.3 Analysis of plane free-surface flow using 4-node quadrilaterals. “Analytical” form of element conductivity matrix.

Program 7.4 General two- (plane) or three-dimensional analysis of steady seepage.

Program 7.5 General two- (plane) or three-dimensional analysis of steady seepage.

No global conductivity matrix assembly. Diagonally preconditioned conjugate gradient solver.

7.2 Exercises.

References.

**8. Transient Problems: First Order (Uncoupled).**

8.1 Introduction.

Program 8.1 One-dimensional consolidation analysis using 2-node line elements. Implicit time integration using the “theta” method.

Program 8.2 Plane or axisymmetric consolidation analysis using 4-node rectangular quadrilaterals. Mesh numbered in *x*(*r*)- or *y*(*z*)-direction. Implicit time integration using the “theta” method.

8.2 Mesh-free Strategies in Transient Analysis.

Program 8.3 Plane or axisymmetric consolidation analysis using 4-node rectangular quadrilaterals. Mesh numbered in *x*(*r*)- or *y*(*z*)-direction. Implicit time integration using the “theta” method. No global stiffness matrix assembly. Diagonal preconditioner conjugate gradient solver.

Program 8.4 Plane or axisymmetric analysis of the consolidation equation using 4-node rectangular quadrilaterals. Mesh numbered in *x*(*r*)- or *y*(*z*)-direction. Explicit time integration using the “theta = 0” method.

Program 8.5 Plane or axisymmetric analysis of the consolidation equation using 4-node rectangular quadrilaterals. Mesh numbered in *x*(*r*)- or *y*(*z*)-direction. “theta” method using an element-by-element product algorithm.

8.3 Comparison of Programs 8.2, 8.3, 8.4, and 8.5.

Program 8.6 General two- (plane) or three-dimensional analysis of the consolidation equation. Implicit time integration using the “theta” method.

Program 8.7 Plane analysis of the diffusion–convection equation using 4-node rectangular quadrilaterals. Implicit time integration using the “theta” method. Self-adjoint transformation.

Program 8.8 Plane analysis of the diffusion–convection equation using 4-node rectangular quadrilaterals. Implicit time integration using the “theta” method. Untransformed solution.

8.4 Exercises.

References.

**9. Coupled Problems.**

9.1 Introduction.

Program 9.1 Analysis of the plane steady state Navier–Stokes equation using 8-node rectangular quadrilaterals for velocities coupled to 4-node rectangular quadrilaterals for pressures. Mesh numbered in *x*- or *y*-direction. Freedoms numbered in the order *u*-*p*-*v.*

Program 9.2 Analysis of the plane steady state Navier–Stokes equation using 8-node rectangular quadrilaterals for velocities coupled to 4-node rectangular quadrilaterals for pressures. Mesh numbered in *x*- or *y*-direction. Freedoms numbered in the order *u*-*p*-*v*. Element-by-element solution using BiCGStab(l) with no preconditioning. No global matrix assembly.

Program 9.3 Plane strain consolidation analysis of a Biot poro-elastic solid using 8-node rectangular quadrilaterals for displacements coupled to 4-node rectangular quadrilaterals for pressures. Freedoms numbered in the order *u*-*v*-*u** _{w}*. Incremental version.

Program 9.4 Plane strain consolidation analysis of a Biot poro-elastic-plastic (Mohr–Coulomb) material using 8-node rectangular quadrilaterals for displacements coupled to 4-node rectangular quadrilaterals for pressures. Freedoms numbered in the order *u*-*v*-*u** _{w}*. Incremental version. Viscoplastic strain method.

Program 9.5 Plane strain consolidation analysis of a Biot poro-elastic solid using 8-node rectangular quadrilaterals for displacements coupled to 4-node rectangular quadrilaterals for pressures. Freedoms numbered in the order *u*-*v*-*u** _{w}*. Absolute load version. No global stiffness matrix assembly. Diagonally preconditioned conjugate gradient solver.

9.2 Exercises.

References.

**10. Eigenvalue Problems.**

10.1 Introduction.

Program 10.1 Eigenvalue analysis of elastic beams using 2-node beam elements. Lumped mass.

Program 10.2 Eigenvalue analysis of an elastic solid in plane strain using 4- or 8-node rectangular quadrilaterals. Lumped mass. Mesh numbered in *x*- or *y*-direction.

Program 10.3 Eigenvalue analysis of an elastic solid in plane strain using 4-node rectangular quadrilaterals. Lanczos Method. Consistent mass. Mesh numbered in *x*- or *y*-direction.

Program 10.4 Eigenvalue analysis of an elastic solid in plane strain using 4-node rectangular quadrilaterals. Lanczos Method. Lumped mass. Element-byelement formulation. Mesh numbered in *x*- or *y*-direction.

10.2 Exercises.

References.

**11. Forced Vibrations.**

11.1 Introduction.

Program 11.1 Forced vibration analysis of elastic beams using 2-node beam elements. Consistent mass. Newmark time stepping.

Program 11.2 Forced vibration analysis of an elastic solid in plane strain using 4- or 8-node rectangular quadrilaterals. Lumped mass. Mesh numbered in *x*- or *y*-direction. Modal superposition.

Program 11.3 Forced vibration analysis of an elastic solid in plane strain using rectangular 8-node quadrilaterals. Lumped or consistent mass. Mesh numbered in *x*- or *y*-direction. Implicit time integration using the “theta” method.

Program 11.4 Forced vibration analysis of an elastic solid in plane strain using rectangular 8-node quadrilaterals. Lumped or consistent mass. Mesh numbered in *x*- or *y*-direction. Implicit time integration using Wilson’s method.

Program 11.5 Forced vibration analysis of an elastic solid in plane strain using rectangular uniform size 4-node quadrilaterals. Mesh numbered in the *x*or *y*-direction. Lumped or consistent mass. Mixed explicit/implicit time integration.

Program 11.6 Forced vibration analysis of an elastic solid in plane strain using rectangular 8-node quadrilaterals. Lumped or consistent mass. Mesh numbered in *x*- or *y*-direction. Implicit time integration using the “theta” method. No global matrix assembly. Diagonally preconditioned conjugate

gradient solver.

Program 11.7 Forced vibration analysis of an elastic–plastic (von Mises) solid in plane strain using rectangular 8-node quadrilateral elements. Lumped mass. Mesh numbered in *x*- or *y*-direction. Explicit time integration.

11.2 Exercises.

References.

**12. Parallel Processing of Finite Element Analyses.**

12.1 Introduction.

12.2 Differences between parallel and serial programs.

12.2.1 Parallel libraries.

12.2.2 Global variables.

12.2.3 MPI library routines.

12.2.4 The pp appendage.

12.2.5 Reading and writing.

12.2.6 Problem-specific boundary condition routines.

12.2.7 rest instead of nf.

12.2.8 Gathering and scattering.

12.2.9 Reindexing.

12.2.10 Domain composition.

12.2.11Load balancing.

Program 12.1 Three dimensional analysis of an elastic solid. Compare Program 5.5.

Program 12.2 Three dimensional analysis of an elasto-plastic (Mohr–Coulomb) solid. Compare Program 6.11.

Program 12.3 Three dimensional Laplacian flow. Compare Program 7.5.

Program 12.4 Three dimensional transient flow- implicit analysis in time. Compare Program 8.3.

Program 12.5 Three dimensional transient flow-explicit analysis in time. Compare Program 8.4.

Program 12.6 Three dimensional steady state Navier–Stokes analysis. Compare Program 9.2.

Program 12.7 Three-dimensional analysis of Biot poro-elastic solid. Compare Program 9.2.

Program 12.8 Eigenvalue analysis of three-dimensional elastic solid. Compare Program 10.4.

Program 12.9 Forced vibration analysis of a three-dimensional elastic solid. Implicit integration in time. Compare Program 11.4.

Program 12.10 Forced vibration analysis of three-dimensional elasto-plastic solid. Explicit integration in time. Compare Program 11.5.

12.3 Performance data for a “Beowulf” PC cluster.

12.4 Conclusions.

References.

A. Equivalent Nodal Loads.

B. Shape Functions and Element Node Numbering.

C. Plastic Stress–strain Matrices and Plastic Potential Derivatives.

D. main Library Subroutines.

E. geom Library Subroutines.

F. Parallel Library Subroutines.

Author Index.

Subject Index.

## New To This Edition

## Features

- Includes parallelised programs using MPI (Message Passage Interface)
- Gives an updated version of Fortran (all the Fortran programs and subroutines are listed in full in the text but will also be made available on the Internet via anonymous ftp)
- Provides a clear outline of modular programming philosophy
- Includes more than 60 programs covering a wide range of problems in engineering and science.
- Includes exercises for students to solve