G.P.Nikishkov, Programming Finite Elements in Java. Springer, 2010, 402 pp. [Springer]  [Amazon]

Programming Finite Elements in Java teaches the reader FEM algorithms and their programming in Java™ through a single finite element Java program. The compact, simple code makes it straightforward to understand the algorithms and their implementation, thereby encouraging developers to extend the code to their own tasks. All of the main aspects of finite element techniques are considered:

• finite element solution;
• generation of finite element meshes; and
• visualization of finite element models and results with Java 3D™.

Graduate students using the FEM will find the simple but detailed object-oriented programming methods presented in this textbook to be of great assistance in understanding the FEM, including mesh generation and visualization.  Programming Finite Elements in Java™ will also be of interest to senior undergraduates doing special studies encompassing the FEM. Researchers and practicing engineers already familiar with the FEM but seeking an alternative approach will find this book readily suited to self study.

Contents

Part I Finite Element Formulation

1 Introduction
1.1 Basic Ideas of FEM
1.2 Formulation of Finite Element Equations
1.3 Example of Shape-function Determination

2 Finite Element Equations for Heat Transfer
2.1 Problem Statement
2.2 Finite Element Discretization of Heat Transfer Equations
2.3 Different Type Problems
2.4 Triangular Element

3 FEM for Solid Mechanics Problems
3.1 Problem Statement
3.2 Finite Element Equations
3.3 Stiffness Matrix of a Triangular Element
3.4 Assembly of the Global Equation System
3.5 Example of the Global MatrixAssembly

4 Finite Element Program
4.1 Object-oriented Approach to Finite Element Programming
4.2 Requirements for the Finite Element Application
4.3 General Structure of the Finite Element Code

Part II Finite Element Solution

5 Finite Element Processor
5.1 Class Structure
5.2 Problem Data
5.3 Data Scanner

6 Finite Element Model
6.1 Data for the Finite Element Model
6.2 Class for the Finite Element Model

7 Elastic Material
7.1 Hooke’s Law
7.2 Class for aMaterial
7.3 Class for ElasticMaterial

8 Elements
8.1 Element Methods
8.2 Abstract Class Element

9 Numerical Integration
9.1 Gauss Integration Rule
9.2 Implementation of Numerical Integration

10 Two-dimensional Isoparametric Elements
10.1 Shape Functions
10.2 Strain–Displacement Matrix
10.3 Element Properties
10.4 Nodal Equivalent of the Surface Load
10.5 Example: Computing Nodal Equivalents of a Distributed Load
10.6 Calculation of Strains and Stresses

11 Implementation of Two-dimensional Quadratic Element
11.1 Class for Shape Functions and Their Derivatives
11.2 Class for Eight-node Element

12 Three-dimensional Isoparametric Elements
12.1 Shape Functions
12.2 Strain–Displacement Matrix
12.3 Element Properties
12.4 Efficient Evaluation of Element Matrices and Vectors
12.5 Calculation of Nodal Equivalents for External Loads
12.6 Example:Nodal Equivalents of a Distributed Load
12.7 Calculation of Strains and Stresses
12.8 Extrapolation of Strains and Stresses

13 Implementation of Three-dimensional Quadratic Element
13.1 Class for Shape Functions and Their Derivatives
13.2 Class for Twenty-node Element

14 Assembly and Solution
14.1 Disassembly and Assembly
14.2 Displacement Boundary Conditions
14.3 Solution of Finite Element Equations
14.4 Abstract Solver Class

15 Direct Equation Solver
15.1 LDU SolutionMethod
15.2 Assembly of Matrix in Symmetric Profile Format
15.3 LDU Solution Algorithm
15.4 Tuning of the LDU Factorization

16 Iterative Equation Solver
16.2 Assembly of Matrix in Sparse-row Format
16.3 PCG Solution

18 Stress Increment, Residual Vector and Results
18.1 Computing Stress Increment
18.2 Residual Vector
18.3 Results
18.4 Solution of a Simple Test Problem

19 Elastic–Plastic Problems
19.1 Constitutive Relations for Elastic–Plastic Material
19.2 Computing Finite Stress Increments
19.3 Material Deformation Curve
19.4 Implementation of Elastic–Plastic Material Relations
19.5 Midpoint Integration of Constitutive Relations
19.6 Nonlinear Solution Procedure
19.7 Example: Solution of an Elastic–Plastic Problem

Part III Mesh Generation

20 Mesh Generator
20.1 Block Decomposition Method
20.2 Class Structure
20.3 Mesh-generation Modules

21 Two-dimensional Mesh Generators
21.1 Rectangular Block
21.2 Mesh Inside Eight-node Macroelement
21.3 Example of Mesh Generation

22 Generation of Three-dimensional Meshes by Sweeping
22.1 Sweeping Technique
22.2 Implementation
22.3 Example of Mesh Generation

23 Pasting Mesh Blocks
23.1 Pasting Technique
23.2 Implementation

24 Mesh Transformations
24.1 Transformation Relations
24.2 Implementation
24.3 Example of Using Transformations

25 Copying, Writing and Reading Mesh Blocks
25.1 Copying
25.2 Writing Mesh to File

Part IV Visualization of Meshes and Results

26 Introduction to Java 3D
26.1 Rendering Three-dimensional Objects
26.2 Scene Graph
26.3 Scene Graph Nodes
26.4 Node Components

27 Visualizer
27.1 Visualization Algorithm
27.2 Surface of the Finite Element Model
27.4 Class Structure of the Visualizer
27.5 Visualizer Class
27.6 Input Data

28 Visualization Scene Graph
28.1 Schematic of the Scene Graph
28.2 Implementation of the Scene Graph
28.3 Shape Objects

29 Surface Geometry
29.1 Creating Geometry of the Model Surface
29.2 Surface Faces
29.3 Surface Edges and Nodes
29.4 Modification of Nodal Coordinates

30 Edge and Face Subdivision
30.1 Subdivision for Quality Visualization
30.2 Edge Subdivision
30.3 Face Subdivision

31 Surface Subdivision
31.1 Subdivision of the Model Surface
31.2 Subdivision of Faces into Triangles
31.3 Arrays for Java 3D

32 Results Field, Color Scale, Interaction and Lights
32.1 Results Field
32.2 Color Scale
32.3 Mouse Interaction
32.4 Lights and Background
32.5 Visualization Example

A Data for Finite Element Solver
B Data for Mesh Generation

C Data for Visualizer
D Example of Problem Solution

References
Index

G.P.Nikishkov  *  http://www.u-aizu.ac.jp/~niki   *  2010-12-28