Vous êtes sur la page 1sur 151

Institute of Earthquake Engineering and Engineering Seismology,

University Ss. Cyril and Methodius Skopje, Republic of Macedonia

FINITE ELEMENT METHOD

Assoc. Prof. Dr. Viktor Hristovski

Associated Professor Dr. Viktor Hristovski

Application of Finite Element Method in Structural Analysis

Table of Contents
Chapter 1: Introduction

Chapter 2: Matrices, Vectors and Tensors

Chapter 3: Discrete and Continuous Mathematical Models

13

Chapter 4: Weighted-Integral and Weak Formulations

25

Chapter 5: Finite Elements of an Elastic Continuum

41

Chapter 6: Plane Stress and Plane Strain

49

Chapter 7: Axisymmetric Stress Analysis

57

Chapter 8: Three-dimensional Stress Analysis

65

Chapter 9: Shape Funtions

69

Chapter 10: Mapped Elements and Numerical Integration

81

Chapter 11: Patch Test for Element Validation

93

Chapter 12: Implementation of the Iso-parametric Elements Into a


Computer Code

99

Chapter 13: Solution of Equilibrium Equations in Static Analysis

131

Appendix 1: Bibliography

137

Appendix 2: Application of Finite Element Method in Nonlinear


Analysis of RC Structures

139

Associated Professor Dr. Viktor Hristovski

Application of Finite Element Method in Structural Analysis

CHAPTER 1

Introduction
Finite Element Method is becoming an important and frequently indispensable part of engineering
analysis and design. There are many finite element based computer programs, which are widely used
in practically all branches of engineering for the analysis of structures, solids and fluids.
The development of finite element methods and procedures for the solution of practical
engineering problems began with the advent of the digital computers. The two properties:
effectiveness and general applicability in engineering analysis, have contributed that the finite element
method be developed to a high degree for practical computations, finding wide appeal in engineering
practice.
The roots of the finite element method can be traced back to three separate research groups:
applied mathematicians, physicists and engineers. Practically, the finite element method obtained its
real impetus from the developments of engineers. Among the first original contributions can be
regarded the investigations and publications by Argyris, Kelsey, Turner, Clough, Martin, Topp etc.
The name finite element was coined in the paper The Finite Element Method in Plane Stress
Analysis, published in September 1960. Since the early 1960s, a large amount of research has been
devoted to the technique and a very large number of publications on the finite element method is
available.
The finite element method in engineering was initially developed on a physical basis for the
analysis of problems in structural mechanics. However, it was soon recognized that the technique
could be applied equally well to the solution of many other classes of problems.
The finite element method is used to solve physical problem in engineering analysis and
design. The figure 1.1 summarizes the process of finite element analysis. The physical problem is
usually an actual structure or structural component subjected to certain loads.
The idealization of the physical problem to a mathematical model requires certain assumptions
that together lead to differential equations governing the mathematical model.
The finite element analysis solves this mathematical model.
Since the finite element solution technique is a numerical procedure, it is necessary to assess
the solution accuracy. If the accuracy criteria are not met, the numerical solution has to be repeated
with refined solution parameters until a sufficient accuracy is reached.
It is clear that the finite element analysis will solve only the selected mathematical model and
that all assumptions in this model will be reflected in the predicted response.
Once a mathematical model has been solved accurately and the results have been interpreted,
we may decide either to refine the analysis, or to use the obtained actual results for design
improvements. If we need further to make structural optimization, we may need to change the physical
problem and consequently to establish a new mathematical model which has to be solved again.
Hence, the key step in engineering analysis is choosing appropriate mathematical models.
These models should be selected depending on what phenomena are to be predicted. Also, it is very
important to select mathematical models that are reliable and effective in predicting the needed
quantities and phenomena.

Associated Professor Dr. Viktor Hristovski

The most effective mathematical model for the analysis is surely that one which yields the
required response to a sufficient accuracy and at least cost.
The chosen mathematical model is reliable if the required response is known to be predicted
within a selected level of accuracy compared to the response of the very comprehensive mathematical
model.

Figure 1.1 Finite element proccess

Application of Finite Element Method in Structural Analysis

CHAPTER 2

Matrices, Vectors and Tensors


The use of vectors, matrices and tensors is of fundamental importance in engineering analysis, because
using these quantities the complete solution process can be expressed in a compact and elegant
manner. We will start with matrices.

Matrices
Definition 1: A matrix is an array of ordered numbers. A general matrix consists of m x n numbers
arranged in m rows and n columns, giving the array as follows:

a11
a
A = 21
.

a m1

a12
a 22
.
am 2

... a1n
... a 2 n
.
.

... a mn

(2.1)

Definition 2: The transpose of the m x n matrix A, or AT, is obtained by interchanging the rows and
columns in A.
If A = AT, it follows that the number of rows and columns in A are equal and that aij=aji.
Because m=n, we say that A is a square matrix of order n. Also, because aij=aji, we say that A is a
symmetric matrix.
Definition 3: The matrices A and B are equal if and only if:
1. A and B have the same number of rows and columns;
2. All corresponding element are equal, i.e. aij=bij for all i and j.
Definition 4: Two matrices A and B can be added if and only if they have the same number of rows
and columns. The addition of the matrices is performed by adding all corresponding elements, i.e. if aij
and bij denote general elements of A and B, respectively, then cij = aij + bij denotes a general element of
C where C=A+B. It follows that C has the same number of rows and columns as A and B.
Definition 5: A matrix is multiplied by a scalar by multiplying each matrix element by the scalar, i. e.
C=kA means that cij = k aij.
Definition 6: Two matrices A and B can be multiplied to obtain C=AB if and only if the number of
columns in A is equal to the number of rows in B. Assume that A is of order p x m and B is of order m
x q. Then for each element in C we have:
m

cij = air brj


r =1

where C is of order p x q, i.e. the indices i and j vary from 1 to p and 1 to q, respectively.

(2.2)

Associated Professor Dr. Viktor Hristovski


-1

Definition 7: The inverse of a matrix A is denoted by A . Assume that the inverse exists; then the
-1
-1
-1
elements of A are such that A A =I and A A =I. A matrix that possesses an inverse is said to be
nonsingular. A matrix without an inverse is a singular matrix.
Definition 8: The trace of the matrix A is denoted as tr(A) and is equal to
n

tr (A) = aii

(2.3)

i =1

The trace of a matrix is defined only if the matrix is square, i.e. m = n.


Definition 9: The determinant of an n x n matrix A is denoted as det A and is defined by the
recurrence relation:
n

detA = (1)1+ j a1 j detA1 j

(2.4)

j =1

where A1j is the (n-1) x (n-1) matrix obtained by eliminating the 1st row and jth column from the
matrix A.

Vector Spaces
According to the previous section we can define a vector of order n to be an array of n numbers
written in matrix form. We now want to associate a geometric interpretation with the elements of a
vector.
We should note that the geometric representation of a vector depends completely on the
coordinate system chosen. In other words, if a vector x would give the components of a vector in a
different coordinate system, then the geometric representation of x would be different from the one in
the Fig. 2.1.

Figure 2.1 Geometric representation of a vector

Definition 10: A collection of vectors x1, x2, , xs is said to be linearly dependent if there exist
numbers 1, 2, ,s which are not all zero, such that:

1x1 + 2 x 2 + ... + s x s = 0

(2.5)

If the vectors are not linearly dependent, they are called linearly independent vectors.

Application of Finite Element Method in Structural Analysis

Definition 11: q vectors, of which p vectors are linearly independent, are said to span a p-dimensional
vector space.

Definition of Tensors
In engineering analysis, the concept of tensors and their matrix representation can be important.
Let the Cartesian coordinate frame be defined by the unit base vectors ei (Fig.2.2).

Figure 2.2 Unit base vectors in unprimed and primed coordinates systems

A vector u in this frame is given by:


3

u = ui e i

(2.6)

i =1

In tensor algebra it is convenient for the purpose of a compact notation to omit the summation
sign. So, instead of the above expression we simply write:

u = ui e i

(2.7)

The scalar (or dot) product of two vectors u and v is given by:

u v = u v cos = ui vi

(2.8)

The vector (or cross) product of two vectors u and v produces a new vector w=u x v:

e1 e 2
w = uxv = det u1 u2
v1 v2

e3
u3
v3

(2.9)

Definition 12: An entity is called a scalar if it has only a single component in the coordinates xi
measured along ei and this component does not change when expressed in the coordinates xi measured
along ei:

( x1 , x2 , x3 ) = ' ( x1 ' , x2 ' , x3 ' )


A scalar is also a tensor of order 0.

(2.10)

Associated Professor Dr. Viktor Hristovski

Definition 13: An entity is called a vector or tensor of first order if it has three components qi in the
unprimed frame and three components qi in the primed frame, and if these components are related by
the characteristic law (using summation convention):

qi = pik qk

(2.11)

pik = cos(ei' , e k )

Definition 14: An entity is called a second-order tensor if it has nine components tij, i=1,2,3, and
j=1,2,3 in the unprimed frame and nine components tij in the primed frame and if these components
are related by the characteristic law:

tij = pik p jl t kl

(2.12)

Exercises
1. Calculate C=k(A+B)B, where k=0.3 and

1 2 2
3 8 4

A = 0 2 5 , B = 1 8 4
2 1 7
3 9 2
Solution:

4 10 6
A + B = 1 10 9
5 10 9

40 166 68
( A + B)B = 40 169 62
52 201 78

12 49.8 20.4
C = 12 50.7 18.6
15.6 60.3 23.4

2. Calculate A , where

3 2
A=

2 4
Solution:

3 2 3 2 13 14
A2 =

2 4 2 4 14 20

13 14 13 14 365 462
A4 = A2A2 =

14 20 14 20 462 596

3. Calculate v Av, where A is the same matrix as in Exercise 1 and v is:

2

v = 1
4

Solution:

1 2 2 2

v Av = {2 1 4}0 2 5 1 = 178
2 1 7 4
T

10

Application of Finite Element Method in Structural Analysis

4. Calculate A-1, where:

2 2 2
A = 2 1 2
2
2 1
Solution:

1 2

2 1
2 2
adjA =
2 1
2 2
1 2

A 1 =

adjA
detA

2 2

2 1
2 2
2 1
2 2

2 2

2
2
2

2
2
2

T
2
3 6 6
3 6 6
2

= 6 2 8 = 6 2 8
2
6 8 2
6 8 2
2
1

detA = 2 x1x1 + (2) x 2 x 2 + 2 x(2) x 2 [(2 x1x 2) + 2 x 2 x 2 + 1x(2) x(2)] = 30

3 6 6 0 .1 0 .2 0 .2
1
A = 6 2 8 = 0.2 0.06 0.26
30
6 8 2 0.2 0.26 0.06
1

2 2 2 0.1 0.2 0.2 1 0 0

Check: AA = 2 1 2 0.2 0.06 0.26 = 0 1 0

2
2 1 0.2 0.26 0.06 0 0 1
1

5. Calculate the trace and determinant of the matrix A, where :

2 1 0
A = 1 3 1
0 1 2
Solution:
n

tr (A) = aii =2+3+2=7


i =1

n
3 1
1 1
1 3
2
3
4
detA = (1)1+ j a1 j detA1 j = ( 1) (2)det
+ ( 1) (1)det
+ ( 1) (0 )det

=
j =1
1 2
0 2
0 1
= 2 x(3 x 2 1x1) 1x(1x 2 0 x1) + 0 x(1x1 3x0) = 10 2 + 0 = 8

6. Investigate whether the following vectors are linearly dependent or independent:

v1T = {2 2 0 1}

v T2 = { 2 0 2 0}

v T3 = {0 1 1 0.5}

Solution:
The vectors are linearly dependent if if there exist numbers 1, 2, ,s which are not all zero, such
that:

11

Associated Professor Dr. Viktor Hristovski

1 v1 + 2 v 2 + 3 v 3 = 0
2 1 2 2 = 0
2 = 0
1
3

2 2 3 = 0
1 0.5 3 = 0

0
2
2
1
2
0



1 + 2 + 3
=0

1
0
2



0.5
1
0

1 = 2
, or, for example
3 = 2 1 = 2 2

The system is satisfied for

1 = 2 = 1
,

3 = 2 1 = 2 2 = 3

hence, the vectors are linearly dependent.


7. Consider the following vectors :

u T = {6 6 0}

v T = {0 4 4}

Calculate the angle between these vectors and establish a vector perpendicular to the plane
that is defined by these vectors
Solution:

cos =

0 x6 + 4 x6 + 4 x0
24
uv
=
= 0.5, = 60 o
=
2
2
2
2
48
uv
6 +6 x 4 +4

e1 e 2
w = u x v = det u1 u 2
v1 v2

e3
e1 e 2

u3 = det 6 6
0 4
v3

e3
0 = 24e1 24e 2 + 24e 3
4

8. The components of a force epressed in the unprimed coordinate system are:

RT = 0 2 2 3

Evaluate the components of the force in the primed coordinate system if the angle =300.
Solution:

0
1

P = 0 cos
0 sin

0
sin
cos

0
1

R = PR = 0 cos 30 0
0 sin 30 0
'

( )
( )

0 0


sin 30 2 = 2 3
cos 30 0 2 3 2
0

( )
( )
0

12

Application of Finite Element Method in Structural Analysis

CHAPTER 3

Discrete and Continuous Mathematical


Models
In the previous lesson we saw that the development of the finite element method was dictated by two
parallel approaches: mathematical and engineering. In this lecture we will discuss the formulation of
the finite element method from the engineering point of view.
The analysis of an engineering system requires: the idealization of the system into a form that
can be solved, the formulation of the mathematical model, the solution of this model and the
interpretation of the results. In order to solve the mathematical model we will use some classical
techniques which are intuitively related to the finite element method.
Two categories of mathematical models will be considered: lumped-parameter models (or
discrete-system models) and continuous-system models.
In a discrete-system mathematical model, the actual system response is directly described by
the solution of a finite number of state variables. For a continuous-system model, the formulation of
the governing equations is achieved as for a discrete-system model, but instead of set of algebraic
equations for the unknown state variables, differential equations govern the response. The exact
solution of the differential equations satisfying all boundary conditions is possible only for relatively
simple mathematical models, and numerical procedures must be in general employed.
In practice, the analyst must decide whether an engineering system should be represented by a
discrete-system or a continuous-system mathematical model.

Discrete-system models
In this lecture we will discuss some general procedures that are employed to obtain the
governing equations of discrete-system models and briefly show how these classical procedures
provide basis for modern finite element methods.
The essence of a discrete-system mathematical model is that the state of the system can be
described directly with adequate precision by the magnitudes of a finite (and usually small) number of
state variables. The solution requires the following steps:
1.System idealization: the actual system is idealized as an assemblage of elements
2. Element equilibrium: the equilibrium requirements of each element are established in terms
of state variables
3. Element assemblage: the element interconnection requirements are invoked to establish a
set of simultaneous equations for the unknown state variables
4. Calculation of response: the simultaneous equations are solved for the state variables, and
using the element equilibrium requirements, the response of each element is calculated.
These steps of solution are followed in the analyses of different types of problems like:
1. Steady-state problems
2. Propagation problems
3. Eigenvalue problems.

13

Associated Professor Dr. Viktor Hristovski

The objective of this lecture is to provide and introduction showing how problems in these
particular areas are analyzed and to briefly discuss the nature of the solutions. In general, we can
consider structural, electrical, fluid flow and heat transfer problems, emphasizing that in each of these
analyses the same basic steps of solution are followed.

Steady-state problems
The main characteristic of a steady-state problem is that the response of the system does not
change with time. Thus, the state variables describing the response of the system under consideration
can be obtained from the solution of a set of equations that do not involve time as a variable. Such
problems could be the following: 1.Elastic spring system; 2.Heat transfer system; 3. Hydraulic
network; 4. DC network; 5. Nonlinear elastic spring system etc.
Examples
1. Consider a system of three rigid carts on a horizontal plane that are interconnected by a system of
linear elastic springs. Calculate the displacements of the carts and the forces in the springs for the
given loading.

Fig.3.1 Physical layout of the system of rigid carts


Given: R1=20, R2=15, R3=10, k1=5k, k2=2k, k3=3k, k4=3k, k5=2k
Solution: We perform the analysis by following the previously mentioned four steps. As state variables
that characterize the response of the system we choose the displacements U1, U2 and U3.
To generate the governing equations for the state variables we invoke the element
interconnection requirements, which correspond to the static equilibrium of the three carts:

F1(1) + F1( 2 ) + F1( 3) + F1( 4 ) = R1


F2( 2) + F2( 3) + F2( 5) = R2
F3( 4 ) + F3(5) = R3
From the element equilibrium relations we obtain:
Element 1:

k1 0 0 u1 F
0 0 0 u = 0
2

0 0 0 u3 0

(1)
1

k1

14

F1(1) , u1

Application of Finite Element Method in Structural Analysis

Element 2:

k2
k
2
0

k2

k2
0

0 u1 F1( 2 )


0 u 2 = F2( 2 )
0 u3 0

Element 3:

k3
k
3
0

k3

k3
0

0 u1 F1( 3)


0 u 2 = F2( 3)
0 u3 0

Element 4:

k4
0

k 4

0 k 4 u1 F


0 0 u 2 = 0
0 k 4 u3 F3( 4)
( 4)
1

Element 5:

0 0
0 k
5

0 k 5

0 u1 0


k 5 u 2 = F2( 5)
k 5 u 3 F3( 5)

F1( 2 ) , u1

k2

F1( 3) , u1

k3

F2( 3) , u 2

F1( 4 ) , u1

k4

F3( 4) , u3

F2( 5) , u 2

k5

F3( 5) , u3

If we make summation of all these relations, using K =

K
el =1

5k + 2k + 3k + 3k
K = (2k + 3k )

3k

F2( 2) , u 2

(2k + 3k )

el

, we obtain:

3k 13k
2k + 3k + 2k
2k = 5k
2k
3k + 2k 3k

5k
7k
2k

3k
2k
5k

and the system of equations:

KU = R

13ku1 5ku 2 3ku3 = 20


5ku1 + 7 ku 2 2ku3 = 15
3ku1 2ku 2 + 5ku3 = 10
from where the displacements u1, u2, and u3 can be calculated, and consequently all forces in the
spring elements.
2. A wall is constructed of two homogeneous slabs in contact as shown in the Fig. 3.2. In steady-state
conditions the temperatures in the wall are characterized by the external surface temperatures 1
and 3 and internal interface temperature 2. Establish the equilibrium equations of the problem in
terms of these temperatures when the ambient temperatures 0 and 4 are known.
Given: C1=3k, C2=2k, C3=3k, C4=2k

15

Associated Professor Dr. Viktor Hristovski

q
= k , where q is the total heat flow, A is the area, is
A
the temperature drop in the direction of heat flow, and k is the conductance or surface coefficient. The

Solution: The heat conduction law is

state variables in this analysis are 1, 2 and 3. Using the heat conduction law, the element
equilibrium equations (per unit area) are:
For left surface:

q1 = 3k ( 0 1 )

For the left slab:

q 2 = 2k (1 2 )

For the right slab:

q3 = 3k ( 2 3 )

For the right surface:

q4 = 2k ( 3 4 )

Fig.3.2 Slab subjected to temperature boundary conditions


In order to obtain the governing equations for the state variables, we invoke the heat flow
equilibrium requirement: q1=q2=q3=q4. Thus, we have:

3k ( 0 1 ) = 2k (1 2 )

2k (1 2 ) = 3k ( 2 3 )

3k ( 2 3 ) = 2k ( 3 4 )
or, in matrix form:

5k
2k

2k
5k
3k

0 1 3k 0

3k 2 = 0
5k 3 2k 4

The same equilibrium equations can be also derived using a direct stiffness procedure, with
the typical element equilibrium relations:

16

Application of Finite Element Method in Structural Analysis

1 1 i qi
k
=
1 1 j q j
and using the analogy between the previous spring system (Fig.3.3).

2k

3k

2k

3k

u1=1

u2=2

u3=3

Fig.3.3 Equivalent spring system


So, for known k, 0 and 4, we can find the temperatures 1, 2 and 3 and then calculate the
total heat flow q.
3.

Establish the equations that govern the steady-state pressure and flow distributions in the
hydraulic network shown in the Figure 3.4. Assume the fluid to be incompressible and the
pressure drop in a branch to be proportional to the flow q through that branch p = Rq where R
is the branch resistance coefficient.

Fig.3.4 Pipe network


We assume that the pressure at B is zero: pB=0. The pressures pA, pC and pD are state variables of
the problem. In this analysis the elements are the individual branches of the pipe network.
Given: R1=10b, R2=rb, R3=2b, R4=3b, R5=5b
Solution: For the elements (branches) we have:

p A pB
p
= A
10b
10b
p pC
q 2 / AC = A
5b
pC p D
q3 =
2b
p pB pD
q 2 / DB = D
=
5b
5b
p pD
q4 = C
3b

q1 =

Using the continuity of flow, we have:

Q = q1 + q 2
and

17

Associated Professor Dr. Viktor Hristovski

q2 / AC = q3 + q4
q2 / DB = q3 + q4
Substituting, we have:

p A pC pC p D pC p D
=
+
5b
2b
3b
p D pC p D pC p D
=
+
5b
2b
3b
p pC
p
p
p
Q= A + D = A + A
10b 5b 10b
5b
The resulting equations in matrix form are:

0 p A 10bQ
3 2
6 31 25 p = 0

1 1
1 p D 0
or

6
0 p A 30bQ
9
6 31 25 p = 0

0 25 31 p D 0
These equilibrium equations can also be derived using the direct stiffness method with the
typical element equilibrium relations

1 1 1 pi qi
= .
R 1 1 p j q j

From these equations we can solve pA, pC and pD and calculate the flows q1, q2, q3 and q4.

Variational formulation
In the previous discussion we employed the direct approach of assembling the system-governing
equilibrium equations. An important point is that the governing equilibrium equations for state
variables can in many analyses also be obtained using variational (extremum) formulation. An
extremum problem consists of locating the set of values Ui, i=1, ,n , for which a given functional
(Ui, , Un) is a maximum, is a minimum or has a saddle point. The condition for obtaining the
equations for the state variables is:

= 0

(3.1)

and since

U1 + ... +
U n
U1
U n

(3.2)

we must have

=0
U i

for i = 1,..., n

(3.3)

In the solution of discrete-systems we can considered that is defined such that the last
relations generate the governing equilibrium equations. For example, in linear structural analysis,
when displacements are used as state variables, is the total potential:

18

Application of Finite Element Method in Structural Analysis

= U W

(3.4)

where U is the strain energy of the system and W is the total potential of the loads. The solution for
the state variables corresponds in this case to the minimum of .
For example, consider a simple linear elastic spring (Fig. 3.5) of stiffness k and applied force
F. We will use the variational formulation to generate the governing equilibrium equation of the
system.

Fig.3.5 Example of simple spring


The total potential energy of the system can be calculated as follows:

= U W
where U is the strain energy of the system and W is the total potential of the external force F. Let u be
the displacement of the spring under the load F. Then, we have:

U = 12 ku 2

(related to the internal force Fs)

W = Fu

(related to the external load F)

= 12 ku 2 Fu

= (ku F )u =

u = 0
u

Hence, the governing equilibrium equation is:

ku = F

Propagation problems
The main characteristic of a propagation or dynamic problem is that the response of the system under
consideration changes with time. For the analysis of a system, in principle, the same procedures as in
the analysis of a steady-state problem are employed, but now the state variables and element
equilibrium relations depend on time. The objective of the analysis is to calculate the state variables
for all time t.
For example, consider the system of rigid carts (Example 1). Assume that the loads are timedependent and establish the equations that govern the dynamic response of the system.
For the analysis we assume that the springs are massless andthat the carts have masses m1, m2,
and m3. Then, using the principle of dAlambert, the element interconnectivity requirements yield the
equations:

F1(1) + F1( 2 ) + F1(3) + F1( 4 ) = R1 (t ) m1u&&1


F2( 2) + F2(3) + F2( 5) = R2 (t ) m2 u&&2

19

Associated Professor Dr. Viktor Hristovski

F3( 4) + F3( 5) = R3 (t ) m3u&&3


Thus, instead of the previously obtained system of governing equilibrium equations KU=R,
now we have:

&& + ku = R (t )
Mu
where M is the system mass matrix:

m1
M = 0
0

0
m2
0

0
0
m3

The equilibrium equations represent a system of ordinary differential equations of second


order in time. For the solution of these equations it is also necessary that the initial conditions on u
&& be given.
and u

Continuous-system models
The basic steps in the solution of a continuous-system mathematical model are quite similar to those
employed in the solution of a discrete-system model. However, instead of dealing with discrete
elements, we focus attention on typical differential elements with the objective of obtaining
differential equations that express the element equilibrium requirements, constitutive relations, and
element interconnectivity requirements. These differential equations must hold throughout the domain
of the system, and before the solution can be calculated they must be supplemented by boundary
conditions and, in dynamic analysis, also by initial conditions.
As in the solution of discrete-system models, two different approaches can be followed to
generate the system-governing differential equations: the direct method and the variational method.
We will discuss both approaches and illustrate the variational procedure in some details because this
approach can be regarded as the basis of the finite element method.
In the direct formulation we establish the equilibrium and constitutive requirements of typical
differential elements in terms of state variables. These considerations lead to a system of differential
equations. In general, these equations must be supplemented by additional differential equations that
impose appropriate constraints on the state variables in order that all compatibility requirements be
satisfied. Finally, to complete the formulation of the problem, all boundary conditions, and in dynamic
analysis the initial conditions, are stated.
Consider the second-order general partial differential equation in the domain x, y:

A( x, y )

2u
2u
2u
u u
+
2
(
,
)
+
(
,
)
= ( x, y , u , , )
B
x
y
C
x
y
2
2
x
xy
y
x y

where u is the unknown state variable. Depending on the coefficients, the differential equation is
elliptic, parabolic or hyperbolic:

< 0 elliptic

B AC = 0 parabolic
> 0 hyperbolic

It is observed that the character of the solutions is distinctly different for the three categories
of equations. These differences are also according to the physical problems that they govern. So, for
example, in their simplest forms these three types of equations can be identified with the Laplace
equation, heat conduction equation and the wave equation, respectively. We demonstrate how these
equations arise in the solution of physical problems by the following examples.

20

Application of Finite Element Method in Structural Analysis

1. An idealized dam stands on permeable soil. Our task is to formulate the differential equation
governing the steady-state seepage of water through the soil and give the corresponding boundary
conditions.

Fig.3.6 Example of steady-state seepage of water through the soil


For a typical element of widths dx and dy (unit thickness is considered), the total flow into the
element must be equal to the total flow out of the element. Hence:

(q | y q | y + dy )dx + (q | x q | x + dx )dy = 0

q y
y

dydx

q x
dxdy = 0
x

Using Darcys law, the flow is given in terms of the total potential :

qx = k

; q y = k
x
y

where we assume a uniform permeability k. Substituting the Darcys law into the continuity equation,
we obtain the Laplace equation:

2 2
k 2 + 2 = 0
y
x
The boundary conditions are the following:
No flow boundary conditions in the soil at x=- and x=+:

= 0;
x =

=0
x = +

At the rock-soil interface:

=0
y =0

At the dam-soil interface:

( x, L ) = 0
y

for

21

h
h
x+
2
2

Associated Professor Dr. Viktor Hristovski

In addition, the total potential is prescribed at the water-soil interface:

( x, L) x p ( h / 2 ) = h1 ; ( x, L) xf( h / 2 ) = h2
2. A very long slab is at constant initial temperature i when the surface at x=0 is suddenly subjected
to a constant uniform heat flow input. The surface at x=L of the slab is kept at the temperature i.
Assuming one-dimensional heat flow conditions, formulate the governing differential equation.
State also the boundary and initial conditions.

Fig.3.7 Example of one-dimensional heat flow through a very long slab


We consider a typical differential element of the slab. The element equilibrium requires that
the net heat flow input to the element must be equal to the rate of heat stored in the element. Hence:

q A x (q A x + A

dx) = Ac
dx
x x
t x

The constitutive relation is given by Fouriers law of heat conduction:

q = k

Substituting this constitutive relation into the equilibrium equation we obtain:

= c
2
x
t

The boundary conditions are:

q (t )
(0, t ) = 0
t >0
x
k
( L, t ) = i t > 0
and the initial condition is:

( x,0) = i
Although we considered in these examples specific problems that are governed by elliptic,
parabolic and hyperbolic differential equations, the problem formulations illustrate in a quite general
way some basic characteristics. In elliptic problems the values of the unknown state variables are
given on the boundary. These problems are for this reason also called boundary value problems, where

22

Application of Finite Element Method in Structural Analysis

we should note that the solution at a general interior point depends on the data at every point of the
boundary. Generally, elliptic differential equations govern the steady-date response of systems.
Comparing the governing differential equations given in examples, it is noted that in contrast
to the elliptic equation, the parabolic and hyperbolic equations include time as an independent variable
and thus define propagation problems. These problems are also called Initial value problems because
the solution depends on the initial conditions.

23

Associated Professor Dr. Viktor Hristovski

24

Application of Finite Element Method in Structural Analysis

CHAPTER 4

Weighted-Integral and Weak Formulations


The variational approach of establishing the governing equilibrium equations of a system was already
introduced as an alternative to the direct approach when we discussed the analysis of discrete systems.
As described, the essence of the approach is to calculate the total potential of the system and to
invoke the stationarity of , i.e., =0, with respect to the state variables. We pointed out that the
variational technique can be effective in the analysis of discrete systems; however, we shall now
observe that the variational approach provides a particularly powerful mechanism for the analysis of
continuous systems. The main reason for this effectiveness lies in the way by which some boundary
conditions can be generated and taken into account when using the variational approach.
The total potential is also called the functional of the problem. Assume that in the functional
the highest derivative of a state variable is of order m; i.e., the operator contains at most mth-order
m-1
derivatives. We call such a problem a C variational problem. Considering the boundary conditions
of the problem, we identify two classes of boundary conditions, called essential and natural boundary
conditions. The essential boundary conditions are also called geometric boundary conditions because
in structural mechanics the essential boundary conditions correspond to prescribed displacements and
m-1
rotations. The order of derivatives in the essential boundary conditions is, in a problem a C problem,
at most m-1. The second class of boundary conditions, namely, the natural boundary conditions, are
also called force boundary conditions because in structural mechanics the natural boundary conditions
correspond to prescribed boundary forces and moments. The highest derivatives in these boundary
conditions are of order m to 2m-1.
What is the meaning, mathematically and/or geometrically, of the variational approach or
calculus? Let us consider the following integral:
x1

J = F ( x, y, y ' )dx =
x0

(4.1)

where x0 and x1 are given constant boundaries, and F(x,y,y) is a continuous function (Fig. 4.1). The
function y=f(x) is the unknown continuous function with its first derivative y=f(x) which satisfies
the conditions y0=f(x0) and y1=f(x1). The task is to find the function y=f(x), such that the integral has
extremum. In our case, the function y is the state variable.

Fig.4.1 Geometrical interpretation of the variation of a function y

25

Associated Professor Dr. Viktor Hristovski

We can see in the Fig. 4.1 that there are many candidates for this function y=f(x), but only
one of them satisfies the above conditions. Let q=g(x) be one of the possible candidates. The
difference y = f ( x) g ( x) where g ( x) = f ( x) + ( x) in any point within the interval [x=x0,
x=x1] is called variation of the function y=f(x). The integral J is called functional of the problem.
The function y=f(x) is the state variable to be found. In problems of structural mechanics, it could be
the field of displacements and the functional is usually the total potential of the system.
So, in order to find the displacements, we can invoke the condition for stationarity, or
extremum of the functional J:

= 0
2 > 0

(4.2)

Because the second variation with respect to displacements is greater then zero, then the total
potential of the system has a minimum.
In order to deal with variations, we can apply the same rules for them as for differentiations.
So, the following expressions hold, if F and Q are two different functions dependent on different state
variables:

F ( x)dx = F ( x)dx
( F + Q ) = F + Q
( FQ) = (F )Q + F (Q)

(4.3)

( F ) n = n( F ) n 1F
Need for weighted-integral forms
In the finite element method, we use an integral statement to develop algebraic relations among the
coefficients uj of the approximation:
n

u u j j

(4.4)

j =1

where u represents the solution of a particular differential equation or in our case, the so called state
variable of the problem. The use of an integral statement equivalent to the governing differential
equation is necessitated by the fact that substitution of this equation into the governing differential
equation does not always result in the required number of linearly independent algebraic equations for
the unknown coefficients uj. One way to insure that there are exactly the same number n of equations
as there are unknowns is to require weighted integrals of the error in the equation to be zero.
Suppose that we wish to determine an approximate solution of the equation:

d du
x + u = 0 for 0 < x < 1
dx dx
du
x | x =1 = 0
dx

u (0) = 1,

(4.5)

We seek an approximate solution, over the entire domain = (0,1) in the form:
N

u U N c j j ( x ) + o ( x )

(4.6)

j =1

where cj are coefficients to be determined, and j(x) and o(x) are functions preselected such that the
specified boundary conditions of the problem are satisfied by the N-parameter approximate solution
UN. For example, we could take:

26

Application of Finite Element Method in Structural Analysis

N =2

1 = x 2 2 x, 2 = x 3 3x, o = 1

(4.7)

and write the approximate solution in the form:

u U N = c1 ( x 2 2 x) + c 2 x 3 3x + 1

(4.8)

which satisfies the boundary conditions of the problem for any values of c1 ad c2. The constants are to
be determined such that the approximate solution UN satisfies the differential equation (4.5) in some
sense. If we require UN to satisfy this differential equation in the exact sense, we obtain:

d 2U N
dU N
x
+ U N = 2c1 ( x 1) 3c2 ( x 2 1)
dx 2
dx
2c1 x 6c2 x 2 + c1 ( x 2 2 x) +

(4.9)

+ c2 ( x 3 x ) + 1 = 0
3

Since this expression must be zero for any value of x, the coefficients of the various powers of
x must be zero:

1 + 2c1 + 3c2 = 0
(6c1 + 3c2 ) = 0

(4.10)

c1 9c2 = 0

{no solution

c2 = 0
The above relations are inconsistent; hence, there is no solution to the equations.
On the other hand, we can require the approximate solution U to satisfy the differential
equation in the weighted-integral sense:
1

wRdx = 0

(4.11)

where R is called residual:

dU N
d 2U N
R=
x
+UN
dx
dx 2

(4.12)

and w is called weight function.


Hence, from this formulation we can obtain as many linearly independent equations as there
are independent functions for w. For example, if we take w=1 and w=x, we obtain:
1

1
1
1
0 = 1Rdx = (1 + 2c1 + 3c2 ) + (6c1 3c2 ) + (c1 9c2 ) + c2
2
3
4
0

(4.13)

and:
1

0 = xRdx =
0

1
1
1
1
(1 + 2c1 + 3c2 ) + (6c1 3c2 ) + (c1 9c2 ) + c2
2
3
4
5

(4.14)

which provide two linearly independent equations for c1 and c2, giving c1=222/23 and c2=-100/23:

27

Associated Professor Dr. Viktor Hristovski

2
5
c1 + c2 = 1
3
4

3
31
1
c1 + c2 =
4
20
2

222

c1 = 23

100
c2 =
23

(4.15)

Thus, integral statements of presented type provide means for obtaining as many algebraic
equations as there are unknown coefficients in the approximation.

Derivation of the weak form for a given differential equation


Now, our primary objectives will be to construct the weak form of a given differential equation and to
classify the boundary conditions associated with the equation. A weak form is a weighted-integral
statement of a differential equation in which the differentiation is distributed among the dependent
variable and the weight function and includes the natural boundary conditions of the problem.
Consider the problem of solving the differential equation:

d
du
a
x
= q ( x) for 0 < x < L
(
)
dx
dx

(4.16)

and boundary conditions:

du
a dx | x = L = Q0

u (0) = u0 ,

(4.17)

Here a and q are known functions of the coordinate x, u0 and Q0 are known values, and L is
the length of the one-dimensional domain. The function u is the state variable of the problem. As we
saw before, the purpose of developing a weighted-integral statement of a differential equation is to
have the means to obtain N linearly independent algebraic relations among the coefficients cj of the
approximation:
N

u U N c j j ( x ) + o ( x )

(4.18)

j =1

There are three steps in the development of the weak form, if it exists, of any differential
equation.
Step1: Move all expressions of the differential equation to one side, multiply the entire
equation with a function w, called the weight function, and integrate over the domain = (0, L) of the
problem:
L

d du
0 = w a q dx
dx dx
0

(4.19)

We will call this statement the weighted-integral or weighted-residual statement equivalent to


the original differential equation. The expression in the square brackets is not identically zero when u
is replaced by its approximation. Mathematically, this is a statement that the error in the differential
equation (due to the approximation of the solution) is zero in the weighted-integral sense. When u is
the exact solution, this integral statement is trivial. We can choose N linearly independent functions
for w and obtain N equations for c1, c2,,cn of the approximate solution. The approximation
functions j should be such that UN be differentiable as many times as called for in the original
differential equation and satisfies the specified boundary conditions.
The weight function w can be any nonzero, integrable function. Approximate methods based
on weighted-integral statements are known as weighted-residual methods. If the differentiation is
distributed between the approximate solution UN and the weight function w, the resulting integral

28

Application of Finite Element Method in Structural Analysis

form will require weaker continuity conditions on j, and hence the weighted-integral statement is
called the weak form.
Step2: We integrate the first term of the expression by parts to obtain:

d du

0 = w a wq dx =
dx dx

0
L

dw du

du
=
wq dx wa
a
dx dx

dx 0
0
with v = a

(4.20)

du
in the integration-by-parts formula:
dx
L

wdv = vdw + [wv]0


0

(4.21)

The weak formulation has two desirable characteristics. First, it requires weaker continuity of
the state variable, and often it results in a symmetric set of algebraic equations in the coefficients.
Second, the natural boundary conditions of the problem are included in the weak form, and therefore
the approximate solution UN is required to satisfy only the essential boundary conditions of the
problem. These two features of a weak form play an important role in the development of finite
element models of a problem.
An important part of Step 2 is to identify the two types of boundary conditions associated with
any differential equation: natural and essential. The following rule is used to identify the natural
boundary conditions and their form: After completing Step 2, examine all boundary terms of the
integral statement. The boundary terms will involve both the weight function and the dependent
variable. Coefficients of the weight function and its derivatives in the boundary expressions are termed
the secondary variables (SV). Specification of secondary variables on the boundary constitutes the

du
. The coefficient of
dx
du
. The secondary
the weight function is a du/dx. Hence the secondary variable is of the form a
dx

natural boundary conditions (NBC). For our case, the boundary term is wa

variables always have physical meaning, and are often quantities of interest. We mentioned before that
for case of elastostatics, this secondary variable is applied nodal force.
The state variable (or dependent variable) of the problem, expressed in the same form as the
weight function appearing in the boundary term, is called the primary variable (PV), and its
specification on the boundary constitutes the essential boundary condition (EBC). For the case under
consideration, the weight function appears in the boundary expression as w. Therefore, the dependent
variable u is the primary variable, and the essential boundary condition involves specifying u at the
boundary points.
It should be noted that the number and form of the primary and secondary variables depend on
the order of the differential equation. The number of primary and secondary variables is always the
same, and with each primary variable there is associated secondary variable (displacement and force,
temperature and heat and so on). Only one of the pair, either the primary or the secondary variable,
may be specified at a point of the boundary. Thus, a given problem can have its specified boundary
conditions in one of three categories: (i) all specified boundary conditions are EBC; (ii) some of the
specified boundary conditions are EBC and the remaining are NBC; or (iii) all specified boundary
conditions are NBC. In the present case, there is one primary variable u and one secondary variable Q.
At a boundary point, only one of the pair (u, Q) can be specified.
From the previous expressions, substituting for natural boundary conditions, we can obtain:

29

Associated Professor Dr. Viktor Hristovski

dw du

du
wq dx wa =
0 = a
dx dx

dx 0
0
L

dw du

= a
wq dx ( wQ ) 0 ( wQ ) L
dx dx

(4.22)

Step3: The third and the last step of the weak formulation is to impose the actual boundary
conditions of the problem under consideration. In weak formulations, the weight function has the
meaning of a virtual change (or variation) of the primary variable. If a primary variable is specified at
a point, the virtual change there must be zero. Thus, the weight function w is required to satisfy
w(0)=0, because u(0)=u0.

du
= Q0 , we have the final expression:

dx x = L

Since w(0)=0 and Q ( L) = a


L

dw du

wq dx w( L)Q0
0 = a
dx dx

(4.23)

This completes the steps involved in the development of the weak or variational form of a
differential equation.

Examples
1. Consider the differential equation:

d du
2
a cu + x = 0
dx dx

for 0 < x < 1

(4.24)

subject to the boundary conditions:

du
u (0) = 0, a = 1
dx x =1

(4.25)

Following the three steps outlined above for the construction of variational statements, we
obtain:
Step 1:
1

d du
0 = w a cu + x 2 dx

dx dx
0

(4.26)

Step 2:
1

du
dw du

cwu + wx 2 dx wa
0 = a
dx dx
dx 0

(4.27)

From the boundary term, it is clear that the specification of u is an essential boundary
condition, and the specification of a du/dx is a natural boundary condition. Since a du/dx =1 at x=1
and w=0 at x=0, we obtain the weak form:
1

dw du

cwu dx + wx 2 dx w(1)
0 = a
dx dx

0
0
We can compute the so called quadratic functional as follows:

30

(4.28)

Application of Finite Element Method in Structural Analysis

0 = B( w, u ) l ( w)
1

dw du

B ( w, u ) = a
cwu dx
dx dx

0
1

(4.29)

l ( w) = wx 2 dx + w(1)
0

I (u ) =

2
1

1
1 du
B (u , u ) l (u ) = a cu 2 + 2ux 2 dx u (1)
2
2 0 dx

2. Consider the problem of finding the solution w to the differential equation:

d2
d 2w
b( x) 2 f ( x) = 0
dx 2
dx

for 0 < x < L

(4.30)

subject to the boundary conditions:

dw
= 0,
w(0) =

dx x =0

(4.31)

d d 2 w
d 2w
b 2
= M 0 , b 2
=0
dx
dx

dx x = L

x=L

This equation describes elastic bending of beams, where w is the transverse deflection, L is the
total length of the beam and b(x) is the flexural rigidity of the beam b(x)=EI. The function f(x) is the
transverse distributed load and M0 is the bending moment.
The solution w is the state variable of the problem, and all other quantities (L, b, f, M0) that
are known in advance are the data of the problem.
Since the equation contains a fourth-order derivative, we should integrate it twice by parts.
Multiplying the basic differential equation by v, and integrating the first term by parts twice with
respect to x, we obtain:

d 2 d 2w

0 = v 2 b 2 f dx
dx dx
0

dv d d 2 w

d d 2 w

0 = b 2 vf dx + v b 2 =
dx dx dx
0

dx dx 0
L

d 2v d 2 w
= b 2
vf
dx dx 2
0
L

(4.32)
L

d d 2 w dv d 2 w

dx + v b 2 b 2

dx dx dx dx 0

From this it follows that the specification of w and dw/dx constitutes the essential boundary
conditions, and the specification of:

d d 2w
b
V
dx dx 2
d 2w
b 2 M
dx

( shear force)
(4.33)

(bending moment )

constitutes the natural boundary conditions.

31

Associated Professor Dr. Viktor Hristovski

Because w(0)=0, the weight function v is required to satisfy the condition:

dw
w(0) =
=0
dx x =0

(4.34)

dv
v(0) = = 0
dx x =0
These conditions are essential boundary conditions.
The natural boundary conditions are:

d d 2 w
= 0,
b 2
dx dx x = L

d 2w
b 2
= M0
dx x = L

(4.35)

So, finally we obtain:


L
d 2v d 2 w
vf
0 = b 2
dx dx 2
0
or
B (v, w) = l (v)
where
L

B (v, w) = b
0

dv
dx M 0
dx x = L

(4.36)

d 2v d 2 w
dx
dx 2 dx 2

(4.37)

dv
l (v) = vfdx + M 0
dx x = L
0

(4.38)

The total potential energy of the beam is:


L

b d 2w
dw
I ( w) = 2 wf dx
M0
2 dx
dx x = L
0

(4.39)

3. Construct the weak form for the one-dimensional heat conduction/convection problem:

d du
a + cu = q
dx dx

for 0 < x < 1

du

u ( 0) = u 0 , a
= Q0
+ (u u )
dx
x =1

(4.40)

at x = 1

where a and q are functions of x, and , c, u , and Q0 are constants.


Step 1:
1

d du

w dx a dx + cu q dx = 0

(4.41)

Step 2: Using
1

wdv = vdw + [wv] 0


0

(4.42a)

32

Application of Finite Element Method in Structural Analysis

and

d du
a
dx dx
du
v = a
dx
dv =

(4.42b)

we have
1

dw du
du
0 dx a dx dx wa dx 0 + 0 (cuw qw)dx = 0

(4.43)

Step 3: Since u (0) = u 0 then w(0) = 0 and we have


1

dw du
du
0 dx a dx dx wa dx
Since a (1)

du
dx

x =1

+ c uwdx qwdx = 0

(4.44)

= Q0 (u u ) , then finally we obtain


x =1

dw du
0 dx a dx dx + c 0 uwdx 0 qwdx w(1)Q0 (u u ) = 0

(4.45)

4. Construct the weak form for the problem of beam on elastic foundation:

d 2 d 2w
b
+ kw = f
dx 2 dx 2

for 0 < x < L

d 2w
w = b 2 = 0 at x = 0, L
dx

(4.46)

where b=EI and f are functions of x, and k is a constant (foundation modulus). Here w is deflection of
the beam and v is the weight function.
Step 1:

d 2 d 2w
v
0 dx 2 b dx 2 + kw
L

f dx = 0

(4.47)

Step 2: Using integration-by-parts formula


b

w
a

du dw
du
du
d 2u
dx =
dx + w(b ) (b ) w(a ) (a )
2
dx dx
dx
dx
dx
a

(4.48)

and substitutions

d 2u d 2 d 2 w
b

=
dx 2 dx dx 2
du d d 2 w

= b
dx dx dx 2
we obtain

33

(4.49)

Associated Professor Dr. Viktor Hristovski

L
dv d d 2 w

d d 2 w
d d 2 w
b 2 + vkw vf dx + w(L ) b 2
w(0 ) b 2
= 0 (4.50)
dx
dx
dx
dx
dx
dx
dx

x=L
x =0

Step 3: Since w = b

d 2w
= 0 at x = 0, L , finally we have
dx 2
L

dv d d 2 w
b 2 + vkw vf dx = 0

0
dx dx dx

(4.51)

5. Construct the weak form for the problem of longitudinal deformation of a bar with an end spring:

d du
a = q
dx dx

for 0 < x < L


(4.52)

du
=P
u (0) = 0, a
+ ku
x=L
dx
where a and q are functions of x, and k and P are constants.
Step 1:
L

d du

w dx a dx q dx = 0

(4.53)

Step 2: Using
1

wdv = vdw + [wv] 0

(4.42a)

d du
a
dx dx
du
v = a
dx

(4.42b)

and

dv =

we obtain
L

du dw
du
du
0 a dx dx dx 0 wqdx wa dx x=L + wa dx x=0 = 0

(4.54)

du
= P ku (L) we obtain

dx x = L

Step 3: Since u (0) = u 0 then w(0) = 0 and substituting a


L

a
0

du dw
dx wqdx w(L )[P ku ( L)] = 0
dx dx
0

34

(4.55)

Application of Finite Element Method in Structural Analysis

6. Construct the weak form for the given nonlinear equation:

d du
u + f = 0
dx dx

for 0 < x < 1


(4.56)

du
= 0, u (1) = 2

dx x = 0
Step 1:
1

d du

w dx u dx + f dx = 0

(4.57)

Step 2: Using
1

wdv = vdw + [wv]

(4.42a)

and

d du
u
dx dx
du
v = u
dx
dv =

(4.58)

we obtain
1

dw du
du
0 dx u dx dx + 0 wfdx wu dx 0 = 0

(4.59)

Step 3: Since u (1) = 2 then w(1) = 0 and we have


1

dw du
du
du
0 dx u dx dx + 0 wfdx w(1)u (1) dx x=1 + w(0)u (0) dx x=0 = 0 (4.60)
1

dw du
0 dx u dx dx + 0 wfdx = 0

(4.61)

Variational methods of approximation


Now, our objective will be studying of variational methods of approximation. These include the
Rayleigh-Ritz, Galerkin, Petrov-Galerkin, least-squares and collocation methods. In all these, we seek
an approximate solution in the form of linear combination of suitable approximation function j and
undetermined parameters cj. The parameters cj are determined such that the approximate solution
satisfies the weighted-integral form or weak form of the governing equation. Various methods differ
from each other in the choice of weight function w and approximation function j.
The Rayleigh-Ritz method
Consider the variational problem of finding the solution u such that:

B ( w, u ) = l ( w)

35

(4.62)

Associated Professor Dr. Viktor Hristovski

For cases when the functional B is bilinear and symmetric and l is linear, the problem is
equivalent to minimization of the quadratic functional:

I (u ) =

1
B (u, u ) l (u )
2

(4.63)

In the Rayleigh-Ritz method, we seek an approximate solution in the form of a finite series:
N

u N = c j j + o

(4.64)

j =1

so that N independent algebraic equations in cj are obtained. The i-th algebraic equation is obtained by
substituting i for w:
N

B i , c j j + = l (i ) (i = 1,2,..., N )
j =1

(4.65)

If B is bilinear, the summation and constants cj can be taken outside of the operator.
Therefore:
N

B( ,

)c j = l (i ) B(i , 0 )

(4.66)

= Fi , Bij = B(i , j ), Fi = l (i ) B (i , 0 )

(4.67)

j =1

or
N

B c
j =1

ij

which represents the i-th algebraic equation in a system of N linear algebraic equations in N unknown
c j.
On the other hand, using quadratic functional I(u) and the necessary condition for the
minimization of I leads to the following equations:

I
= 0,
c1

I
= 0, ...,
c2

I
=0
c N

(4.68)

This equations are exactly the same as obtained previously.


Function i should satisfy the following conditions:

1. B (i , j ) is nonzero and sufficiently differentiable.

i must satisfy at least the homogen. form of the essen. b.c.


2. For any N , the set {i }i =1 of B(i , j ) must be linearly independent
N

3.i must be complete.


If all specified essential boundary conditions are homogeneous, then:

0 = 0 Fi = l (i ) B (i , 0 ) = l (i )

(4.69)

Examples
1. Consider the following differential equation:

d 2u
u + x2 = 0
2
dx

36

for 0 < x < 1

(4.70)

Application of Finite Element Method in Structural Analysis

with the boundary conditions:

u (0) = 0, u (1) = 0

(4.71)

The bilinear functional and the linear functional are:


1

dw du

B ( w, u ) =
wu dx, l ( w) = wx 2 dx
dx dx

0
0

(4.72)

Since both boundary conditions are of essential type, we must select i in the N-parameter
Ritz approximation to satisfy conditions:

i (0) = i (1) = 0

(4.73)

We choose the following functions:

1 = x(1 x), 2 = x 2 (1 x), ..., N = x N (1 x)

(4.74)

The N-parameter Rayleigh-Ritz solution for the problem is of the form:


N

u N = c11 + c2 2 + ... + c N N = c j j

(4.75)

j =1

Substituting this into the variational problem

B ( w, u ) = l ( w)

(4.76)

we obtain

d
0 dxi

d j
N
cj

j =1 dx

i c j j dx = i x 2 dx

j =1

1
di d j

dx
=

i x 2 dx

j
i j

dx
dx
j =1

0
0

(4.77)

or
N

c B( ,
j =1

) = l (i )

(4.78)

The coefficients B (i , j ) and l (i ) are defined by:


1
d d j

i j dx Bij
B (i , j ) = i
dx dx

0
1

(4.79)

l (i ) = x i dx Fi
2

For the choice of our approximation functions, the coefficients Bij and vector coefficients Fi
can be computed using:

i = x i (1 x) = x i x i +1
di
i 1
i
dx

= ix

(i + 1) x

We have

37

(4.80)

Associated Professor Dr. Viktor Hristovski


1

{[

][

Bij = ix i 1 (i + 1) x i jx j 1 ( j + 1) x j ( x i x i +1 )( x j x j +1 )
0

2ij
2

2
(i + j ) (i + j ) 1 (i + j + 1)(i + j + 2)(i + j + 3)

Fi = x 2 ( x i x i +1 )dx =
0

(4.81)

1
(3 + i )(4 + i )

So, we can write in matrix form:

[B]{c} = {F }

(4.82)

For example, when N=2, we obtain:

1 126 63 c1
1 3
=

420 63 52 c2
60 2

(4.83)

The solution of the system is:

c1 =

10
21
= 0.0813, c2 =
= 0.1707
123
123

(4.84)

Hence, the two-parameter Rayleigh-Ritz solution is given by:

u2 = c11 + c2 2 =

1
(10 x + 11x 2 21x 3 )
123

(4.85)

Using the exact solution:

u ( x) =

sin x + 2 sin(1 x)
+ x2 2
sin 1

(4.86)

we can easily check our approximated solution.


2. Compute the coefficient matrix and the right-hand side of the N-parameter Rayleigh-Ritz
approximation of the equation:

d
du
(1 + x) = 0

dx
dx
u (0) = 0, u (1) = 1

for 0 < x < 1

(4.87)

Use algebraic polynomials form the approximation functions. Specialize your result for N = 2
and compute the Ritz coefficients.
Step 1:
1

du

w dx (1 + x) dx dx = 0

(4.88)

Step 2: Using
1

wdv = vdw + [wv] 0


1

and

38

(4.42a)

Application of Finite Element Method in Structural Analysis

d
du
(1 + x )
dx
dx
du
v = (1 + x )
dx
dv =

(4.89)

we obtain
1

du dw
du

0 (1 + x ) dx dx dx w(1 + x ) dx 0 = 0

(4.90)

Step 3: Since w=u (the weight function is actually the variation of the primary variable), we
have:

u (0) = 0 w(0) = 0
u (1) = 1 w(1) = 0

(4.91)

Hence, finally we obtain:


1

du dw

(1 + x ) dx dx dx = 0

(4.92)

Now, for N=2, using the Rayleigh-Ritz variational method of approximation, we approximate
the solution of Eq. (4.87) as follows:

u N = c11 + c22 + 0

(4.93)

We choose the following approximation functions that satisfy the boundary conditions in Eq.
(4.87):

0 = x, 1 = x(1 x), 2 = x 2 (1 x)

(4.94)

If we substitute functions (4.94) in our approximation (4.93), we obtain:

u N = c1 x(1 x ) + c2 x 2 (1 x ) + x = c1 x c1 x 2 + c2 x 2 c2 x 3 + x

(4.95)

It is easy to verify that this approximate function (4.95) satisfy the boundary conditions in
(4.87), i.e.

x = 0 uN = 0
x = 1 uN = 1

(4.96)

In order to insert our approximation into the weak form (4.92) we need the first derivation of
(4.95):

du N
= c1 2c1 x + 2c2 x 3c2 x 2 + 1
dx

(4.97)

The basic assumption in Rayleigh-Ritz method is that the weight functions are equal to the
selected approximation functions. So, we have:

wi = i
dw1
= 1 2x
dx
dw2
w2 = 2 = x 2 (1 x),
= 2 x 3x 2
dx

w1 = 1 = x(1 x),

39

(4.98)

Associated Professor Dr. Viktor Hristovski

We substitute (4.97) and (4.98) into (4.92) and obtain:


1

for i = 1 : (1 + x ) c1 2c1 x + 2c2 x 3c2 x 2 + 1 (1 2 x )dx = 0


0

)(

(4.99)

for i = 2 : (1 + x ) c1 2c1 x + 2c2 x 3c2 x 2 + 1 2 x 3x 2 dx = 0


0

Solving the above integrals we obtain a system of two equations with two unknowns c1 and c2:

0.5c1 + 0.2833c2 = 0.1667


0.2833c1 + 0.2333c2 = 0.0833

(4.100)

which solution is: c1 = 0.4198 and c2= -0.1527.


Hence, we have the following approximate solution of the differential equation (4.87):

u N = 0.4198 x(1 x ) 0.1527 x 2 (1 x ) + x

40

(4.101)

Application of Finite Element Method in Structural Analysis

CHAPTER 5

Finite Elements of an Elastic Continuum


This chapter will be dedicated to the application of the finite element method for solution of a
boundary value problem related to elastic-static problems. We will analyze an elastic continuum using
the field of displacements as unknown variables to be determined, i.e. using the displacement
approach.
Why does the finite element method is more powerful than the other variational methods of
approximation? The traditional variational methods like Rayleigh-Ritz, Galerkin, least-squares, etc.
cease to be effective because of the difficulty in constructing the approximation functions. Namely, the
approximation functions must satisfy continuity, linear independence, completeness, and essential
boundary conditions and the selection becomes more difficult when the given domain is geometrically
complex. Practically, there exists no systematic procedure to construct them. Because of this
shortcoming, the traditional variational methods of approximation were never regarded as competitive
computationally when compared with the traditional finite difference schemes.
Ideally speaking, an effective computational method should have the following features:
1. It should have a sound mathematical as well as physical basis.
2. It should not have limitations with regard to the geometry, the physical composition of the
domain, or the nature of the loading.
3. The formulative procedure should be independent of the shape of the domain and the specific form
of the boundary conditions.
4. The method should be flexible enough to allow different degrees of approximation without
reformulating the entire problem.
5. It should involve a systematic procedure that can be automated for use on digital computers.
The finite element method possesses all these features. It is a technique in which a given
domain is represented as a collection of simple domains, called finite elements, so that it is possible to
systematically construct the approximation functions needed in a variational or weighted-residual
approximation of the solution of a problem over each element.
The process of approximating the behavior of a continuum by finite elements which behave
in a manner similar to the real, discrete, elements described in chapter 3, can be introduced through
the medium of particular physical applications or as a general mathematical concept. We have chosen
here to follow the first path, narrowing our view to a set of problems associated with structural
mechanics, which historically were the first to which the finite element method was applied.
Hence, the students from this lesson will get insight into the steps of the finite element
discretization of an elastic continuum as well as into the general formulae derived using the principles
of virtual displacements.
In many phases of engineering the solution of stress and strain distributions in elastic continua
is required. Special cases of such problems may range from two-dimensional plane stress or strain
distributions, axisymmetric solids, plate bending, and shells, to fully three-dimensional solids. The
finite element solution of these problems grasps the following phases:
1. The continuum is separated by imaginary lines or surfaces into a number of finite elements (Fig.
5.1).

41

Associated Professor Dr. Viktor Hristovski

2. The elements are assumed to be interconnected at a discrete number of nodal points situated on
their boundaries. The displacements of these nodal points will be the basic unknown parameters of
the problem, just as in the simple, discrete mathematical models.
3. A set of functions is chosen to define uniquely the state of displacement within each finite
element in terms of its nodal displacements.
4. The displacement functions now define uniquely the state of strain within an element in terms of
nodal displacements. These strains, together with any initial strains and the constitutive properties
of the material, will define the state of stress throughout the element and, hence, also on its
boundaries.
5. A system of forces concentrated at the nodes and equilibrating the boundary stresses and any
distributed loads is determined.
Once this stage has been reached the solution procedure can follow the standard discrete
system pattern described earlier.

Fig.5.1 Discretization of a two-dimensional continuum by finite elements

Basic relations within an element


It is desirable to obtain basic relations within an element in a general form applicable to any situation.
However, for the sake of simplicity, these general relations will be illustrated with a very simple
example of plane stress analysis of a thin slice. A typical finite element, e, is defined by nodes i,j,m
and straight boundaries (Fig. 5.1). Let the displacements u at any point within the element be
^

approximated as a column vector u :


^

u u = N i a ie = N i

Nj

42

a i

... a j = Na e
:

(5.1)

Application of Finite Element Method in Structural Analysis

in which the components of N are prescribed functions of position and ae represents a listing of nodal
displacements for a particular element.
In the case of plane stress, for instance,

u ( x, y )
u=

v ( x, y )

(5.2)

represents horizontal and vertical movements of a typical point within the element and

u
ai = i
vi

(5.3)

the corresponding displacements of a node i.


The functions Ni, Nj, Nm have to be so chosen as to give appropriate nodal displacements
when the coordinates of the corresponding nodes are inserted in the Eq. (5.1). Clearly, in general,

N i ( xi , yi ) = I
N i ( x j , y j ) = N i ( xm , y m ) = 0

(5.4)

which is simply satisfied by suitable linear functions of x and y. If both the components of
displacement are interpolated in an identical manner then we can write

Ni = NiI

(5.5)

and obtain Ni, by noting Ni=1 at xi and yi but zero at other vertices. The most obvious linear
interpolation in the case of a triangle will yield the shape on Ni of the form shown in the Fig. 5.2. The
functions N will be called shape functions and will be seen later to play a paramount role in finite
element formulation.

Fig.5.2 Definition of simple linear shape functions


With displacements known at all points within the element the strains at any point can be
determined. These will always result in a relationship that can be written in matrix notation as

= Su

(5.6)

where S is a suitable linear operator. Using shape functions, the above equation can be approximated
as

= Ba

(5.7)

B = SN

(5.8)

with

43

Associated Professor Dr. Viktor Hristovski

For the plane stress case the relevant strains of interest are those occurring in the plane and are
defined in terms of the displacements by well-known relations from theory of elasticity, which
actually define the operator S:


x x x
v
= y =
= 0

xy u v

y + x y

u
= Su
y v

(5.9)

With the shape functions Ni, Nj, Nm already determined, the matrix B will easily be obtained.
In general, the material within the element boundaries may be subjected to initial strains as
may be due to temperature changes, shrinkage, crystal growth, and so on. If such strains are denoted
by 0 then the stresses will be caused by the difference between the actual and initial strains. In
addition it is convenient to assume that at the outset of analysis the body is stressed by some known
system of initial residual stresses 0 which, for instance, could be measured, but the prediction of
which without the full knowledge of the materials history is impossible. These stresses can simply be
added on to the general definition. Thus, assuming general linear elastic behavior, the relationship
between stresses and strains will be linear and of the form:

= D( 0 ) + 0

(5.10)

where D is an elasticity matrix containing the appropriate material properties.


Again, for the particular case of plane stress three components of stress corresponding to the
strains already defined have to be considered:

x

= y

xy

(5.11)

The D matrix may be simply obtained from the usual isotropic stress-strain relationship:

x y
E
E
1

y ( y )0 = x + y
E
E
2(1 + )
xy ( xy )0 =
xy
E

x ( x )0 =

1
0

E
1
0
D=
1 2
1
0 0

(5.12)

Let

q ie

q e = q ej
:

(5.13)

define the nodal forces which are equivalent statically to the boundary stresses and distributed loads
on the element.
In the particular case of plane stress the nodal forces are, for instance

44

Application of Finite Element Method in Structural Analysis

U
q ie = i
Vi

(5.14)

with components Ui and Vi corresponding to the directions of u and v displacements, and the
distributed load is

bx
b=
by

(5.15)

in which bx and by are the body forces components.


To make the nodal forces statically equivalent to the actual boundary stresses and distributed
loads, the simplest procedure is to impose an arbitrary (virtual) nodal displacement and to equate the
external and internal work done by the various forces and stresses during that displacement.
For a virtual displacement a at the nodes we will have
e

u = Na e = Ba e

(5.16)

The work done by the nodal forces is equal to a eT q e . Similarly, the internal work per unit

volume done by stresses and the distributed forces is T uT b or aT BT N T b . Equating the


external work with the total internal work obtained by integrating over the volume of the element Ve ,
we have

a eT q e = a eT BT d (vol ) N T bd (vol )
V e

Ve

(5.17)

As this relation is valid for any value of the virtual displacement, the equality of the
multipliers must exist. Thus

q e = BT d (vol ) N T bd (vol )
Ve

(5.18)

Ve

This statement is valid quite generally for any stress-strain relations.


With the linear constitutive law (5.10) this relation can be written

q e = K ea e + f e

(5.19)

where
T

K e = B DBd (vol )
V

(5.20)

and
T

f e = N bd (vol ) B D 0 d (vol ) + B 0 d (vol )


Ve

Ve

(5.21)

Ve

In the last equation the three terms represent forces due to body forces, initial strain, and initial
stress respectively.

Generalization to the whole region


In the preceding topic the virtual work principle was applied to a single element and the
concept of equivalent nodal forces was retained. However, this idea can be applied directly to the
whole continuum. So, the equation (5.1) can be interpreted as applying to the whole structure, that is

45

Associated Professor Dr. Viktor Hristovski

u = Na

(5.22)

N i = N ie

(5.23)

in which a lists all nodal points and

when the point concerned is within a particular element e and i is a point associated with that element.
If point i does not occur within the element

Ni = 0

(5.24)

Matrix B can be similarly defined considering simply that the shape functions, etc., are
defined over the whole region V.
For any virtual displacement a we can now write the sum of internal and external work for
the whole region as
T

aT r = u bdV + u tdA dV
V

(5.25)

where

r1
r

r = 2
:
r3

(5.26)

are external system nodal forces and t is distributed external loading per unit area. In equation (5.25)
a, u and can be completely arbitrary. Using constitutive relations (5.10) we can obtain a system
of algebraic equations for the whole system

Ka + f = r

(5.27)

where
T

K = B DBdV

(5.28)

and
T

f = N bdV N tdA B D 0 dV + B 0 dV
V

(5.29)

The integrals are taken over the whole volume V and over the whole surface area A on which
the tractions are given. It is immediately obvious equations (5.27), (5.28) and (5.29) that

K ij = K ije

and

f i = f ie

(5.30)

Displacement approach as a minimization of total potential energy


The principle of virtual displacements used in the previous topics ensured satisfaction of equilibrium
conditions within the limits prescribed by the assumed displacement pattern. Only if the virtual work
equality for all, arbitrary, variations of displacement was ensured would the equilibrium be complete.
The virtual work principle (5.25) can be restated in a different form if the virtual quantities a,
u and are considered as variations of the real quantities. Thus, for instance, we can write

46

Application of Finite Element Method in Structural Analysis

aT r + uT bdV + uT tdA = W

(5.31)

for the first three terms of the above equation, where W is the potential energy of the external loads.
The last term of the equation (5.25) can, for elastic materials, be written as
T

U = dV

(5.32)

where U is the strain energy of the system. For the linear elastic material with constitutive law (5.10)
this strain energy will be

U=

T
1 T
DdV D 0 dV + T 0 dV

2V
V
V

(5.33)

So, instead of the equation (5.25) we can write simply

(U + W ) = ( ) = 0

(5.34)

in which the quantity is called the total potential energy. This equation means that for equilibrium to
be ensured the total potential energy must be stationary for variations of admissible displacements.
The finite element equations derived in the previous discussion are simply the statements of this
variation with respect to displacements constrained to a finite number of parameters a and could be
written as


a
1

=
=0
a a 2
:

(5.35)

It can be shown that in stable elastic situations the total potential energy is not only stationary
but is a minimum:

2 ( ) > 0

(5.36)

Thus, the finite element process seeks such a minimum within the constraint of an assumed
displacement pattern.
The Raylegh-Ritz process of approximation uses precisely this approach, as we have seen
previously. Thus the finite element process as described so far is identically to the Raylegh-Ritz
procedure. The difference is only in the manner in which the displacements are prescribed.

47

Associated Professor Dr. Viktor Hristovski

48

Application of Finite Element Method in Structural Analysis

CHAPTER 6

Plane Stress and Plane Strain


As a continuation of the previous lecture, the topic of this chapter will be related to the cases of plane
stress and plane strain. The finite element implementation will be performed using a simple triangular
finite element with three nodes.
Two-dimensional elastic problems were the first successful examples of the application of the
finite element method. Indeed, we have already used this situation to illustrate the basis of the finite
element formulation in previous chapter where the general relationships were derived. In this chapter
the particular relationships for the problem in hand will be derived in more detail. Only the simplest,
triangular, element will be discussed in detail but the basic approach is general. More elaborate cases
and elements to be discussed in later lectures would be introduced to the same problem in an identical
manner.
In both problems of plane stress and plane strain the displacement field is uniquely given by
the u and v displacements in directions of the cartesian, orthogonal x and y axes. Again, in both, the
only strains and stresses that have to be considered are the three components in the xy plane. In the
case of plane stress, by definition, all other components of stress are zero and therefore give no
contribution to internal work. In plane strain the stress in a direction perpendicular to the xy plane is
not zero. However, by definition, the strain in that direction is zero, and therefore no contribution to
internal work is made by this stress, which can in fact be explicitly evaluated from the three main
stress components, if desired, at the end of all computation.
So, for plane-stress we have:

x
x



= y = y
xy

xy
z

z = xz = zy = 0
z 0, yz = zx = 0

(6.1)

and for plane-strain:

x
x


y
= = y
xy

xy
z

z 0, xz = zy = 0
z = yz = zx = 0

(6.2)

Triangular element with three nodes


The fig. 6.1 shows the typical triangular element considered, with nodes i, j, m numbered in an
anticlockwise order.
The displacements of a node have two components:

49

Associated Professor Dr. Viktor Hristovski

u
ai = i
vi

(6.3)

and the six components of element displacements are listed as a vector:

ai

a = a j
a
m
e

(6.4)

Fig.6.1 Triangular element with three nodes


The displacements within an element have to be uniquely defined by these six values. The
simplest representation is clearly given by two linear polynomials:

u = 1 + 2 x + 3 y

(6.5)

v = 4 + 5 x + 6 y

The six constants i can be evaluated easily by solving the two sets of three simultaneous
equations, which will arise if the nodal coordinates are inserted and the displacements equated to the
appropriate nodal displacements. Writing, for example,

ui = 1 + 2 xi + 3 yi
u j = 1 + 2 x j + 3 y j

(6.6)

u m = 1 + 2 xm + 3 y m
we can easily solve 1, 2, and 3 in terms of the nodal displacements ui, uj, um.
Finally, we can obtain:

u=

1
(ai + bi x + ci y )ui + (a j + b j x + c j y )u j + (am + bm x + cm y )um
2

(6.7)

in which:

ai = x j ym xm y j
bi = y j ym = y jm
ci = xm x j = xmj

50

(6.8)

Application of Finite Element Method in Structural Analysis

and where

xi

yi

2 = det 1 x j
1 xm

yj
ym

(6.9)

is 2 times the area of the triangle.


As the equations for the vertical displacements v are similar we also have:

v=

1
(ai + bi x + ci y )vi + (a j + b j x + c j y )v j + (am + bm x + cm y )vm
2

(6.10)

The above relations can be represented in the standard form:

u
u = = Na e = IN i IN j IN m a e
v

(6.11)

with I a two by two identity matrix, and shape functions Ni (see Fig.5.2):

Ni =

ai + bi x + ci y
, etc.
2

(6.12)

The chosen displacement function automatically guarantees continuity of displacements with


adjacent elements because the displacements vary linearly along any side of the triangle and, with
identical displacements imposed at the nodes, the same displacement will clearly exist all along an
interface.
The total strain at any point within the element can be defined by its three components, which
contribute to the internal work. Thus:


x x x
v
= y =
= 0
y
xy u v

+
y x y

u
= Su
y v

(6.13)

Substituting (6.11) in (6.13) we have

ai

= Ba = B i B j B m a j
a
m

(6.14)

with a typical matrix Bi given by:

N i

x
B i = SN i = 0

N
i
y

0
bi

N i 1
=
0
y 2
ci
N i

0
ci
bi

(6.15)

It will be noted that in this case the B matrix is independent of the position within the element,
and hence the strains are constant throughout it.

51

Associated Professor Dr. Viktor Hristovski

Initial strains, i.e., strains that are independent of stress, may be due to many causes.
Shrinkage, crystal growth, or most frequently, temperature changes will, in general, result in an initial
strain vector:

x0

0 = y0

xy 0

(6.16)

Although this initial strain may, in general, depend on the position within the element, it will
usually be defined by average, constant values. This is consistent with the constant strain conditions
imposed by the prescribed displacement function.
For the case of plane stress in an isotropic material in an element subject to a temperature rise
with a coefficient of thermal expansion , we will have, for instance,
e

0 = e
0

(6.17)

as no shear strains are caused by a thermal dilatation.


In plane strain the situation is more complex. The presumption of plane strain implies that
stresses perpendicular to the xy plane will develop due to thermal expansion even without the three
main stress components, and hence the initial strain will be affected by the elastic constants. It can be
shown that in such a case

0 = (1 + ) e
0

(6.18)

where is the Poissons ratio.


Anisotropic materials present special problems, since the coefficients of thermal expansion
may vary with direction. Let x and y in the figure show the principal directions of the material. The
initial strain due to thermal expansion becomes, with reference to these coordinates for plane stress

' 1 e
x0

'0 = y ' 0 = 2 e
' ' 0

x y 0

(6.19)

where 1 and 2 are the expansion coefficients referred to the x and y axes respectively. To obtain
the strain components in the x, y system it is necessary to use an appropriate strain transformation
matrix T giving:

cos 2

T = sin 2
sin cos

sin 2
cos
sin cos
2

2 sin cos

2 sin cos
cos 2 sin 2

(6.20)

with the angle , as defined in the Fig. 6.2, it is easily verified that:

'0 = TT 0

52

(6.21)

Application of Finite Element Method in Structural Analysis

Fig.6.2 Triangular element of a transversely isotropic material


Thus, 0 can be simply evaluated. It will be noted that no longer is the shear component of
strain equal to zero in the xy coordinates.
The elasticity matrix D of the relation:

x
x



= y = D y 0



xy

xy

(6.22)

can be explicitly stated for any material.


For example, for plane stress in an isotropic material we have, by definition,

x y + x0
E
E
1

y = x + y + y0
E
E
2(1 + )
xy =
xy + xy 0
E

x =

(6.23)

Solving the above for the stresses, we obtain matrix D as:

1
0

E
1
D=
0
1 2
1
0 0

(6.24)

in which E is the elastic modulus and is Poissons ratio.


In case of the plain strain in an isotropic material a normal stress z exists in addition to the
three other stress components.
For the special case of isotropic thermal expansion we have

53

Associated Professor Dr. Viktor Hristovski

x y z + e
E
E
E
1

y = x + y z + e
E
E
E
2(1 + )
xy =
xy
E

(6.25)

1
z = 0 = x y + z + e

(6.26)

x =

but in addition

On eliminating z and solving for the three remaining stresses we obtain the previously
quoted expression for the initial strain, and by comparison with the basic constitutive equation, the
matrix D is:

0
1

(1 )
E (1 )

1
0
D=

(
)

1
(1 + )(1 2 )

(
1
2
)
0
0
2(1 )

(6.27)

For a completely anisotropic material, 21 independent elastic constants are necessary to define
completely the three-dimensional stress-strain relationship.
If two-dimensional analysis is to be applicable a symmetry of properties must exist, implying
at most six independent constants in the D matrix, as follows:

d12
d11

D=
d 22
symm

d13
d 23
d 33

(6.28)

A case of particular interest in practice is that of transversely isotropic material in which a


rotational symmetry of properties exists within the plane of the strata (Fig.6.3). Such a material
possesses only five independent elastic constants. The general stress-strain relations, taking now the y
axis as perpendicular to the strata (neglecting initial strain), will be:

x =

x 2 y 1 z
E1
E2
E1

y =
z =

2
E2

1
E1

x +
x

1
y 2 z
E2
E2
2
E2

xz =

2(1 + )
xz
E1

xy =

1
xy
G2

yz =

1
yz
G2

54

y +

1
z
E1
(6.29)

Application of Finite Element Method in Structural Analysis

in which the constants E1, 1 (G1 is dependent) are associated with the behavior in the plane of the
strata and E2, G2, 2 with a direction normal to these.

Fig.6.3 A stratified (transversely isotropic) material


For plane stress, D matrix becomes, taking E1/E2=n and G2/E2=m :

n
E2
D=
n 2
1 n 22
0

n 2
1
0

m 1 n 22
0

(6.30)

and for plane strain:

n 1 n 22 n 2 (1 + 1 )
0
E2

2
n 2 (1 + 1 )
D=
1 1
0
(1 + 1 )(1 1 2n 22 )

0
0
m(1 + 1 ) 1 1 2n 22

(6.31)

For case of anisotropy, then to obtain the D matrices in the unprimed coordinates a
transformation is necessary. Taking D as relating the stresses and strains in the inclined coordinate
system x, y, it is easily to show that:

D = T ' D ' TT

(6.32)

where T is the same transformation matrix as mentioned before.


The stiffness matrix of the element ijm is defined from the general relationship (5.20) with the
coefficients:
T

K ije = B DB j t dx dy
i

(6.33)

where t is the thickness of the element and the integration is taken over the area of the triangle. If the
thickness of the element is assumed to be constant, an assumption convergent to the truth as the size of
elements decreases, then, as neither of the matrices contains x or y we have, simply:

K ije = BTi DB j t

(6.34)

where is the area of the triangle, already defined. This form is now sufficiently explicit for
computation with the actual matrix operations being left to the computer.
Nodal forces due to initial strains are given directly by the expression (5.21), which, on
performing the integration, becomes:

55

Associated Professor Dr. Viktor Hristovski

(fi )e 0 = BTi D 0t,

etc.

(6.35)

In the general case of plane stress or strain each element of unit area in the xy plane is subject
to forces

bx
b=
by

(6.36)

in the direction of the appropriate axes.


Again, by equation (5.21) the contribution of such forces to these at each node is given by

bx
bx
f ie = N i dx dy = N i dx dy
by
by

(6.37)

if the body forces bx and by are constant. As Ni is not constant the integration has to be carried out
explicitly. In this special case the calculation will be simplified if the origin of coordinates is taken at
the centroid of the element. Now

x dx dy = y dx dy = 0

(6.38)

and using (6.12) we obtain

bx a
bx a
bx
f ie = i dx dy = i =
by 2
by 2
by 3

(6.39)

Explicitly, for the whole element:

bx
b
e
y
fi
bx

f e = f je =
by 3
f e
m
bx

by

(6.40)

which means simply that the total forces acting in the x and y directions due to the body forces are
distributed to the nodes in three equal parts. This fact corresponds with physical intuition, and was
often assumed implicitly.
The formulae derived enable the full stiffness matrix of the structure to be assembled, and a
solution for displacements to be obtained.
The stress matrix (vector) given in general terms (6.1), (6.2) is obtained by the appropriate
substitutions of (5.10) for each element:

= DBa e D 0 + 0

(6.41)

The stresses are, by the basic assumption, constant within the element. It is usual to assign
these to the centroid of the element. An alternative consists of obtaining stress values at the nodes by
averaging the values in the adjacent elements. It is, also, usual to calculate the principal stresses and
their directions for every element.

56

Application of Finite Element Method in Structural Analysis

CHAPTER 7

Axisymmetric Stress Analysis


The problem of stress distribution in bodies of revolution (axisymmetric solids) under axisymmetric
loading is of considerable practical interest. The mathematical problems presented are very similar to
those of plane stress and plane strain as, once again, the situation is two dimensional.
There are many practical examples of axisymmetric cases, like reactor pressure vessel,
foundation pile, cooling tower, etc.
The triangular element is again used mainly for illustrative purposes, the principles developed
being completely general. By symmetry, the two components of displacements in any plane section of
the body along its axis of symmetry define completely the state of strain and, therefore the state of
stress. Such a cross-section is shown in the figure. If r and z denote respectively the radial and axial
coordinates of a point, with u and v being the corresponding displacements, it can readily be seen that
precisely the same displacement functions as those used in previous case for plain stress and plain
stress can be used to define the displacements within the triangular element i,j,m shown.
The volume of material associated with an element is now that of a body of revolution
indicated on the Fig. 7.1, and all integrations have to be referred to this.
In plane stress or strain problems it was shown that internal work was associated with three
strain components in the coordinate plane, the stress component normal to this plane not being
involved due to zero values of either the stress or the strain. In the axisymmetrical situation any radial
displacement automatically induces a strain in the circumferential direction, and as the stresses in this
direction are certainly non-zero, this fourth component of strain and of the associated stress has to be
considered. Here lies the essential difference in the treatment of the axisymmetric situation.

z
z




= r = r


rz
rz

(7.1)

Triangular element with three nodes: axisymmetric case


Using the triangular shape of element (Fig. 7.1) with the nodes i,j,m numbered in the anticlockwise
sense, we define the nodal displacement by its two components as

u
ai = i
vi
and the element displacements by the vector

57

(7.2)

Associated Professor Dr. Viktor Hristovski

ai

ae = a j
a
m

(7.3)

Obviously, as in the case of plane stress and plane strain, a linear polynomial can be used to
define uniquely the displacements within the element. As the algebra involved is identical to that of
the previous chapter it will not be repeated here. The displacement field is now given again by the
following equation:

u
u = = Na e = IN i IN j IN m a e
v

(7.4)

with

Ni =

ai + bi r + ci z
, etc.
2

(7.5)

and I a two-by-two identity matrix. In the above

ai = rj z m rm z j
bi = z j z m = z jm

(7.6)

ci = rm rj = rmj
etc., in cyclic order. Once again is the area of the element triangle.

Fig. 7.1 Element of an axisymmetric solid


As already mentioned, four components of strain have now to be considered. These are, in
fact, all non-zero strain components possible in an axisymmetric deformation. The Fig. 7.2 illustrates
and defines these strains and the associated stresses.
The strain vector defined below lists the strain components involved and defines them in terms
of the displacements of a point. The expressions involved are almost self-evident and will not be
derived here. We have thus

58

Application of Finite Element Method in Structural Analysis

v
z
z u

r r
= =
= Su
u


rz r
u v
z + r

(7.7)

Fig. 7.2 Strains and stresses involved in the analysis of axisymmetric solids
Using the displacement functions (7.4) we have

ai

= Ba = B i B j B m a j
a
m
e

(7.8)

in which

0
N
i
B i = SN i = r
1 N
r i
N
i
z

N i
z
0

0 1
bi

=
ci z
ai
0 2 r + bi + r

ci
N i

ci
0
, etc.
0

bi

(7.9)

With the B matrix now involving the coordinates r and z, the strains are no longer constant
within an element as in the plane stress or strain case. This strain variation is due to the term. If the
imposed nodal displacements are such that u is proportional to r then indeed the strains will all be
constant.
In general, four independent components of initial strain vector can be envisaged:

59

Associated Professor Dr. Viktor Hristovski

z0


0 = r 0
0
rz 0

(7.10)

Although this can, in general, be variable within the element, it will be convenient to take the
initial strain as constant there.
The most frequently encountered case of initial strain will be that due to a thermal expansion.
For an isotropic material we shell have then

e
e

0 = e

0

(7.11)

where e is the average temperature rise in an element and is the coefficient of thermal expansion.
A general case of anisotropy need not be considered since axial symmetry would be
impossible to achieve under such circumstances. A case of some interest in practice is that of a
stratified material, similar to the one discussed in previous chapter, in which the plane of isotropy is
normal to the axis of symmetry (Fig. 7.3). Here, two different expansion coefficients are possible: one
in the axial direction z and another in the plane normal to it, r . Now the initial thermal strain
becomes

z e

e
r
0 =
e
r
0

(7.12)

Fig. 7.3 Axisymmetrically stratified material


Practical cases of such stratified anisotropy often arise in laminated or fibreglass construction
of machine components.
The elasticity matrix D linking the strains and the stresses in the standard form

60

Application of Finite Element Method in Structural Analysis

z


= r = D( 0 ) + 0

rz

(7.13)

needs now to be derived.


The anisotropic, stratified material will be first considered, as the isotropic case can be simply
presented as a special case. With the z axis representing the normal to the planes of stratification we
can write the well-known equations from theory of elasticity (ignoring the initial strains and stresses
for convenience) as

z =

z 2 r 2

r =
=
zr =

E2

2 z
E2

E2
+

E2

r 1
E1

2 z 1 r
E2

E1

E1
+

(7.14)

E1

zr
G2

So, we obtain:

1 12 n 2 (1 + 1 ) n 2 (1 + 1 )

2
2
n 1 n 2
n 1 + n 2
0
E2

(7.15)
D=

(1 + 1 )(1 1 2n 22 )
n 1 n 22
0

m(1 + 1 )(1 1 2n 22 )
symm.

) (
(

)
)

with

E1
=n
E2

G2
=m
E2

(7.16)

For an isotropic material we can obtain the D matrix by taking E1=E2=E or n=1 and
1= 2= and using the well-known relationship between isotropic elastic constants

1
G2 G
= =m=
2(1 + )
E2 E

(7.17)

Hence, we have now:

1
1

E (1 )
1
D=

(1 + )(1 2 )

symm.

61

1
1

0
1 2
2(1 )
0

(7.18)

Associated Professor Dr. Viktor Hristovski

The stiffness matrix of the element ijm can now be computed according to the general
relationship (5.20), however, remembering that the volume integral has to be taken over the whole ring
of material. Thus, we have:
T

K ije = 2 B DB j r dr dz
i

(7.19)

with B and D defined previously.


The integration cannot now be performed as simply as was the case in the plane stress
problem because the B matrix depends on the coordinates. Two possibilities exist: the first that of
numerical integration and the second of an explicit multiplication and term-by-term integration.
The simplest approximate procedure is to evaluate B for a centroidal point

r=
z=

ri + rj + rm
3
zi + z j + z m

(7.20)

In this case we have simply as a first approximation


T

K ije = 2 B i DB j r

(7.21)

with being the triangle area.


More elaborate numerical integration schemes could be used by evaluating the integrand at
several point of the triangle. It can be shown that if the numerical integration is of such an order that
the volume of the element is exactly determined by it, then in the limit of subdivisions, the solution
will converge to the exact answer. The one-point integration suggested here is of such a type, as it is
well known that the volume of a body of revolution is given exactly by the product of the area and the
path swept around by its centroid. With the simple triangular element used here a fairly fine
subdivisions is in any case needed for accuracy and most practical programs use the simple
approximation which, surprisingly perhaps, is in fact usually superior to the exact integration.
In the case of the two-dimensional problems of the previous chapter the question of assigning
of the external loads was so obvious as not to need further comment. In the present case, however, it is
important to realize that the nodal forces represent a combined effect of the force acting along the
whole circumference of the circle forming the element node. This point was already brought out in
the integration of the expressions for the stiffness of an element, such integration being conducted over
the whole ring.
Thus, if R and Z represent the radial and axial components, respectively, of force per unit
length of the circumference of a node or a radius r, the external force which will have to be introduced
in the computation in radial direction will be 2r R and in the axial direction 2r Z (Fig.7.4).
Nodal forces due to initial strain can be calculated, again using the equation (5.21) obtaining:
T

f e = 2 B D 0 r dr dz
or noting that 0 is constant:

f ie = 2 BTi r dr dz D 0

(7.22)

(7.23)

The integration can be performed in a similar manner to that used in the determination of the
stiffness. It will be readily seen that, again, an approximate expression using a centroidal value is

62

Application of Finite Element Method in Structural Analysis


T

f ie = 2 B i D 0 r

(7.24)

Initial stress forces are treated in an identical manner.


Distributed body forces, such as those due to gravity (if acting along z axis), centrifugal force
in rotating machine parts, or pore pressure, often occur in axisymmetric problems. Let such forces be
denoted by

b
b = r
bz

(7.25)

per unit volume of material in directions of r and z respectively. By the general equation (5.21), we
have

b
f ie = 2 IN i r rdr dz
bz

(7.26)

Using a coordinate shift similar to that of the previous chapter it is easy to show that the first
approximation, if the body forces are constant, results in

b r
f ie = 2 r
bz 3

(7.27)

Although this is not exact the error term will be found to decrease with reduction of element
size and, as it is also self-balancing, it will not introduce inaccuracies.
The stresses now vary throughout the element, as will be appreciated from the B matrix. It is
convenient now to evaluate the average stress at the centroid of the element. The stress vector will be:

z

e

= r = DBa e D 0 + 0

rz

(7.28)

It will be found that a certain amount of oscillation of stress values between elements occurs
and better approximation can be achieved by averaging nodal stresses.

Axisymmetry plane strain and plane stress


In the previous chapter we have noted that plane stress and strain analysis was done in terms of three
stress and strain components and, indeed, both cases would be generally incorporated in a single
program with an indicator changing appropriate constants in the matrix D. Doing this loses track of
the z component in the plane strain case which has to be separately evaluated. Further, special
expressions had to be used to introduce initial strains. This is inconvenient (especially when non-linear
constitutive laws are used), and an alternative of writing the plane strain case in terms of four stressstrain components as a special case of axisymmetric analysis is highly recommended.
If the axisymmetric strain definition is examine, we note that

if r = 0 ( plane strain)
Thus plane strain conditions are obtained.
If we replace the coordinates r and z by x and y and further change in the stiffness expressions
the volume of integration, the axisymmetric formulation becomes available from plane strain directly.

63

Associated Professor Dr. Viktor Hristovski

Fig. 7.4 A body of revolution subjected to axial and radial distributed loadings
Plane stress conditions can similarly be incorporated. Thus at the cost of an additional storage
of the fourth stress and strain component, all the cases discussed can be incorporated in a single
format, as follows:

T = { x y xy z }, z = 0
T = { x y xy z }, z = 0
T = { r

z rz }

for plane stress


for plane strain
for axisymmetry

and

E (1 ) 1
D=
(1 + )(1 2 ) 0

1
1

1 2
2(1 )

E
D=
1 2 0

0
1
0
2
0
0

64

0
0
0

for plane strain and axisymmetry

for plane stress

Application of Finite Element Method in Structural Analysis

CHAPTER 8

Three-dimensional Stress Analysis


The development of powerful computers now offers possibilities of costly three-dimensional stress
analyses.
The states of stresses and strains in space are determined using 6 componental vectors:

x

y

= z
xy
yz

zx

and

x

y

= z
xy
yz

zx

(8.1)

The Fig.8.1 illustrates a tetrahedral element i,j,m,p in space defined by the x,y and z
coordinates.
The state of displacement of a point is defined by three displacement components u,v and w in
directions of the three coordinates x, y and z. Thus

u

u = v
w

Fig. 8.1 Three-dimensional tetrahedral element

65

(8.2)

Associated Professor Dr. Viktor Hristovski

Just as in a plane triangle where a linear variation of a quantity was defined by its three nodal
values, here a linear variation will be defined by the four nodal values. Hence, we can write, for
instance

u = 1 + 2 x + 3 y + 4 z

(8.3)

Equating the values of displacement at the nodes we have four equations of the type

ui = 1 + 2 xi + 3 yi + 4 zi , etc.

(8.4)

from which 1 to 4 can be evaluated.


Again, it is possible to write this solution in a form similar to that for the plane stress and
strain by using a determinant form, i.e.

1
(ai + bi x + ci y + d i z )ui + (a j + b j x + c j y + d j z )u j +
6V
+ (am + bm x + cm y + d m z )um + (a p + b p x + c p y + d p z )u p

u=

(8.5)

with

1
6V = det

xi

yi

zi

1 xj

yj

zj

1 xm
1 xp

ym
yp

zm
zp

(8.6)

in which, the value V represents the volume of the tetrahedron. By expanding the other relevant
determinants into their cofactors we have

xj

yj

zj

ai = det xm
xp

ym
yp

zm
zp

xj

yj

zj

bi = det 1 ym
1 yp

zm
zp

1 zj

xj

ci = det xm 1 z m
xp 1 z p

d i = det xm
xp

yj

(8.7)

ym 1
yp 1

with the other constants defined by cyclic interchange of the subscripts in the order p,i,j,m. The
ordering of nodal numbers p,i,j,m must follow a right-hand rule.; In this the first three nodes are
numbered in an anticlockwise manner when viewed from the last one.
The element displacement is defined by the 12 displacement components of the nodes as

ai
a
j
e
a =
a m
a p

(8.8)

ui

a i = vi , etc.
w
i

(8.9)

with

66

Application of Finite Element Method in Structural Analysis

We can write the displacements of an arbitrary point as

u

u = v = Na e = IN i IN j IN m IN p a e
w

(8.10)

with shape functions defined as

Ni =

ai + bi x + ci y + d i z
, etc.
6V

(8.11)

and I being a three by three identity matrix.


Six strain components are relevant in full three-dimensional analysis. The strain matrix can
now be defined as

u
x
v

x
y
y w


= z = u z v = Su
xy +
yz y x
v w
zx +
z y

w + u
x z

(8.12)

Using the equations (8.10) it is an easy matter to verify that

ai
a
j
e
= Ba = B i B j B m B p
a m
a p

(8.13)

in which

N i
x

0
B i = SN i = N
i
y

N i
z

0
N i
y
0
N i
x
N i
z
0

0
bi

0
N i

0
1
z =

0 6V ci

N i
d i

y
N i
x

0
ci
0
bi
di
0

0
0
di
, etc.
0
ci

bi

with other submatrices obtained in a similar manner simply by interchange of subscripts.

67

(8.14)

Associated Professor Dr. Viktor Hristovski

Initial strains, such as those due to thermal expansion, can be written in the usual way as a sixcomponent vector which, for example, in an isotropic thermal expansion is simply

x 0 e
e
y 0
z 0 e
0 =

=
xy 0 0
yz 0 0

zx 0 0

(8.15)

with being the expansion coefficient and e the average element temperature rise.
With complete anisotropy the D matrix relating the six stress components to the strain
components can contain 21 independent constants. In general, thus,

x

y

= z = D( 0 ) + 0
xy
yz

zx

(8.16)

For isotropic material, in terms of usual elastic constants E (modulus of elasticity) and
(Poissons ratio), the elasticity matrix can be written as

0
(1 ) (1 )
1

1
0
(1 )

1
0

1 2
E (1 )
D=
2(1 )
(1 + )(1 2 )

symm.

0
0
0
0
1 2
2(1 )

0
0

0
(8.17)

1 2
2(1 )
0

The stiffness matrix defined by the general relationship (5.20) can now be explicitly integrated
since the strain and stress components are constant within the element. The general ij submatrix of the
stiffness matrix will be a three by three matrix defined as

K ije = BTi DB jV e

(8.18)

where V represents the volume of the elementary tetrahedron.


The nodal forces due to initial strain from (5.21) become

f ie = BTi D 0V e

(8.19)

Stresses (8.1) can be again calculated in the standard manner:

= DBa e D 0 + 0

68

(8.20)

Application of Finite Element Method in Structural Analysis

CHAPTER 9

Shape Functions
In previous discussions we saw in some detail how linear elasticity problems could be formulated and
solved using very simple finite element forms. Although the detailed algebra was concerned with
shape functions, which arose from triangular and tetrahedral shapes only it should by now be obvious
that other element forms could equally well be used. Indeed, once the element and the corresponding
shape functions are determined, subsequent operations follow a standard, well-defined path. It will be
seen later that in fact it is possible to program a computer to deal with wide classes of problems by
specifying the shape functions only. The choice of these is, however, a matter to which intelligence
has to be applied and in which the human factor remains paramount. In this chapter some rules for
generation of several families of two- and three-dimensional elements will be presented.
In the problems of elasticity presented in previous lectures, displacement variable was a vector
with two or three components and the shape functions were written in a matrix form. They were,
however, derived for each component separately and in fact the matrix expressions in these were
derived by multiplying a scalar function by an identity matrix. We shell therefore concentrate in this
chapter on the scalar shape function forms, calling them simply Ni.
The shape functions used in the displacement formulation of elasticity problems were such
that to satisfy the following convergence criteria:
(a) The continuity of the unknown only has to occur between elements (i.e., slope continuity
is not required), or, in mathematical language, C0 continuity is required;
(b) The function has to allow any arbitrary linear form to be taken so that the constant strain
(constant first derivative) criterion could be observed.
The shape functions to be described in this chapter will require the satisfaction of these two
criteria. They will thus be applicable also to all other problems which require these conditions to be
obeyed.
The element families discussed will progressively have an increasing number of degree of
freedom. The question may well be asked as to whether any economic or other advantage is gained by
increasing thus the complexity of an element. The answer here is not an easy one although it can be
stated as a general rule that as the order of an element increases so the total number of unknowns in a
problem can be reduced for a given accuracy of representation. Economic advantage requires,
however, a reduction of total computation and data preparation effort, and this does not follow
automatically for a reduced number of total variables because, though equation-solving times may be
reduced, the time required for element formulation increases.

Standard and hierarchical concept


The basic approximation of the finite element method is related to the following expansion:
^

u u = N i ai = Na
i =1

where ai are the unknown parameters to be determined.

69

(9.1)

Associated Professor Dr. Viktor Hristovski

We have explicitly chosen to identify such variables with the values of the unknown function
at element nodes, thus making:

ui = ai

(9.2)

The shape functions so defined will be referred to as standard ones (Fig. 9.1) and are the basis
of most finite element programs. If polynomial expansions are used it is clear that a constant value of
^

ai specified at all nodes must result in a constant value of u :


^

u = ui

(9.3)

From the Eq. (9.1) it follows that:


n

N
i =1

=1

(9.4)

at all points of the domain.


A serious drawback exists, however, with these standard shape functions as when element
refinement is made totally new shape functions have to be generated and hence all calculations
repeated. It would be of advantage to avoid this difficulty by considering the first equation as a series
in which the shape function Ni does not depend on the number of nodes in the mesh n. This indeed is
achieved with hierarchic shape functions.
The hierarchic concept is well illustrated by a one-dimensional (elastic bar) problem of the
given Fig. 9.2. Two meshes are shown and a linear interpolation between nodal points assumed. For
both standard and hierarchic form the coarse mesh gives:

K11c a1c = f1

(9.5)

For a fine mesh two additional nodes are added and with the standard shape function the
equations requiring solution are:

K11F
F
K 21
0

K12F
K
K

F
22
F
32

0 a1 f1

K 23F a2 = f 2
K 33F a3 f 3

Fig. 9.1 Standard shape function concept

70

(9.6)

Application of Finite Element Method in Structural Analysis

With hierarchic form using shape functions shown in the Fig. 9.2, a similar form of equation
arises and an identical approximation is achieved (being simply given by a series of straight
segments). The final solution is identical but the meaning of the parameters a1=a1* is now different, as
shown in the figure.
Quite generally:

K11F = K11c

(9.7)

as an identical shape function is used for the first variable. Further, in this particular case the offdiagonal coefficients are zero and the final equations become for the fine mesh:

K11c

0
0

0
K 22F
0

0 a1* f1

0 a2* = f 2
K 33F a3* f 3

(9.8)

The diagonality feature is only true in the one-dimensional problem, but in general it will be found that
the matrices obtained using hierarchic shape functions are nearly diagonal and hence imply better
conditioning than those with standard shape functions.

Fig. 9.2 Hierarchical shape function concept

Standard shape functions


Rectangular elements
Consider, for instance, a rectangle shown in the Fig. 9.3 with nodal points numbered 1 to 8, located as
shown, and at which the values of an unknown function u (horizontal component of displacement)
form the element parameters. How can suitable shape functions for this element be determined?
Let us first assume that u is expressed in polynomial form in x and y. To ensure interelement
continuity of u along the top and bottom sides the variation must be linear. Two points at which the
function is common between elements lying above or below exist, and as two values determine
uniquely a linear function, its identity all along these sides is ensured with that given by adjacent
elements.

71

Associated Professor Dr. Viktor Hristovski

Similarly, if a cubic variation along the vertical sides is assumed, continuity will be preserved
there as four values determine a unique cubic expansion. Conditions for satisfying the first criterion
are now obtained.

Fig. 9.3 Example of a rectangular element


To ensure the existence of constant values of the first derivative all that is necessary is that all
the linear terms of the expansion be retained.
Finally, as eight points are to determine uniquely the variation of the function only eight
coefficients of the expansion can be retained and thus we could write:

u = 1 + 2 x + 3 y + 4 xy + 5 y 2 + 6 xy 2 + 7 y 3 + 8 xy 3

(9.9)

Substituting coordinates of the various nodes a set of simultaneous equations will be obtained.
This can be written in exactly the same manner as was done for a triangle as:

u1 1 x1

: = . .
u . .
8

y1

x1 y1

y12

x1 y12

y13

.
.

.
.

.
.

.
.

.
.

x1 y13 1

. :
. 8

(9.10)

or simply as

u e = C

(9.11)

= C 1u e

(9.12)

u = P = PC 1u e

(9.13)

Formally

and we could write

in which

P= 1 x

y2

xy

xy 2

y3

xy 3

(9.14)

Thus the shape functions for the element defined by

u = Nu e = [N1

N 2 ... N 8 ]u e

can be found as

72

(9.15)

Application of Finite Element Method in Structural Analysis

N = PC 1

(9.16)

This process, frequently used in practice as it does not involve much ingenuity, has, however,
some considerable disadvantages. Occasionally an inverse of C may not exist and always considerable
algebraic difficulty is experienced in obtaining an inverse in general terms suitable for all element
geometries. It is therefore worthwhile to consider whether shape functions Ni(x, y) can be written
down directly. Before doing this some general properties of these functions have to be mentioned.
e
Firstly, these expressions are valid for all components of u and

Ni = 1

(9.17)

at node i and is equal to zero at all other nodes. Further, the basic type of variation along boundaries
defined for continuity purposes (e.g., linear in x and cubic in y in the above example) must be retained.
The typical form of the shape functions for the element considered is illustrated isometrically for two
typical nodes in the Fig. 9.4. It is clear that these could have been written down directly as a product of
a suitable linear function in x with a cubic in y. The easy solution of this example is not always as
obvious but given sufficient ingenuity, a direct derivation of shape function is always recommended.

Fig. 9.4 The first two shape functions for the rectangular element in Fig. 9.3
It will be convenient to use natural (normalized) coordinates in further investigation. Such
normalized coordinates are shown in the Fig. 9.5 and are so chosen that on the faces of rectangle their
values are +-1:

x xc
a

and

73

(9.18a)

Associated Professor Dr. Viktor Hristovski

dx
a
y yc
=
b
dy
d =
b
d =

(9.18b)

Once the shape functions are known in the normalized coordinates, translation into actual
coordinates or transformation of the various expressions occurring, for, instance, in stiffness derivation
is trivial.

Fig. 9.5 Normalized coordinates for a rectangular element


Rectangular elements serendipity family
It is usually most convenient to make the functions dependent on nodal values on the element
boundary. Consider, for instance, the first three elements on the Fig. 9.6. In each a progressively
increasing and equal number of nodes is placed on the element boundary. The variation of function on
the edges to ensure continuity is linear, parabolic, and cubic in increasing element development.
To achieve the shape function for the first element it is obvious that a product of the form

1
( + 1)( + 1) gives unity at top right corners where ==1 and zero at all the other corners. Further,
4
a linear variation of the shape function of all sides exists and hence continuity is satisfied. Introducing
new variables 0 = i 0 = i the form

Ni =

1
( 0 + 1)(0 + 1)
4

(9.19)

allows all shape functions to be written down in one expression.


It is easy to verify that the following functions satisfy all the necessary criteria for quadratic
and cubic members of the family. The above functions have been originally derived by inspection, and
progression to yet higher members is difficult and requires some ingenuity. It was therefore
appropriate to name this family serendipity after the famous princes of Serendip noted for their
chances discoveries.

74

Application of Finite Element Method in Structural Analysis

Fig. 9.6 The family of rectangular elements

Quadratic element
Corner nodes :
1
N i = ( 0 + 1)(0 + 1)( 0 + 0 1)
4
Mid side nodes :
1
i = 0 N i = 1 2 (1 + 0 )
2
1
i = 0 N i = (1 + 0 ) 1 2
2

(9.20)

Cubic element
Corner nodes :
1
N i = ( 0 + 1)(0 + 1) 10 + 9 2 + 2
32
Mid side nodes :
1
i = 1 and i =
3
9
N i = ( 0 + 1) 1 2 (1 + 90 )
32

75

)]
(9.21)

Associated Professor Dr. Viktor Hristovski

Triangular elements
The advantage of an arbitrary triangular shape in approximating to any boundary shape has
been amply demonstrated in earlier lectures. The question of generating more elaborate elements
needs to be further developed.
Consider a series of triangles generated on a pattern indicated in the Fig. 9.7. The number of
nodes in each member of the family is now such that a complete polynomial expansion, of the order
needed for interelement compatibility, is ensured. For this triangle family the inverse of the C matrices
will always exist.

Fig. 9.7 The family of triangular elements


However, once again a direct generation of shape functions will be preferred and indeed will
be shown to be particularly easy.
Before proceeding further it is convenient to define a special set of normalized coordinates for
a triangle.
Area coordinates for triangles
While cartesian directions parallel to the sides of a rectangle were a natural choice for that shape, in
the triangle these are not convenient. A convenient set of coordinates, L1, L2, and L3 for a triangle
1,2,3 (in the Fig. 9.8) is defined by the following linear relation between these and the cartesian
system:

x = L1 x1 + L2 x2 + L3 x3
y = L1 y1 + L2 y2 + L3 y3
1 = L1 + L2 + L3

76

(9.22)

Application of Finite Element Method in Structural Analysis

To every set, L1, L2, and L3 (which are not independent, but are related by the third equation),
corresponds a unique set of cartesian coordinates. At point 1, L1=1 and L2 = L3 =0. A linear relation
between the new and cartesian coordinates implies that contours of L1 are equally placed straight lines
parallel to side 2-3 on which L1 =0, etc.

Fig. 9.8 Definition of the area coordinates


Indeed it is easy to see that an alternative definition of the coordinate L1 of a point P is by a
ratio of the area of the triangle P23 to that of the total triangle:

L1 =

area P 23
area 123

(9.23)

Hence the name of area coordinates.


We can obtain inverse relation between area and cartesian coordinates:

a1 + b1 x + c1 y
2
a2 + b2 x + c2 y
L2 =
2
a + b x + c3 y
L3 = 3 3
2

L1 =

(9.24)

in which

1 x1
1
= det 1 x2
2
1 x3

y1
y2 = area 123
y3

(9.25)

and

a1 = x2 y3 x3 y2
b1 = y2 y3

(9.26)

c1 = x3 x2 , etc.
etc., with cyclic rotation of indices 1, 2 and 3.
The identity of expressions with those derived in previous chapters for simple triangular
element is worth remarking upon.

77

Associated Professor Dr. Viktor Hristovski

For the first element of the series the shape functions are simply the area coordinates. Thus

N1 = L1
N 2 = L2

(9.27)

N 3 = L3
This is obvious as each individually gives unity at one node, zero at others, and varies linearly
elsewhere.
For the higher order triangular elements the shape functions are the following:
For quadratic triangle:

Corner nodes :
N1 = (2 L1 1)L1 , etc.
Mid side nodes :

(9.28)

N 4 = 4 L1 L2 , etc.
For cubic triangle:

Corner nodes :

1
(3L1 1)(3L1 2)L1 , etc.
2
Mid side nodes :
N1 =

9
N 4 = L1 L2 (3L1 1), etc.
2
Internal node :

(9.29)

N10 = 27 L1 L2 L3
Three-dimensional rectangular prisms
In a precisely analogous way to that given in two-dimensional elements, equivalent elements of threedimensional type can be described (Fig. 9.9).
Using now three normalized coordinates and following the same terminology as for the
rectangular elements, we have the following shape functions:
For linear elements with 8 nodes:

Ni =

1
(1 + 0 )(1 + 0 )(1 + 0 )
8

(9.30)

For quadratic element with 20 nodes:

Corner nodes :
1
N i = (1 + 0 )(1 + 0 )(1 + 0 )( 0 + 0 + 0 2 )
8
Typical mid side nodes :
i = 0 i = 1 i = 1
Ni =

1
1 2 (1 + 0 )(1 + 0 )
4

For cubic element with 32 nodes:

78

(9.31)

Application of Finite Element Method in Structural Analysis

Corner nodes :

[(

1
(1 + 0 )(1 + 0 )(1 + 0 ) 9 2 + 2 + 2 19
64
(9.32)
Typical mid side nodes :
1
i =
i = 1 i = 1
3
9
Ni =
1 2 (1 + 9 0 )(1 + 0 )(1 + 0 )
64
Ni =

Fig. 9.9 Three-dimensional elements

79

Associated Professor Dr. Viktor Hristovski

80

Application of Finite Element Method in Structural Analysis

CHAPTER 10

Mapped Elements and Numerical Integration


In the previous chapter we have shown how some general families of finite elements can be obtained.
A progressively increasing number of nodes and hence improved accuracy characterizes each new
member of the family and presumably the number of such elements required to obtain an adequate
solution decreases rapidly. This chapter is concerned with the subject of distorting the simple forms of
elements into others of more arbitrary shape.
Elements of the basic one-, two-, or three-dimensional types can be mapped into distorted
forms in the manner indicated in the Figure 10.1. In these figure it is shown that the , or L1, L2, L3
coordinates can be distorted to a new, curvilinear set when plotted in a Cartesian x, y space.
This principle applies generally, providing some one-to-one correspondence between
Cartesian and curvilinear coordinates can be established, i.e., once the mapping relations of the type

x

y =
z



f or

L1
L

f 2
L3
L4

(10.1)

Once such coordinate relationships are known, shape functions can be specified in local
coordinates and by suitable transformations the element properties established in the global system.
In what follows we shell first discuss the so-called isoparametric form of above relationship,
which was found a great deal of practical application. Full details of this formulation will be given,
including the establishment of element properties by numerical integration, which are essential.

Parametric curvilinear coordinates


A most convenient method of establishing the coordinate transformations is to use the standard type of
shape functions we have already derived to represent the variation of the unknown function.
If we write, for instance, for each element

x1

x = N x + N x + ... = N x2 = N ' x
:

'
1 1

'
2 2

'

y1

y = N1' y1 + N 2' y 2 + ... = N ' y 2 = N ' y
:

81

(10.2)

Associated Professor Dr. Viktor Hristovski

z1

z = N1' z1 + N 2' z 2 + ... = N ' z 2 = N ' z
:

in which N are standard shape functions given in terms of the local coordinates, then immediately a
relationship of the required form is available.
It can be shown that with a parametric transformation based on bilinear shape functions, the
necessary condition is that no internal angle (such as in Fig. 10.2) be greater than 180o. In
transformations based on parabolic serendipity functions, it is necessary in addition to this
requirement to ensure that the mid-side nodes are in the middle half of the distance between adjacent
corners but a middle third shown in Fig.10.2 is safer. For cubic functions such general rules are
impractical and numerical checks on the sign of the Jacobian determinant are necessary. In practice a
parabolic distortion is usually sufficient.
While it was shown that by the use of the shape function transformation each parent element
maps uniquely a part of the real object, it is important that the subdivision of this into the new, curved,
elements should leave no gaps.

Figure 10.1

Mapped rectangular and triangular elements

THEOREM 1: If two adjacent elements are generated form parents in which the shape
functions satisfy continuity requirements then the distorted elements will be contiguous.
THEOREM 2: If the shape functions N are such that continuity of u is preserved in the parent
coordinates then the continuity requirements will be satisfied in distorted elements.
The nodal values may or may not be associated with the same nodes as used to specify the
element geometry. For example, in Fig. 3 the points marked with a circle are used to define the
element geometry. We could use the values of the function defined at nodes marked with a square to
define the variation of the unknown.

82

Application of Finite Element Method in Structural Analysis

If the same points define the geometry and the variation of unknowns, i.e., if the shape
functions defining geometry and unknown functions are the same, the elements will be called
isoparametric.
We could, however, use only the four corner points to define the variation of u. Such an
element we shell refer to as superparametric, noting that the variation of geometry is more general
than that of the actual unknown.
Similarly, for instance we introduce more nodes to define u that are used to define geometry,
subparametric elements will result. Such elements will be found to be more often of use in practice.
While for mapping it is convenient to use standard forms of shape functions the interpolation
of the unknown can, of course, use hierarchic forms. Once again the definitions of sub- and
superparametric variations are applicable.

Figure 10.2

Conditions for safe mapping

Transformations
To perform finite element analysis the matrices defining element properties, e.g., stiffness, etc., have
to be found. These will be of the form:

GdV

83

(10.3)

Associated Professor Dr. Viktor Hristovski

in which the matrix G depends on N or its derivatives with respect to global coordinates. As an
example of this we have the stiffness matrix

DBdV and associated load vectors N bdV .


V

For each particular class of elastic problems the matrices of B are given explicitly by their
components. Quoting the first of these, valid for plane problems we have:

N i
y
N i

N i

x
Bi = 0

N
i
y

(10.4)

In the elasticity problems the matrix G is thus a function of the first derivatives of N and this
situation will arise in many other classes of problem.

Figure 10.3

Isoparametric, superparametric and subparametric formulation

To evaluate such matrices we note that two transformations are necessary. In the first place, as

Ni is defined in terms of local (curvilinear) coordinates, it is necessary to devise some means of


expressing the global derivatives of the type occurring in the equation for evaluation of B in terms of
local derivatives.

84

Application of Finite Element Method in Structural Analysis

In the second place the element of volume (or surface) over which the integration has to be
carried out needs to be expressed in terms of the local coordinates with an appropriate change of limits
of integration.
Consider, for instance, the set of local coordinates , , , and a corresponding set og global
coordinates x, y, z. By the usual rules of partial differentiation we can write, for instance, the
derivative as:

N i N i x N i y N i z
=
+
+

x y z

(10.5)

N i = N i [x( , , ), y ( , , ), z ( , , )]

(10.6)

since

Performing the same differentiation with respect to the other two coordinates and writing in
matrix form we have:

N i x

N i x
=

i x

z N i
N i

x
N

z N i
i
J
=

y
y

z N i
N i

z
z

(10.7)

In the above, the left-hand side can be evaluated as the functions Ni are specified in local
coordinates. Further, as x, y, z are explicitly given by the relation defining the curvilinear coordinates,
the matrix J can be found explicitly in terms of the local coordinates. This matrix is known as the
Jacobian matrix.
To find now the global derivatives we invert J and write:

N i
N i

x

N
i
1 N i
J
=


y
N i
N i

z

(10.8)

In terms of the shape function defining the coordinate transformation N(which is the same
with N when isoparametric formulation is used) we have:

N i'
xi

N '
J = i xi

N i'

x
i

N i'
yi
N i'
yi
N i'
yi

N i'
zi

N i'
zi

N i'
z
i

(10.9)

To transform the variables and the region with respect to which the integration is made a
standard process will be used which involves the determinant of J. Thus, for instance, a volume
element becomes:

dx dy dz = det J d d d
85

(10.10)

Associated Professor Dr. Viktor Hristovski

In elasticity and other applications, surface integrals frequently occur. Typical here are the
expressions for evaluating the contributions of surface tractions:
T

f = N t dA

(10.11)

The element dA will generally lie on a surface where one of the coordinates (say ) is
constant. The most convenient proves of dealing with the above is to consider dA as a vector oriented
in the direction normal to the surface. For three-dimensional problems we form a vector product (Fig.
10.4):

x x


y y
dA = d d = d d

z z

(10.12)

and on substitution integrate within a domain 1 , 1 .

Figure 10.4

Calculation of the infinitesimal area dA

For two dimensions a line length dS arises and here the magnitude is simply:

x


y
dS = d

z

(10.13)

on constant surfaces.
The general relationship for coordinate mapping and indeed all the following theorems are
equally valid for any set of local coordinates and could relate the local L1, L2, coordinates used for
triangles and tetrahedral, to the global Cartesian ones. Indeed most of the previous discussion is valid
if we simply rename the local coordinates suitably. However, two important differences arise.

86

Application of Finite Element Method in Structural Analysis

The first concerns the fact that the local coordinates are not independent and in fact number
one more than the Cartesian system. The matrix J would apparently therefore become rectangular and
would not posses an inverse. The second is simply the difference of integration limits, which have to
correspond with a triangular or tetrahedral parent.
The simplest, though perhaps not the most elegant, way out of the first difficulty is to consider
the last variable as a dependent one. Thus, for example, we can introduce formally, in the case of
tetrahedral:

= L1
= L2
= L3
1 = L4

(10.14)

As the functions Ni are given in fact in terms of L1, L2, etc., we must observe that:

N i N i L1 N i L2 N i L3 N i L4
+
+
+
=
L1 L2 L3 L4

(10.15)

N i N i N i
=

L1 L4

(10.16)

or simply:

with the other derivatives obtainable by similar expressions.


The integration limits instead of 1 to 1 now change, however, to correspond with the
tetrahedron limits. Typicaly:
1 1 1


0 0

G ( , , )d d d

(10.17)

The same procedure clearly will apply in the case of triangular coordinates.

Numerical Integration
Already in some of the previous discussions dealing with a relatively simple problem of axisymmetric
stress distribution and simple triangular elements it was noted that exact integration of expressions for
element matrices could be troublesome. Now for the more complex distorted elements numerical
integration is essential.

Newton-Cotes quadrature
In the most obvious procedure, points at which the function is to be found are determined a priori
usually at equal intervals and a polynomial passed through the values of the function at these points
and exactly integrated (Fig. 10.5, up).
As n values of the function define a polynomial of degree n-1 the errors will be of order O(hn)
where h is the element size. This leads to the well-known Newton-Cotes quadrature formulae. The
integrals can be written as:
n

I = f ( )d = H i f ( i )
1

(10.18)

for the range of integration between 1 and +1. For example, if n=2, we have well-known trapezoidal
rule:

I = f ( 1) + f (1)

87

(10.19)

Associated Professor Dr. Viktor Hristovski

for n=3, the Simpsons one-third rule:

I=

1
[ f ( 1) + 4 f (0) + f (1)]
3

(10.20)

and for n=4:

I=

Figure 10.5

1
1
1
f ( 1) + 3 f + 3 f + f (1)

4
3
3

(10.21)

Newton-Cotes and Gauss integration

Gauss quadrature
If in place of specifying the position of sampling points a priori we allow these to be located at points
to be determined so as to aim for best accuracy, then for a given number of sampling points an
increased accuracy can be obtained. Indeed, if we consider again that:

88

Application of Finite Element Method in Structural Analysis

I = f ( )d = H i f ( i )
1

(10.22)

and assume again a polynomial expression, it is easy to see that for n sampling points we have 2n
unknowns (Hi and i) and hence a polynomial of degree 2n-1 could be constructed and exactly
integrated. The error thus is of order O(h2n).
For illustration, if we need to calculate the integral I using two integration points (See Fig.
10.5 down) , and if we approximate the function f() as a polynomial function of type:

f ( ) = 0 + 1 + 2 2 + 3 3

(10.23)

the integral I after the integration is:


1
2
I = f ( )d = 2 0 + 2
1
3

(10.24)

If we use the approximated formula, this integral is:


n

I = H i f ( i ) = H [ f ( a) + f (+ a )] =
1

= H 0 + 1a + 2 a 2 + 3 a 3 + 0 1a + 2 a 2 3 a 3 =

= 2H 0 + 2a 2

(10.25)

Unknown coefficients i can be determined from the condition that the difference between the
exact and approximate integration be set to minimum. Hence:

1
= I I = 2 0 + 2 H 0 + 2 a 2
3

= 0 1 H = 0 H = 1
0

=0
2

(10.26)

1
1
a2 = 0 a =
= 0.57735
3
3

So, the value of the integral I is:

I = 1 f ( 0.57735) + 1 f (+ 0.57735)

(10.27)

For the case of two-dimensional integration, like rectangular regions (Fig. 10.6), the most
obvious way of obtaining the integral:
1 1

I=

f ( , ) d d

(10.28)

1 1

is to first evaluate the inner integral keeping constant, i.e.,


1

f ( , ) d = H j f ( j , ) = ( )
n

j =1

Evaluating the outer integral in a similar manner, we have:

89

(10.29)

Associated Professor Dr. Viktor Hristovski

I = ( )d = H j ( ) =
1

j =1

= H i H j f ( j , ) =
n

i =1

j =1

=
i =1

(10.30)

H H f ( , )
n

j =1

It is of interest to note that in fact the double summation can be readily interpreted as a single
ona over (n x n) points for a rectangle (or n3 points for a cube). Thus, in Fig. 10.6 we show the nine
sampling points that result in exact integrals of order 5 in each direction.
However, we could approach the problem directly and require an exact integration of a fifthorder polynomial in two directions. At any sampling point two coordinates and a value of f have to be
determined in a weighting formula of type:
1

I =

f ( , ) d d = wi f ( i ,i )

(10.31)

There it would appear that only seven points would suffice to obtain the same order of
accuracy.

Figure 10.6

Two-dimensional integration

Example
Let us derive the stiffness matrix for an iso-parametric quadratic element with 4 nodes given in
curvilinear coordinates (Fig. 10.7), for plane stress and plane strain cases.
The solution will be given in the following six steps.

90

Application of Finite Element Method in Structural Analysis

Figure 10.7

Iso-parametric quadratic element with 4 nodes

2. Derivatives of shape functions :


N1 1
N1 1
= ( 1 + )
= ( 1 + )
4

4
N 2 1
N 2 1
= ( 1 )
= (1 )
4

4
N 3 1
N 3 1
= (1 + )
= (1 + )
4
4

N 4 1
N 4 1
= ( 1 )
= (1 )
4
4

1. Shape functions :
1
N1 = (1 + )
4
1
N 2 = (1 + )
4
1
N 3 = (1 + + + )
4
1
N 4 = (1 + )
4
3. B matrix
N1

x
B= 0

N
1
y

N 2
x

N1
0
y
N1 N 2
x y

N 3
x

N 2
0
y
N 2 N 3
x y

N 4
x

N 3
0
y
N 3 N 4
x y

N 4
y
N 4

4. Transformation from normalized to Cartesian c.s.


N i = N i [x( , , ), y ( , , )]

N i N i x N i
+
=
x y

N i N i x N i
=
+

x y
or

91

Associated Professor Dr. Viktor Hristovski

N i x

N = x
i

N i
y
N i

x
1
1

N = J N =
y
i det J
i


y
det J =

by the way :

y N i
x

y N i

x = N i xi
i =1
4

y = N i yi

i =1

4
x
N
= i xi
i =1
4
N
x
= i xi
i =1

x y y x

4
N
y
= i yi
i =1
4
N
y
= i yi
i =1

5. D matrix for isotropic case of plane stress

1
0

E
1
0
D=
1 2
1

0 0
2

D matrix for isotropic case of plane strain

0
1

(1 )
E (1 )

1
0
D=

(
)
1

(1 + )(1 2 )

(1 2 )
0
0
2(1 )

6. Stiffness matrix
T

K = t B DB dx dy
V

dx dy = det J d d

K = t H i H j BT ( i , j )DB( i , j )det J ( i , j )
n

i =1 j =1

if n = 2 :
H1 = H 2 = 1.0

1/ 2 = 0.577350269189626
1/ 2 = 0.577350269189626

92

Application of Finite Element Method in Structural Analysis

CHAPTER 11

Patch Test for Element Validation


The successful application of finite element analysis should always include a validation of the element
to be used and its implementation in a specific computer program. Usually, the elements utilized in
most problem classes are very well understood and tested. However, some applications can be difficult
to model, and the elements used for their analysis may be more prone to numerical difficulties.
Therefore, one should subject elements to be used to a series of element validation tests.
Two of the most common and important tests are the patch test introduced by Irons and the
single-element tests proposed by Robinson. The single-element tests generally show the effects of
element geometrical parameters such as convexity, aspect ratio, skewness, taper, and out-of-plane
warpage. It is most commonly utilized to test for a sensitivity to element aspect ratio. The singleelement test usually consists of taking a single element in rectangular, triangular, or line form,
considering it is a complete domain, and then investigating its behavior for various load or boundary
conditions as a geometrical parameter is varied. An analytical solution is usually available for such a
test.
The patch test has been proven to be a valid convergence test. It was developed from physical
intuition and later written in mathematical forms. The basic concept is fairly simple. Imagine what
happens as one introduces a very large, almost infinite, number of elements. Clearly, they would
become very small in size. If we think of the quantities being integrated to form the element matrices,
we can make an observation about how the solution would behave in this limit. The integrand, such as
the strain energy, contains derivative terms that would become constant as the element size shrinks
toward zero. Thus, to be valid in the limit, the element formulation must, at least, be able to yield the
correct results in that state. That is, to be assured of convergence one must be able to exactly satisfy
the state where the derivatives, in the governing integral statement, take on constant or zero values.
This condition can be stated as a mathematical test or as a simple numerical test. The latter option is
what we want here. The patch test provides a simple numerical way for a user to test an element, or
complete computer program, to verify that it behaves as it should.
We define a patch of elements to be a mesh where at least one node is completely surrounded
by elements. Any node of this type is referred to as an interior node. The other nodes are referred to as
exterior or perimeter nodes. We will compute the dependent variable at all interior nodes. The
derivatives of the dependent variable will be computed in each element. The perimeter nodes are
utilized to introduce the essential boundary conditions and/or loads required by the test. Assume that
the governing integral statement has derivatives of order n. We would like to find boundary conditions
that would make those derivatives constant. This can be done by selecting an arbitrary n-th order
polynomial function of the global coordinates to describe the dependent variable in the global space
that is covered by the patch mesh. Clearly, the n-th order derivatives of such a function would be
constant as desired. The assumed polynomial is used to define the essential boundary conditions on the
perimeter nodes of the patch mesh.
This is done by substituting the input coordinates at the perimeter nodes into the assumed
function and computing the required value of the dependent variable at each such node. Once all of the
perimeter boundary conditions are known, the solution can be numerically executed. The resulting
values of the dependent variable are computed at each interior node. To pass the patch test, these
computed interval values must agree with the values found when their internal nodal coordinates are

93

Associated Professor Dr. Viktor Hristovski

substituted into the assumed global polynomial. However, the real test is that when each element is
checked, the calculated n-th order derivatives must agree with the arbitrary assumed values used to
generate the global function. If an element does not satisfy this test, it should not be used. The patch
test can also be used for other purposes. For example, the analyst may wish to distort the element
shape and/or change the numerical integration rule to see what effect that has on the numerical
accuracy of the patch test.

Convergence requirements
We shall consider in the following the patch test as applied to a finite element solution of a set of
differential equations:

A(u ) L(u ) + g = 0

(11.1)

in domain together with the conditions:

B (u ) = 0

(11.2)

on the boundary of the domain, G.


The finite element approximation is given in the form:
^

u u = Na

(11.3)

where N are shape functions defined in each element, e, end a are unknown parameters.
By applying standard procedures of finite element approximation the problem reduces in a
linear case to a set of algebraic equations:

Ka = f

(11.4)

which when solved give an approximation to the differential equation and its boundary conditions.
What is meant by convergence in the approximation sense is that the approximate solution
u^ should tend to exact solution u when the size of the elements h approaches zero.
To ensure convergence it is necessary that the approximation fulfill both consistency and
stability conditions.
The consistency requirement ensures that as the size of the element h tends to zero, the
approximation equation will represent the exact differential equation and the boundary conditions (at
least in the weak sense).
The stability condition is simply translated as a requirement that the solution of the discrete
equation system be unique and avoid spurious mechanisms which may pollute the solution for all sizes
of elements. For linear problems in which we solve the system of algebraic equations as:

a = K 1f

(11.5)

this means simply that the matrix K must be non-singular for all possible element assemblies.

The simple patch test (forms A and B) a necessary condition for convergence
We shall first consider the consistency condition which requires that in the limit (as h tends to zero)
the finite element approximation should model exactly the differential equation of the problem
together with the boundary conditions. If we consider a small region of the domain (of size 2h) we can
expand the unknown function u and the essential derivatives entering the weak approximation in a
Taylor series. From this we conclude that for convergence of the function and its first derivative in
typical problems of a second-order equation and two dimensions, we require that around a point i
assumed to be at coordinate origin,

94

Application of Finite Element Method in Structural Analysis

u
u
u = ui + x + y + O h p
x i
y i

( )

u u
= + O h p 1
x x i

( )

(11.6)

u u
= + O h p 1
y y i

( )

with p 2 . The finite element approximation should therefore reproduce exactly the problem posed
for any linear forms of u as h tends to zero. Similar conditions can obviously be written for higher
order problems. This requirement is tested by the current interpretation of the patch test illustrated in
Fig. 11.1 a and b.

Fig. 11.1 a. Patch test A

Fig. 11.1 b. Patch test B

95

Associated Professor Dr. Viktor Hristovski

In this we compute first an arbitrary linear solution of the differential equation and the
corresponding set of parameters a at all nodes of a patch which assembles completely the nodal
variable ai (i.e., provides all the equation terms corresponding to it).
In test A we simply insert the exact value of the parameters a into the ith equation and verify
that:

K ij a j f i 0

(11.7)

In test B only the values of a corresponding to the boundaries of the patch are inserted and ai
is found as:

ai = K ii1 ( f i K ij a j )

ji

(11.8)

and compared against the exact value.


Both patch tests verify only the satisfaction of the basic differential equation and not of the
boundary approximations, as these have been explicitly excluded here.

Generalized patch test (test C)


The previously described patch tests were shown to be necessary conditions for convergence of the
formulation but did not establish sufficient conditions for it. In particular, it omitted the testing of the
boundary load approximation for the case when the natural conditions are specified. Further, it did not
verify the stability of the approximation. A test including a check on the above conditions is easily
constructed. We show this in Fig. 11.2 as the test C. In this the patch of elements is assembled as
before but subject to prescribed natural boundary conditions (or tractions around its perimeter). The
assembled matrix of the whole patch is written as:

Ka = f

(11.9)

Fixing only the minimum number of parameters a necessary to obtain a physically valid
solution (e.g., eliminating the rigid body motion in an elasticity example or a single value of
temperature in a heat conduction problem) a solution is sought for remaining a values and compared
with the exact basic solution assumed.
Now any singularity of the K matrix will be immediately observed and, as the vector f
includes all necessary source and boundary traction terms, the formulation will be completely tested
(providing of course a sufficient number of test states are used). The test described is now not only
necessary but sufficient for convergence.

Fig. 11.2 Patch test C

96

Application of Finite Element Method in Structural Analysis

Example with the bar element


As a simple elementary example of an analytic solution of the patch test, consider the bar element. The
smallest possible patch is one with two line elements. Such a patch has two exterior nodes and one
interior node. For simplicity, let the lengths of the two elements be equal and have a value of L. The
governing integral statement contains only the first derivative of u. Thus, an arbitrary linear function
can be selected for the patch test, since it would have a constant first derivative. Therefore, select
u ( x) = a + bx for 0 x 2 L , where a and b are arbitrary constants. Assembling the two-element
patch gives:

1
0 u1 F1
1
AE

1 (1 + 1) 1 u 2 = 0

L
0
1
1 u3 F3

(11.10)

where F1 and F3 are the unknown reactions associated with the prescribed external displacements.
These two exterior patch boundary conditions are obtained by substituting their nodal coordinates into
the assumed patch solution:

u1 = u ( x1 ) = a + b(0) = a, u3 = u ( x3 ) = a + b(2 L) = a + 2bL

(11.11)

Modifying the assembled equations to include the patch essential boundary conditions gives:

0 1 0 a F1
1
1
AE

aAE (a + 2bL )AE

0 2 0 u 2 = 0
1
1
L
L
L
0
0
0 1 0 a + 2bL F3

(11.12)

Retaining the independent second equation gives the displacement relation:

2 AE
aAE (a + 2bL )AE
u2 = 0 +
+
L
L
L

(11.13)

Thus, the internal patch displacement is:

u2 =

(2a + 2bL ) = a + bL
2

(11.14)

The value required by the patch test is:

u ( x2 ) = (a + bx2 ) = a + bL

(11.15)

This agrees with the computed solution, as required by a valid element.


Recall that the element strains are defined as follows:

u 2 u1 [(a + bL ) a ]
=
=b
L
L
u u
[(a + 2bL ) (a + bL )] = b
e = 2: = 3 2 =
L
L

e = 1: =

(11.16)

Thus, all element derivatives are constant. However, these constants must agree with the
constant assumed in the patch. That value is:

du d (a + bx )
=
=b
dx
dx

Therefore, the patch test is completely satisfied.

97

(11.17)

Associated Professor Dr. Viktor Hristovski

Such a procedure also verifies that the computer program satisfies certain minimum
requirements. A problem with some elements is that they can pass the patch test for a uniform mesh,
but fail when an arbitrary irregular mesh is employed. Thus, as a general rule, one should try to avoid
conducting the test with a regular mesh, such as that given in the above example. It would have been
wiser to use unequal element lengths such as L and L, where is an arbitrary constant. The linear
bar element should pass the test for any scaling ratio, . However, for near zero, numerical illconditioning begins to affect the answer.

98

Application of Finite Element Method in Structural Analysis

CHAPTER 12

Implementation of the Iso-parametric Elements


into a Computer Code
Introduction
The software module FEM3 is an educational program and its purpose is to teach beginners in
finite element technique how to apply this method. Although it is an education purpose program, many
efficient features are incorporated in it, which can be used for further development of the program. For
example, using the sky-line scheme for storage of the global stiffness matrix and the fast solverequation algorithm, we are able to solve systems with large number of degrees of freedom. Also,
automatic dynamic allocation of the arrays allows flexibility during dimensioning of their size, which
is a very important feature for proper usage of the RAM (in-core) memory. In addition, an option for
adding nodal (concentrated) springs is given. Also, the introduction of boundary conditions (fixed
degrees of freedom) is made by using the technique described in.
Present version of the program FEM3 is capable of performing linear static and modal (eigen)
analysis of an elastic continuum in plane-stress, plane-strain and axisymmetric conditions, using:
triangular finite elements with 3 and 6 nodes and quadrilater finite elements with 4, 8 and 9 nodes.
Each node of the elements has 2 degrees of freedom (D.O.F.) : x-translation and y-translation. The
methods used in the program are:
- Crouts method for solution of the linear set of equilibrium equations;
- Inverse vector iteration and Gram-Shmidt ortogonalization sheme for solution of eigenproblem.

Preparation of Input Data File


DATA 1: Title (one line)
Columns
1-70
text
Title for identification of the problem
One free line for comment
DATA 2: General Data (one line)
Columns:
1-5
isw
Phisical problem definition:
= 1 - plane stress
= 2 - plane strain
= 3 - axisymmetry
6-10
nn
Total number of nodes
11-15
nmat Total number of material types
15-20
ne3
Total number of triangular elements with 3 nodes
21-25
ne4
Total number of quadrilateral elements with 4 nodes
26-30
ne6
Total number of triangular elements with 6 nodes
31-35
ne8
Total number of quadrilateral elements with 8 nodes

99

Associated Professor Dr. Viktor Hristovski

36-40
41-45
46-50

ne9
nl
ian

51-55
56-60
61-70

nton
nt
acc

Total number of quadrilateral elements with 9 nodes


Total number of nodes with applied concentrated loads
Analysis type:
0 Static + modal analysis
1 Only modal analysis
2 Only static analysis
Number of mode shapes to be calculated
Maxim number of iterations during eigen-solution process
Accuracy of the eigen-solution iterations

One free line for comment


DATA 3: Nodal coordinates, fixity, nodal springs and lumped masses (nn lines)
Columns:
1-5
i
Number of the actual node
6-15
x(i)
x coordinate of the i-th node
16-25
y(i)
y coordinate of the i-th node
26-30
lx(i)
fixity of the i-th node in x-direction:
0 x-D.O.F. is free
1 x-D.O.F. is fixed
31-35
ly(i)
fixity of the i-th node in y-direction:
0 y-D.O.F. is free
1 y-D.O.F. is fixed
36-45
sprx(i) Added spring to i-th node (units: force/length) in x-direction
46-55
spry(i) Added spring to i-th node (units: force/length) in y-direction
56-65
amx Lumped mass for i-th node in x-direction
66-75
amy Lumped mass for i-th node in y-direction
if ne3 > 0: One free line for comment
DATA 4: Triangular element with 3 nodes connectivities (ne3 lines)
Columns:
1-5
i
Number of the actual element
6-10
imat3(i)
Number of the adopted material type for i-th element
11-15
ijk3(1,i)
Connection of the first node
16-20
ijk3(2,i)
Connection of the second node
21-25
ijk3(3,i)
Connection of the third node
if ne4 > 0: One free line for comment
DATA 5: Quadrilateral element with 4 nodes connectivities (ne4 lines)
Columns:
1-5
i
Number of the actual element
6-10
imat4(i)
Number of the adopted material type for i-th element
11-15
ijk4(1,i)
Connection of the first node
16-20
ijk4(2,i)
Connection of the second node
21-25
ijk4(3,i)
Connection of the third node
26-30
ijk4(4,i)
Connection of the fourth node
if ne6 > 0: One free line for comment
DATA 6: Triangular element with 6 nodes connectivities (ne6 lines)
Columns:
1-5
i
Number of the actual element
6-10
imat6(i)
Number of the adopted material type for i-th element

100

Application of Finite Element Method in Structural Analysis

11-15
16-20
21-25
26-30
31-35
36-40

ijk6(1,i)
ijk6(2,i)
ijk6(3,i)
ijk6(4,i)
ijk6(5,i)
ijk6(6,i)

Connection of the first node


Connection of the second node
Connection of the third node
Connection of the fourth node
Connection of the fifth node
Connection of the sixth node

if ne8 > 0: One free line for comment


DATA 7: Quadrilateral element with 8 nodes connectivities (ne8 lines)
Columns:
1-5
i
Number of the actual element
6-10
imat8(i)
Number of the adopted material type for i-th element
11-15
ijk8(1,i)
Connection of the first node
16-20
ijk8(2,i)
Connection of the second node
21-25
ijk8(3,i)
Connection of the third node
26-30
ijk8(4,i)
Connection of the fourth node
31-35
ijk8(5,i)
Connection of the fifth node
36-40
ijk8(6,i)
Connection of the sixth node
41-45
ijk8(7,i)
Connection of the seventh node
46-50
ijk8(8,i)
Connection of the eight node
if ne9 > 0: One free line for comment
DATA 8: Quadrilateral element with 9 nodes connectivities (ne9 lines)
Columns:
1-5
i
Number of the actual element
6-10
imat9(i)
Number of the adopted material type for i-th element
11-15
ijk9(1,i)
Connection of the first node
16-20
ijk9(2,i)
Connection of the second node
21-25
ijk9(3,i)
Connection of the third node
26-30
ijk9(4,i)
Connection of the fourth node
31-35
ijk9(5,i)
Connection of the fifth node
36-40
ijk9(6,i)
Connection of the sixth node
41-45
ijk9(7,i)
Connection of the seventh node
46-50
ijk9(8,i)
Connection of the eight node
51-55
ijk9(9,i)
Connection of the nineth node
One free line for comment
DATA 9: Applied nodal forces (nl lines)
Columns:
1-5
i
Number of the node subjected to the load xl(i) and yl(i)
6-15
xl(i)
Value of the subjected load for i-th node in x-direction
16-25
yl(i)
Value of the subjected load for i-th node in y-direction
One free line for comment
DATA 10: Material properties set (nmat lines)
Columns:
1-5
i
Material identification number
1-10
ee
Modulus of elasticity of the material
11-20
pp
Poissons coefficient of the material
21-30
tt
Thicknes of the elements

101

Associated Professor Dr. Viktor Hristovski

Examples
Example 1: Static analysis of a cantilever beam subjected to bending
Input Data File (ex1n):
EXAMPLE 1 (CANTILEVER BEAM)
isw
nn nmat ne3 ne4 ne6 ne8
Parameters
1
10
1
8
0
0
0
node
x(node)
y(node)
lx
ly
1
0.0
0.0
1
1
2
0.0
0.1
1
1
3
0.1
0.0
0
0
4
0.1
0.1
0
0
5
0.2
0.0
0
0
6
0.2
0.1
0
0
7
0.3
0.0
0
0
8
0.3
0.1
0
0
9
0.4
0.0
0
0
10
0.4
0.1
0
0
iel
it
m1
m2
m3
1
1
1
3
2
2
1
3
4
2
3
1
3
5
4
4
1
5
6
4
5
1
5
7
6
6
1
7
8
6
7
1
7
9
8
8
1
9
10
8
node
Fx
Fy
9
0.0
-50.0
10
0.0
-50.0
i
E
ni
t
1210000000.
0.3
0.02

ne9

nl

2
sprx
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00

ian nton

nt

acc !General System

0
0
0.0000
spry
mx
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
! Element Connections

my
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00

! Applied Nodal Loads


! Material Properties: E, ni, t

Output File (ex1n.out):


OBTAINED NODAL DISPLACEMENTS
Node=
Node=
Node=
Node=
Node=
Node=
Node=
Node=
Node=
Node=

1
2
3
4
5
6
7
8
9
10

d(x)
d(x)
d(x)
d(x)
d(x)
d(x)
d(x)
d(x)
d(x)
d(x)

=
=
=
=
=
=
=
=
=
=

-.400000E-27
0.400000E-27
-.113352E-03
0.116679E-03
-.190305E-03
0.200394E-03
-.235019E-03
0.251982E-03
-.247629E-03
0.271471E-03

d(y)
d(y)
d(y)
d(y)
d(y)
d(y)
d(y)
d(y)
d(y)
d(y)

=
=
=
=
=
=
=
=
=
=

-.216893E-27
0.116893E-27
-.171375E-03
-.182465E-03
-.543464E-03
-.554916E-03
-.104421E-02
-.105568E-02
-.160917E-02
-.162063E-02

OBTAINED STRAINS AND STRESSES IN THE TRIANGULAR ELEMENTS WITH 3 NODES


Element:

eps_x = -.113352E-02 Gx = -261581.


eps_y = 0.333786E-26 Gy = -78474.4
gama_xy = -.171375E-02 Txy = -138419.

Element:

Element:

eps_x = 0.116679E-02 Gx =
eps_y = -.110895E-03 Gy =
gama_xy = 0.475659E-03 Txy =

261581.
55186.6
38418.6

eps_x = -.769529E-03 Gx = -185261.


eps_y = -.110895E-03 Gy = -78866.2
gama_xy = -.142058E-02 Txy = -114739.

102

Application of Finite Element Method in Structural Analysis


Element:

eps_x = 0.837153E-03 Gx =
eps_y = -.114516E-03 Gy =
gama_xy = 0.182483E-03 Txy =

Element:

Element:

Element:

Element:

185261.
31529.9
14739.0

eps_x = -.447137E-03 Gx = -111114.


eps_y = -.114516E-03 Gy = -57382.5
gama_xy = -.110050E-02 Txy = -88886.4
eps_x = 0.515883E-03 Gx = 111114.
eps_y = -.114634E-03 Gy = 9260.84
gama_xy = -.137597E-03 Txy = -11113.6
eps_x = -.126104E-03 Gx = -37037.1
eps_y = -.114634E-03 Gy = -35184.4
gama_xy = -.779540E-03 Txy = -62962.9
eps_x = 0.194886E-03 Gx = 37037.1
eps_y = -.114638E-03 Gy = -12962.9
gama_xy = -.458555E-03 Txy = -37037.1

Listing of the Source Code


Main program "fem3"
(line-no.)(nest)
1
!
Last change: VH
14 Apr 2003
10:50 am
2
PROGRAM fem3
3
!..................................................................
4
!
.
5
! Program FEM3 for Introduction in Finite Element Method
.
6
! Applied in Elasto-Static Problems
.
7
!
.
8
!..................................................................
9
!
.
10
! Version V3.0 April, 2003
.
11
!
.
12
! Author: Viktor HRISTOVSKI
.
13
!
.
14
!..................................................................
15
!
.
16
! Compiled by Lahey Fortran 95 (LF95) Version 5.60h
.
17
! Use the following option for compiling and linking the program: .
18
! > lf95 fem3.f90 trian6.f90 quad489.f90
.
19
!
.
20
!..................................................................
21
!
.
22
! Grasped problems:
.
23
! Solution of 2D Static and modal (eigen) analysis using :
.
24
! 1. Triangular finite elements with 3 and 6 nodes
.
25
! 2. Quadrilateral finite elements with 4, 8 and 9 nodes
.
26
!
.
27
!..................................................................
28
!
.
29
! Incorporated options:
.
30
! 1. Added concentrated springs to nodes
.
31
! 2. Lumped nodal masses
.
32
! 3. Introduction of fixed boundary condition
.
33
!
.
34
!..................................................................
35
!
.
36
! Applied algorithms:
.
37
! 1. Sky-line stiffness matrix storage scheme
.
38
! 2. Crout's algorithm for equilibrium equations solution
.
39
! 3. Inverse-vector iteration method for eigen-problem solution
.
40
!
.
41
!..................................................................
42
43
! Declaration of Variables
44
IMPLICIT NONE
45
REAL(KIND=8), ALLOCATABLE
:: x(:), y(:), xl(:), yl(:), &
46
sprx(:), spry(:), cx(:), cxx(:), cy(:)
47
REAL(KIND=8), ALLOCATABLE
:: ff(:), dd(:), am(:), ts(:), ee(:), pp(:), tt(:)
48
REAL(KIND=8)
:: acc
49
INTEGER(KIND=4), ALLOCATABLE :: lx(:), ly(:), idiag(:)
50
INTEGER(KIND=4), ALLOCATABLE :: ijk3(:,:), ijk4(:,:), ijk6(:,:), ijk8(:,:), ijk9(:,:), &
51
imat3(:), imat4(:), imat6(:), imat8(:), imat9(:)
52
INTEGER(KIND=4)
:: i, j, kk, indx, nen, nee, &
53
isw, nn, nmat, ne3, ne4, ne6, ne8, ne9, nl, n, nak, ned, ian
54
INTEGER(KIND=4)
:: nchar, iticks1, iticks2, nton, nt
55
INTEGER(KIND=2)
:: ierror
56
INTEGER(KIND=4), PARAMETER
:: inp = 1, nout = 2, nperd = 3, nfak = 4
57
CHARACTER(LEN=70)
:: text
58
CHARACTER(LEN=12)
:: input
59
CHARACTER(LEN=21)
:: time
60
61
! Read Input Data from the Input File
62
WRITE(*,'(/a\)')' Enter input filename > '
63
READ(*,*)input
64
65
! Number of characters (nchar) of input file name string "inp"

103

Associated Professor Dr. Viktor Hristovski


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168

1
2
2
2
2
2
1

nchar = 0
DO i=1,256
IF(input(i:i).NE.' ')THEN
nchar = nchar + 1
ELSE
EXIT
END IF
END DO
OPEN(UNIT=inp, FILE=input(1:nchar), STATUS='unknown', FORM='formatted')
! Starting Time : time1
CALL timer(iticks1)
! Unformatted File for Storing Stiffness Matrix ts()
OPEN(UNIT=nfak, FILE=input(1:nchar) // '.fak', STATUS='unknown',&
FORM='unformatted')
WRITE(*,*)' Read Input Data From the Input File'
! Read General System Data
READ(inp,'(a)')text
READ(inp,*)
!Blank line for comment
READ(inp,'(12i5, f10.0)')isw, nn, nmat, ne3, ne4, ne6, ne8, ne9, nl, ian, nton, nt, acc
! text - identification title of the problem
! isw - phisical problem definition:
!
= 1 - plane stress
!
= 2 - plane strain
!
= 3 - axisymmetry
! nn - total number of nodes
! nmat - total number of material types
! ne3 - total number of triangular elements with 3 nodes
! ne4 - total number of quadrilateral elements with 4 nodes
! ne6 - total number of triangular elements with 6 nodes
! ne8 - total number of quadrilateral elements with 8 nodes
! ne9 - total number of quadrilateral elements with 9 nodes
! nl - total number of nodes with applied nodal loads
! ian - Analysis type:
!
ian = 0 - Static + Modal Analysis + Dynamic Analysis (not yet active)
!
ian = 1 - Only Modal Analysis
!
ian = 2 - Only Static Analysis
!
ian = 3 - Only Modal + Dynamic Analysis (not yet active)
! nton - Number of mode shapes to be calculated
! nt - Maximum number of iterations during modal analysis (100-250)
! acc - Accuracy of iterations during modal analysis (0.0001-0.001)
ned=2
! D.O.F. per node
n=nn*ned ! Total number of equations
! Allocate Arrays
ALLOCATE(x(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(y(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(xl(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(yl(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(sprx(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(spry(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(am(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough
ALLOCATE(cx(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough
ALLOCATE(cxx(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough
ALLOCATE(cy(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough
ALLOCATE(ff(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough
ALLOCATE(dd(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough

memory for allocation! '


memory for allocation! '
memory for allocation! '
memory for allocation! '
memory for allocation! '
memory for allocation! '

ALLOCATE(lx(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(ly(nn),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(idiag(n),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(ijk3(3, ne3),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(ijk6(6, ne6),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(ijk4(4, ne4),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(ijk8(8, ne8),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(ijk9(9, ne9),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(imat3(ne3),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(imat4(ne4),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(imat6(ne6),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(imat8(ne8),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory
ALLOCATE(imat9(ne9),STAT=ierror)

for allocation! '


for allocation! '
for allocation! '
for allocation! '
for allocation! '
for allocation! '
for allocation! '
for allocation! '
for allocation! '

104

Application of Finite Element Method in Structural Analysis


169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271

IF(ierror.NE.0)STOP ' Not enough memory for allocation! '


ALLOCATE(ee(nmat),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(pp(nmat),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
ALLOCATE(tt(nmat),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
! Read input data
CALL rd(inp, nn, nmat, ne3, ne4, ne6, ne8, ne9, nl, x, y, lx, ly, ijk3, ijk4, ijk6, &
ijk8, ijk9, imat3, imat4, imat6, imat8, imat9, xl, yl, ee, pp, tt, &
sprx, spry, am, text)

1
1
1

! Print Input Data for Chek in the Output File


WRITE(*,*)' Print Input Echo in the Output File'
OPEN(UNIT=nout,FILE=input(1:nchar) // '.out', STATUS='unknown', &
FORM='formatted')
WRITE(nout,'(a)')text
WRITE(nout,*)' GENERAL SYSTEM PARAMETERS'
WRITE(nout,'(12i5, f10.7)')isw, nn, nmat, ne3, ne4, ne6, ne8, ne9, nl, ian, nton, nt, acc
WRITE(nout,*)' NODAL COORDINATES, FIXITY, SPRINGS AND MASSES'
DO i=1,nn
WRITE(nout,'(i5,2f10.5,2i5, 4f10.2)')i, x(i), y(i), lx(i), ly(i), &
sprx(i), spry(i), am((i-1)*2+1), am(i*2)
END DO
IF(ne3.NE.0) THEN
WRITE(nout,*)' TRIANGULAR ELEMENTS WITH 3 NODES (CONNECTIONS)'
DO i=1, ne3
WRITE(nout,'(5i5)')i, imat3(i), ijk3(1,i), ijk3(2,i), ijk3(3,i)
END DO
END IF
IF(ne6.NE.0) THEN
WRITE(nout,*)' TRIANGULAR ELEMENTS WITH 6 NODES (CONNECTIONS)'
DO i=1, ne6
WRITE(nout,'(8i5)')i, imat6(i), ijk6(1,i), ijk6(2,i), ijk6(3,i), ijk6(4,i), &
ijk6(5,i), ijk6(6,i)
END DO
END IF
IF(ne4.NE.0) THEN
WRITE(nout,*)' QUADRILATERAL ELEMENTS WITH 4 NODES (CONNECTIONS)'
DO i=1, ne4
WRITE(nout,'(6i5)')i, imat4(i), ijk4(1,i), ijk4(2,i), ijk4(3,i), ijk4(4,i)
END DO
END IF
IF(ne8.NE.0) THEN
WRITE(nout,*)' QUADRILATERAL ELEMENTS WITH 8 NODES (CONNECTIONS)'
DO i=1, ne8
WRITE(nout,'(10i5)')i, imat8(i), ijk8(1,i), ijk8(2,i), ijk8(3,i), ijk8(4,i), &
ijk8(5,i), ijk8(6,i), ijk8(7,i), ijk8(8,i)
END DO
END IF
IF(ne9.NE.0) THEN
WRITE(nout,*)' QUADRILATERAL ELEMENTS WITH 9 NODES (CONNECTIONS)'
DO i=1, ne9
WRITE(nout,'(11i5)')i, imat9(i), ijk9(1,i), ijk9(2,i), ijk9(3,i), ijk9(4,i), &
ijk9(5,i), ijk9(6,i), ijk9(7,i), ijk9(8,i), ijk9(9,i)
END DO
END IF
WRITE(nout,*)' APPLIED LOADS'
DO i=1,nn
WRITE(nout,'(i5,2f10.3)')i, xl(i), yl(i)
END DO
WRITE(nout,*)' MATERIAL PROPERTIES'
DO i=1, nmat
WRITE(nout,'(i5, f10.0,2f10.3)') i, ee(i), pp(i), tt(i)
END DO

1
1
1
1
1
1
1

! Form Nodal Force Vector


WRITE(*,*)' Form the Nodal Force Vector'
DO i=1, nn*2
ff(i) = 0.D0
END DO
DO i=1, nn
ff(i*2-1) = ff(i*2-1) + xl(i)
ff(i*2)
= ff(i*2)
+ yl(i)
END DO

1
1
1
1
1
1
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
2
1
1
1
1

1
1
1

1
1
1

! Calculate column heights and diagonal addresses of the sky-line


! global stiffness matrix
DO i=1, n
idiag(i) = 0
END DO
CALL colheigh(ne3, ne4, ne6, ne8, ne9, ijk3, ijk4, ijk6, ijk8, ijk9, n, nak, ned, idiag)
! Clean the Global Stiffness Matrix ts()
WRITE(*,*)' Clean the Global Stiffness Matrix'
ALLOCATE(ts(nak),STAT=ierror)
IF(ierror.NE.0)STOP ' Not enough memory for allocation! '
DO i=1, nak
ts(i) = 0.D0
END DO
! Assemble the Global Stiffness Matrix
CALL glstif(isw, ee, pp, tt, ne3, ijk3, ne4, ijk4, ne6, ijk6, ne8, ijk8, &
ne9, ijk9, imat3, imat4, imat6, imat8, imat9, idiag, x, y, ts)

1
2
2
2

! Set Boundary Conditions


WRITE(*,*)' Set Boundary Conditions'
DO i=1, nn
IF(lx(i).EQ.1)THEN
kk = (i-1)*2+1
indx = idiag(kk)

105

Associated Professor Dr. Viktor Hristovski


272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374

2
2
2
2
2
2
2
1

ts(indx) = 1.0D+30
END IF
IF(ly(i).EQ.1)THEN
kk = i*2
indx = idiag(kk)
ts(indx) = 1.0D+30
END IF
END DO

1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1

! Add Springs
WRITE(*,*)' Adding Springs'
DO i=1, nn
IF(lx(i).EQ.0)THEN
kk = (i-1)*2+1
indx = idiag(kk)
ts(indx) = ts(indx) + sprx(i)
ELSE IF(lx(i).EQ.1)THEN
IF(sprx(i).NE.0.D0) &
STOP 'Input error: Spring added to a fixed node!'
END IF
IF(ly(i).EQ.0)THEN
kk = i*2
indx = idiag(kk)
ts(indx) = ts(indx) + spry(i)
ELSE IF(ly(i).EQ.1)THEN
IF(spry(i).NE.0.D0) &
STOP 'Input error: Spring added to a fixed node!'
END IF
END DO
! Solve the Static Equilibrium Equations
WRITE(*,*)' Solve Static Equilibrium Equations'
CALL factor(ts, idiag, n)
! Triangularization if ts()
REWIND (UNIT=nfak)
WRITE(nfak)(ts(i),i=1, nak)

1
2
2
2
1
1
1
1
1
1
2
2
2
2
1
1
1
1

IF(ian.EQ.0.OR.ian.EQ.2)THEN ! Static Analysis


DO i=1, n
dd(i) = ff(i)
END DO
CALL back(ts, dd, idiag, n) ! Solution
! Print the Obtained Displacements in the Output File
WRITE(*,*)' Print the Obtained Displacements in the Output File'
WRITE(nout,1)text
1 FORMAT(a70,//' OBTAINED NODAL DISPLACEMENTS '/)
DO i=1, nn
WRITE(nout,2)i, dd(i*2-1), dd(i*2)
2 FORMAT(' Node=',i5,' d(x) = ',g12.6,' d(y) = ',g12.6)
END DO
CALL stresses(nout, ne3, ne4, ne6, ne8, ne9, x, y, ijk3, ijk4, ijk6, ijk8, ijk9, &
ee, pp, tt, imat3, imat4, imat6, imat8, imat9, isw, dd)
END IF

1
1
1
1
1

! Modal (Eigen) Analysis


IF(ian.EQ.0.OR.ian.EQ.1.OR.ian.EQ.3)THEN
CALL inviter(am, ts, cx, cy, nperd, nak, n, nton, nt, acc, &
input, nchar, idiag, cxx, nfak)
CALL printmod(nton, nt, acc, nperd, nn, n, ned, cy, input, nchar)
END IF

1
1
1

! Linear Dynamic Analysis (not yet active)


IF(ian.EQ.3) THEN
CONTINUE
END IF
! Close Files
CLOSE(UNIT=nfak)
! Deallocate Arrays
DEALLOCATE(x, y, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: x, y !'
DEALLOCATE(xl, yl, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: xl, yl !'
DEALLOCATE(ff, dd, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: ff, dd !'
DEALLOCATE(lx, ly, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: lx, ly !'
DEALLOCATE(sprx, spry, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: sprx, spry !'
DEALLOCATE(cx, cy, cxx, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: cx, cy, cxx !'
DEALLOCATE(idiag, ijk3, ijk4, ijk6, ijk8, ijk9, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: idiag, ijk3, ijk4, ijk6, ijk8, ijk9 !'
DEALLOCATE(imat3, imat4, imat6, imat8, imat9, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: imat3, imat4, imat6, imat8, imat9 !'
DEALLOCATE(ee, pp, tt, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: ee, pp, tt !'
DEALLOCATE(ts, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: ts !'
DEALLOCATE(am, STAT=ierror)
IF(ierror.NE.0)STOP ' Deallocation error: am !'
! Finishing Time : time2
CALL timer(iticks2)
PRINT *,'Output File (Static Analysis):', input(1:nchar) // '.OUT'
PRINT *,'Output File (Modal Analysis):', input(1:nchar) // '.EIG'
PRINT *,'Termination of the execution!'
CALL cput(iticks1, iticks2, time)
PAUSE ' Press ENTER to terminate execution. . .'
STOP

106

Application of Finite Element Method in Structural Analysis


375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477

END PROGRAM fem3


SUBROUTINE rd(inp, nn, nmat, ne3, ne4, ne6, ne8, ne9, nl, x, y, lx, ly, ijk3, ijk4, ijk6, &
ijk8, ijk9, imat3, imat4, imat6, imat8, imat9, xl, yl, ee, pp, tt, &
sprx, spry, am, text)
! Subroutine for Reading Input Data
IMPLICIT NONE
CHARACTER(LEN=*)
:: text
INTEGER(KIND=4)
:: inp
INTEGER(KIND=4)
:: nn, nmat, ne3, ne4, ne6, ne8, ne9, nl
REAL(KIND=8), DIMENSION(1)
:: x, y, xl, yl, sprx, spry, am, ee, pp, tt
INTEGER(KIND=4), DIMENSION(1)
:: lx, ly, imat3, imat4, imat6, imat8, imat9
INTEGER(KIND=4), DIMENSION(3, ne3) :: ijk3
INTEGER(KIND=4), DIMENSION(4, ne4) :: ijk4
INTEGER(KIND=4), DIMENSION(6, ne6) :: ijk6
INTEGER(KIND=4), DIMENSION(8, ne8) :: ijk8
INTEGER(KIND=4), DIMENSION(9, ne9) :: ijk9
REAL(KIND=8)
:: amx, amy
INTEGER(KIND=4)
:: i, j, k, n
1
1
1

! Clean masses
DO k=1, nn*2
am(k)=0.D0
END DO

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

! Read Nodal Coordinates


READ(inp,*)
!Blank line for comment
DO k=1, nn
READ(inp,'(i5,2f10.0,2i5,4f10.0)')i, x(i), y(i), lx(i), ly(i), &
sprx(i), spry(i), amx, amy
j=(i-1)*2+1
am(j) = am(j)
+ amx
am(j+1)= am(j+1) + amy
! i
- number of the actual node
! x(i) - x coordinate of i-th node
! y(i) - y coordinate of i-th node
! lx(i) - boundary condition of the i-th node in x-direction
! ly(i) - boundary condition of the i-th node in y-direction
!
IF lx(i)=0 => i-th node is free in x-direction
!
IF ly(i)=0 => i-th node is free in y-direction
!
IF lx(i)=1 => i-th node is fixed in x-direction
!
IF ly(i)=1 => i-th node is fixed in y-direction
! sprx(i)-Added spring in x-direction
! spry(i)-Added spring in y-direction
! amx - Lumped mass in x-direction
! amy - Lumped mass in y-direction
END DO

1
1
2
2
2
2
2
2
2
2
1
1
1
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
2
1

! Read Element Connections


IF(ne3.NE.0) THEN
READ(inp,*)
!Blank line for comment
DO k=1, ne3
READ(inp,'(5i5)')i, imat3(i), ijk3(1,i), ijk3(2,i), ijk3(3,i)
! i - number of actual element
! imat3(i) - material type
! ijk3(1,i) - connection of the 1-th (i) node of the i-th element
! ijk3(2,i) - connection of the 2-th (j) node of the i-th element
! ijk3(3,i) - connection of the 3-th (k) node of the i-th element
END DO
END IF
IF(ne4.NE.0) THEN
READ(inp,*)
!Blank line for comment
DO k=1, ne4
READ(inp,'(6i5)')i, imat4(i), ijk4(1,i), ijk4(2,i), ijk4(3,i), ijk4(4,i)
END DO
END IF
IF(ne6.NE.0) THEN
READ(inp,*)
!Blank line for comment
DO k=1, ne6
READ(inp,'(8i5)')i, imat6(i), ijk6(1,i), ijk6(2,i), ijk6(3,i), ijk6(4,i), &
ijk6(5,i), ijk6(6,i)
END DO
END IF
IF(ne8.NE.0) THEN
READ(inp,*)
!Blank line for comment
DO k=1, ne8
READ(inp,'(10i5)')i, imat8(i), ijk8(1,i), ijk8(2,i), ijk8(3,i), ijk8(4,i), &
ijk8(5,i), ijk8(6,i), ijk8(7,i), ijk8(8,i)
END DO
END IF
IF(ne9.NE.0) THEN
READ(inp,*)
!Blank line for comment
DO k=1, ne9
READ(inp,'(11i5)')i, imat9(i), ijk9(1,i), ijk9(2,i), ijk9(3,i), ijk9(4,i), &
ijk9(5,i), ijk9(6,i), ijk9(7,i), ijk9(8,i), ijk9(9,i)
END DO
END IF

1
1
1
1
1
1
1
1
1
1

! Read Applied Nodal Forces


DO k=1, nn
xl(k) = 0.D0
yl(k) = 0.D0
END DO
READ(inp,*)
!Blank line for comment
DO k=1, nl
READ(inp,'(i5,2f10.0)')n, xl(n), yl(n)
! n - number of node subjected to the load xl(n) and yl(n)
! xl(n) - magnitude of the subjected load in the n-th node in x-direction
! yl(n) - magnitude of the subjected load in the n-th node in y-direction
END DO
! Read Material Properties Data

107

Associated Professor Dr. Viktor Hristovski


478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580

1
1
1
1
1
1

READ(inp,*)
!Blank line for comment
DO k=1, nmat
READ(inp,'(i5, 3f10.0)')i, ee(i), pp(i), tt(i)
! ee - Modulus of elasticity of the material
! pp - Poison's coefficient of the material
! tt - thickness of the elements
END DO
RETURN
END SUBROUTINE rd

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

SUBROUTINE colheigh(ne3, ne4, ne6, ne8, ne9, ijk3, ijk4, ijk6, ijk8, ijk9, &
n, nak, ned, idiag)
IMPLICIT NONE
INTEGER(KIND=4)
:: ne3, ne4, ne6, ne8, ne9, n, nak, ned, i, nen
INTEGER(KIND=4), DIMENSION(1)
:: idiag
INTEGER(KIND=4), DIMENSION(18)
:: id
INTEGER(KIND=4), DIMENSION(3, ne3) :: ijk3
INTEGER(KIND=4), DIMENSION(4, ne4) :: ijk4
INTEGER(KIND=4), DIMENSION(6, ne6) :: ijk6
INTEGER(KIND=4), DIMENSION(8, ne8) :: ijk8
INTEGER(KIND=4), DIMENSION(9, ne9) :: ijk9
DO i=1, ne3
nen = 3
id(1)=ijk3(1,i)*2-1
id(2)=ijk3(1,i)*2
id(3)=ijk3(2,i)*2-1
id(4)=ijk3(2,i)*2
id(5)=ijk3(3,i)*2-1
id(6)=ijk3(3,i)*2
CALL colht(idiag, n, ned, nen, id)
END DO
DO i=1, ne4
nen = 4
id(1)=ijk4(1,i)*2-1
id(2)=ijk4(1,i)*2
id(3)=ijk4(2,i)*2-1
id(4)=ijk4(2,i)*2
id(5)=ijk4(3,i)*2-1
id(6)=ijk4(3,i)*2
id(7)=ijk4(4,i)*2-1
id(8)=ijk4(4,i)*2
CALL colht(idiag, n, ned, nen, id)
END DO
DO i=1, ne6
nen = 6
id(1)=ijk6(1,i)*2-1
id(2)=ijk6(1,i)*2
id(3)=ijk6(2,i)*2-1
id(4)=ijk6(2,i)*2
id(5)=ijk6(3,i)*2-1
id(6)=ijk6(3,i)*2
id(7)=ijk6(4,i)*2-1
id(8)=ijk6(4,i)*2
id(9)=ijk6(5,i)*2-1
id(10)=ijk6(5,i)*2
id(11)=ijk6(6,i)*2-1
id(12)=ijk6(6,i)*2
CALL colht(idiag, n, ned, nen, id)
END DO
DO i=1, ne8
nen = 8
id(1)=ijk8(1,i)*2-1
id(2)=ijk8(1,i)*2
id(3)=ijk8(2,i)*2-1
id(4)=ijk8(2,i)*2
id(5)=ijk8(3,i)*2-1
id(6)=ijk8(3,i)*2
id(7)=ijk8(4,i)*2-1
id(8)=ijk8(4,i)*2
id(9)=ijk8(5,i)*2-1
id(10)=ijk8(5,i)*2
id(11)=ijk8(6,i)*2-1
id(12)=ijk8(6,i)*2
id(13)=ijk8(7,i)*2-1
id(14)=ijk8(7,i)*2
id(15)=ijk8(8,i)*2-1
id(16)=ijk8(8,i)*2
CALL colht(idiag, n, ned, nen, id)
END DO
DO i=1, ne9
nen = 9
id(1)=ijk9(1,i)*2-1
id(2)=ijk9(1,i)*2
id(3)=ijk9(2,i)*2-1
id(4)=ijk9(2,i)*2
id(5)=ijk9(3,i)*2-1
id(6)=ijk9(3,i)*2
id(7)=ijk9(4,i)*2-1
id(8)=ijk9(4,i)*2
id(9)=ijk9(5,i)*2-1
id(10)=ijk9(5,i)*2
id(11)=ijk9(6,i)*2-1
id(12)=ijk9(6,i)*2
id(13)=ijk9(7,i)*2-1
id(14)=ijk9(7,i)*2
id(15)=ijk9(8,i)*2-1
id(16)=ijk9(8,i)*2
id(17)=ijk9(9,i)*2-1
id(18)=ijk9(9,i)*2
CALL colht(idiag, n, ned, nen, id)
END DO

108

Application of Finite Element Method in Structural Analysis


581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683

CALL diag(idiag, n, nak) !nak-total number of members in ts()


WRITE(*,*)' Total numer of members in stiffness matrix nak = ', nak
RETURN
END SUBROUTINE colheigh
SUBROUTINE glstif(isw, ee, pp, tt, ne3, ijk3, ne4, ijk4, ne6, ijk6, ne8, ijk8, ne9, &
ijk9, imat3, imat4, imat6, imat8, imat9, idiag, x, y, ts)
IMPLICIT NONE
INTEGER(KIND=4)
:: isw, ne3, ne4, ne6, ne8, ne9, nee, ngaus, i, j, k
INTEGER(KIND=4), DIMENSION(1)
:: imat3, imat4, imat6, imat8, imat9, idiag
INTEGER(KIND=4), DIMENSION(3, ne3) :: ijk3
INTEGER(KIND=4), DIMENSION(4, ne4) :: ijk4
INTEGER(KIND=4), DIMENSION(6, ne6) :: ijk6
INTEGER(KIND=4), DIMENSION(8, ne8) :: ijk8
INTEGER(KIND=4), DIMENSION(9, ne9) :: ijk9
INTEGER(KIND=4), DIMENSION(18)
:: id
INTEGER(KIND=4), DIMENSION(3)
:: m3
INTEGER(KIND=4), DIMENSION(4)
:: m4
INTEGER(KIND=4), DIMENSION(6)
:: m6
INTEGER(KIND=4), DIMENSION(8)
:: m8
INTEGER(KIND=4), DIMENSION(9)
:: m9
INTEGER(KIND=2)
:: ier
REAL(KIND=8), DIMENSION(1)
:: ee, pp, tt, ts
REAL(KIND=8), ALLOCATABLE
:: es(:,:)
REAL(KIND=8), DIMENSION(9)
:: xx, yy
REAL(KIND=8), DIMENSION(1)
:: x, y
REAL(KIND=8)
:: xi, xj, xk, yi, yj, yk
WRITE(*,*)' Assemble the Global Stiffness Matrix'

1
2
2
2
2
2
1
1
1
2
2
2
2
2
1
1
1
1

1
2
2
2
2
2
1
1
1
2
2
2
2
2
1
1
1
1

1
2
2
2
2
2
1
1
1

!
! Triangular element with 3 nodes
!
nee = 6
! Total number of degrees of freedom per element
ALLOCATE(es(nee, nee), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: es(:,:)! '
DO i=1, ne3
DO j=1, 3
xx(j) = x(ijk3(j,i))
yy(j) = y(ijk3(j,i))
m3(j) = ijk3(j,i)
END DO
CALL stiff6 (isw, 3, i, ee(imat3(i)), pp(imat3(i)), tt(imat3(i)), xx, yy, es, m3)
! Locations of the Stiffness Coefficients
DO j=1, 3
k = (j-1)*2+1
id(k) = ijk3(j,i)*2-1
id(k+1) = ijk3(j,i)*2
END DO
! Assembling Global Stiffnes Matrix
CALL addlhs(ts, idiag, id, es, nee)
END DO
! Element DO-loop
DEALLOCATE(es, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: es(:,:)! '
!
! Triangular element with 6 nodes
!
nee = 12
! Total number of degrees of freedom per element
ALLOCATE(es(nee, nee), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: es(:,:)! '
DO i=1, ne6
DO j=1, 6
xx(j) = x(ijk6(j,i))
yy(j) = y(ijk6(j,i))
m6(j) = ijk6(j,i)
END DO
CALL stiff6 (isw, 6, i, ee(imat6(i)), pp(imat6(i)), tt(imat6(i)), xx, yy, es, m6)
! Locations of the Stiffness Coefficients
DO j=1, 6
k = (j-1)*2+1
id(k) = ijk6(j,i)*2-1
id(k+1) = ijk6(j,i)*2
END DO
! Assembling Global Stiffnes Matrix
CALL addlhs(ts, idiag, id, es, nee)
END DO
! Element DO-loop
DEALLOCATE(es, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: es(:,:)! '
!
! Quadrilateral elements
!
nee = 8
! With 4 nodes
ALLOCATE(es(nee, nee), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: es(:,:)! '
ngaus = 2
DO i=1, ne4
DO j=1, 4
xx(j) = x(ijk4(j,i))
yy(j) = y(ijk4(j,i))
m4(j) = ijk4(j,i)
END DO
CALL stiff489 (isw, i, 4, ngaus, ee(imat4(i)), pp(imat4(i)), tt(imat4(i)), &
xx, yy, es, m4)

109

Associated Professor Dr. Viktor Hristovski


684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786

1
2
2
2
2
2
1
1
1
1

1
2
2
2
2
2
1
1
1
1
2
2
2
2
2
1
1
1
1

1
2
2
2
2
2
1
1
1
1
2
2
2
2
2
1
1
1
1

! Locations of the Stiffness Coefficients


DO j=1, 4
k = (j-1)*2+1
id(k) = ijk4(j,i)*2-1
id(k+1) = ijk4(j,i)*2
END DO
! Assembling Global Stiffnes Matrix
CALL addlhs(ts, idiag, id, es, nee)
END DO
! Element DO-loop
DEALLOCATE(es, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: es(:,:)! '
nee = 16
! With 8 nodes
ALLOCATE(es(nee, nee), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: es(:,:)! '
ngaus = 3
DO i=1, ne8
DO j=1, 8
xx(j) = x(ijk8(j,i))
yy(j) = y(ijk8(j,i))
m8(j) = ijk8(j,i)
END DO
CALL stiff489 (isw, i, 8, ngaus, ee(imat8(i)), pp(imat8(i)), tt(imat8(i)), &
xx, yy, es, m8)
! Locations of the Stiffness Coefficients
DO j=1, 8
k = (j-1)*2+1
id(k) = ijk8(j,i)*2-1
id(k+1) = ijk8(j,i)*2
END DO
! Assembling Global Stiffnes Matrix
CALL addlhs(ts, idiag, id, es, nee)
END DO
! Element DO-loop
DEALLOCATE(es, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: es(:,:)! '
nee = 18
! With 9 nodes
ALLOCATE(es(nee, nee), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: es(:,:)! '
ngaus = 3
DO i=1, ne9
DO j=1, 9
xx(j) = x(ijk9(j,i))
yy(j) = y(ijk9(j,i))
m9(j) = ijk9(j,i)
END DO
CALL stiff489 (isw, i, 9, ngaus, ee(imat9(i)), pp(imat9(i)), tt(imat9(i)), &
xx, yy, es, m9)
! Locations of the Stiffness Coefficients
DO j=1, 9
k = (j-1)*2+1
id(k) = ijk9(j,i)*2-1
id(k+1) = ijk9(j,i)*2
END DO
! Assembling Global Stiffnes Matrix
CALL addlhs(ts, idiag, id, es, nee)
END DO
! Element DO-loop
DEALLOCATE(es, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: es(:,:)! '
RETURN
END SUBROUTINE glstif
SUBROUTINE stresses(nout, ne3, ne4, ne6, ne8, ne9, x, y, ijk3, ijk4, ijk6, ijk8, ijk9, &
ee, pp, tt, imat3, imat4, imat6, imat8, imat9, isw, dd)
IMPLICIT NONE
INTEGER(KIND=4)
:: nout, ne3, ne4, ne6, ne8, ne9, ngaus, i, j, &
nstre, isw, kgasp, ngp, nge, igaus, jgaus, &
icase, ne, k, nne, istre, jstre
INTEGER(KIND=2)
:: ier
INTEGER(KIND=4), DIMENSION(1)
:: imat3, imat4, imat6, imat8, imat9
INTEGER(KIND=4), DIMENSION(3, ne3) :: ijk3
INTEGER(KIND=4), DIMENSION(4, ne4) :: ijk4
INTEGER(KIND=4), DIMENSION(6, ne6) :: ijk6
INTEGER(KIND=4), DIMENSION(8, ne8) :: ijk8
INTEGER(KIND=4), DIMENSION(9, ne9) :: ijk9
INTEGER(KIND=4), DIMENSION(18)
:: id
REAL(KIND=8), DIMENSION(1)
:: x, y, dd, ee, pp, tt
REAL(KIND=8), ALLOCATABLE
:: strain(:)
REAL(KIND=8), DIMENSION(6)
:: de
REAL(KIND=8), DIMENSION(4)
:: stress
REAL(KIND=8), DIMENSION(9)
:: shape1
REAL(KIND=8)
:: xi, xj, xk, yi, yj, yk, al11, al22, al33, &
dvolu, djacb, t, sni1, em1, exisp, etasp
REAL(KIND=8), PARAMETER
:: twopi = 6.283185308D0
REAL(KIND=8), DIMENSION(4)
:: posgp, weigp
REAL(KIND=8), ALLOCATABLE
:: dmatx(:,:)
REAL(KIND=8), DIMENSION(2,2)
:: djacm
REAL(KIND=8), DIMENSION(2,9)
:: elcod, eldis, deriv, cartd, gpcod
REAL(KIND=8), DIMENSION(4,18)
:: bmatx
REAL(KIND=8), DIMENSION(3)
:: we6, al1, al2, al3
REAL(KIND=8), DIMENSION(3,6)
:: deriv6
WRITE(*,*)' Calculate Strain and Stresses for elements'

1
1

IF(isw.EQ.1.OR.isw.EQ.2) THEN
nstre = 3

110

Application of Finite Element Method in Structural Analysis


787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889

1
1
1

1
1
2
2
2
2
2
2
2
2
2
1
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
4
4
3
2
2
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
4
4
4
4
4
4
4
4
3
3
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
5
5
5

ELSE IF(isw.EQ.3) THEN


nstre = 4
END IF
ALLOCATE(dmatx(nstre, nstre), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: dmatx(:,:)! '
ALLOCATE(strain(nstre), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: strain(:)! '
! Triangular elements with 3 and 6 nodes
DO icase=1, 2
IF(icase.EQ.1) THEN
ne = ne3
nne = 3
ngaus = 1
ELSE IF(icase.EQ.2) THEN
ne = ne6
nne = 6
ngaus = 3
END IF
IF(ne.NE.0) THEN
WRITE(nout,11) nne
11 FORMAT(//&
' OBTAINED STRAINS AND STRESSES IN THE TRIANGULAR ELEMENTS WITH',i5,'

NODES'/)

! Integration points (Area coordinates) and Weight functions


IF(nne.EQ.3) THEN
al1(1) = 0.333333333333D0
al2(1) = 0.333333333333D0
al3(1) = 0.333333333333D0
we6(1) = 0.5D0
nge = 1
ELSE IF(nne.EQ.6) THEN
al1(1) = 0.5D0
al2(1) = 0.5D0
al3(1) = 0.0D0
al1(2) = 0.0D0
al2(2) = 0.5D0
al3(2) = 0.5D0
al1(3) = 0.5D0
al2(3) = 0.0D0
al3(3) = 0.5D0
nge = 3
DO i=1, 3
we6(i) = 1.0D0/6.0D0
END DO
END IF
! Extract the Element Nodal Displacements and Obtain Strains and Stresses
DO i=1, ne
! For each element
IF(icase.EQ.1) THEN
t = tt(imat3(i))
sni1 = pp(imat3(i))
em1 = ee(imat3(i))
ELSE IF(icase.EQ.2) THEN
t = tt(imat6(i))
sni1 = pp(imat6(i))
em1 = ee(imat6(i))
END IF
DO j=1, nne
IF(icase.EQ.1) THEN
elcod(1, j) = x(ijk3(j,i))
elcod(2, j) = y(ijk3(j,i))
ELSE IF(icase.EQ.2) THEN
elcod(1, j) = x(ijk6(j,i))
elcod(2, j) = y(ijk6(j,i))
END IF
k = (j-1)*2+1
IF(icase.EQ.1) id(k) = ijk3(j,i)*2-1
IF(icase.EQ.2) id(k) = ijk6(j,i)*2-1
eldis(1, j) = dd(id(k))
IF(icase.EQ.1) id(k+1) = ijk3(j,i)*2
IF(icase.EQ.2) id(k+1) = ijk6(j,i)*2
eldis(2, j) = dd(id(k+1))
END DO
! Numerical integration
DO ngp=1, nge
al11 = al1(ngp)
al22 = al2(ngp)
al33 = al3(ngp)
kgasp = ngp
! Evaluate the shape functions, elemental volume, etc.
CALL sfr6(nne, deriv6, shape1, al11, al22, al33)
CALL jacob6(nne, cartd, deriv6, djacb, elcod, gpcod, i, kgasp, &
shape1)
dvolu = djacb*we6(ngp)
IF(isw.EQ.3) dvolu = dvolu*twopi*gpcod(1, kgasp)
IF(isw.EQ.2) t = 1.D0
dvolu = dvolu*t
CALL modps(dmatx, em1, sni1, isw, nstre)
! => dmatx(nstre, nstre)
CALL bmatps(bmatx, cartd, nne, shape1, gpcod, isw, kgasp)
! Calculate strains eldis()
DO istre=1, nstre
strain(istre) = 0.D0
END DO

111

Associated Professor Dr. Viktor Hristovski


890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992

4
4
5
5
6
6
6
5
4
4
4
5
5
5
5
5
5
5
5
5
5
5
5
5
5
4
3
3
2
2
1

1
1
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
2
2
2
3
3
3
3
3
3
4
5
5
5
5
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
5
5
5
5
5
5
5
5
5
5
4
4
5
6
6
6
6
6

CALL linear(cartd, dmatx, eldis, nne, nstre, isw, strain, kgasp, gpcod, &
shape1)
! => eldis()
DO istre=1, nstre
stress(istre) = 0.D0
DO jstre=1, nstre
stress(istre) = stress(istre) + dmatx(istre, jstre)*strain(jstre)
END DO
END DO
IF(isw.EQ.1) stress(4) = 0.D0
IF(isw.EQ.2) stress(4) = sni1*(stress(1)+stress(2))
IF(isw.EQ.1.OR.isw.EQ.2) THEN
WRITE(nout, 22) i, kgasp, (strain(j), stress(j), j=1, nstre)
22 FORMAT(/' Element: ',i5,'Integration point: ', i5/&
'
eps_x = ',g12.6,' Gx = ',g12.6/&
'
eps_y = ',g12.6,' Gy = ',g12.6/&
'
gama_xy = ',g12.6,' Txy = ',g12.6)
ELSE IF(isw.EQ.3) THEN
WRITE(nout, 23) i, kgasp, (strain(j), stress(j), j=1, nstre)
23 FORMAT(/' Element: ',i5,'Integration point: ', i5/&
'
eps_r = ',g12.6,' Gr = ',g12.6/&
'
eps_t = ',g12.6,' Gt = ',g12.6/&
'
eps_z = ',g12.6,' Gz = ',g12.6/&
'
gama_rz = ',g12.6,' Trz = ',g12.6)
END IF
END DO
END DO
END IF
END DO
! Quadrilateral elements
! Gaussian integration constants
IF(ne4.NE.0.OR.ne8.NE.0.OR.ne9.NE.0) THEN
DO icase=1, 3
IF(icase.EQ.1) THEN
ne = ne4
nne = 4
ngaus = 2
ELSE IF(icase.EQ.2) THEN
ne = ne8
nne = 8
ngaus = 3
ELSE IF(icase.EQ.3) THEN
ne = ne9
nne = 9
ngaus = 3
END IF
CALL gaussq(ngaus, posgp, weigp)
IF(ne.NE.0) THEN
WRITE(nout,3) nne
3 FORMAT(//&
' OBTAINED STRAINS AND STRESSES IN THE QUADRILATERAL ELEMENTS WITH',i5,' NODES'/)
! Extract the Element Nodal Displacements and Obtain Strains and Stresses
DO i=1, ne
! For each element
IF(icase.EQ.1) THEN
t = tt(imat4(i))
sni1 = pp(imat4(i))
em1 = ee(imat4(i))
ELSE IF(icase.EQ.2) THEN
t = tt(imat8(i))
sni1 = pp(imat8(i))
em1 = ee(imat8(i))
ELSE IF(icase.EQ.3) THEN
t = tt(imat9(i))
sni1 = pp(imat9(i))
em1 = ee(imat9(i))
END IF
DO j=1, nne
IF(nne.EQ.4) THEN
elcod(1, j) = x(ijk4(j,i))
elcod(2, j) = y(ijk4(j,i))
ELSE IF(nne.EQ.8) THEN
elcod(1, j) = x(ijk8(j,i))
elcod(2, j) = y(ijk8(j,i))
ELSE IF(nne.EQ.9) THEN
elcod(1, j) = x(ijk9(j,i))
elcod(2, j) = y(ijk9(j,i))
END IF
k = (j-1)*2+1
IF(nne.EQ.4) id(k) = ijk4(j,i)*2-1
IF(nne.EQ.8) id(k) = ijk8(j,i)*2-1
IF(nne.EQ.9) id(k) = ijk9(j,i)*2-1
eldis(1, j) = dd(id(k))
IF(nne.EQ.4) id(k+1) = ijk4(j,i)*2
IF(nne.EQ.8) id(k+1) = ijk8(j,i)*2
IF(nne.EQ.9) id(k+1) = ijk9(j,i)*2
eldis(2, j) = dd(id(k))
END DO
kgasp = 0
DO igaus=1, ngaus
DO jgaus=1, ngaus
exisp = posgp(igaus)
etasp = posgp(jgaus)
kgasp = kgasp+1

112

Application of Finite Element Method in Structural Analysis


993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095

6
6
6
6
6
6
6
6
6
6
7
7
7
6
6
6
7
7
8
8
8
7
6
6
6
7
7
7
7
7
7
7
7
7
7
7
7
7
7
6
5
4
4
3
2
2
1
1

CALL sfr2(deriv, nne, shape1, exisp, etasp)


CALL jacob2(cartd, deriv, djacb, elcod, gpcod, i, kgasp, &
nne, shape1)
dvolu = djacb*weigp(igaus)*weigp(jgaus)
IF(isw.EQ.3) dvolu = dvolu*twopi*gpcod(1, kgasp)
IF(t.NE.0.D0) dvolu = dvolu*t
CALL modps(dmatx, em1, sni1, isw, nstre)
! => dmatx(nstre, nstre)
CALL bmatps(bmatx, cartd, nne, shape1, gpcod, isw, kgasp)
DO istre=1, nstre
strain(istre) = 0.D0
END DO
CALL linear(cartd, dmatx, eldis, nne, nstre, isw, strain, kgasp, gpcod, &
shape1)
! => de()
DO istre=1, nstre
stress(istre) = 0.D0
DO jstre=1, nstre
stress(istre) = stress(istre) + dmatx(istre, jstre)*strain(jstre)
END DO
END DO
IF(isw.EQ.1) stress(4) = 0.D0
IF(isw.EQ.2) stress(4) = sni1*(stress(1)+stress(2))
IF(isw.EQ.1.OR.isw.EQ.2) THEN
WRITE(nout, 4) i, kgasp, (strain(j), stress(j), j=1, nstre)
4 FORMAT(/' Element: ',i5,'Integration point: ', i5/&
'
eps_x = ',g12.6,' Gx = ',g12.6/&
'
eps_y = ',g12.6,' Gy = ',g12.6/&
'
gama_xy = ',g12.6,' Txy = ',g12.6)
ELSE IF(isw.EQ.3) THEN
WRITE(nout, 44) i, kgasp, (strain(j), stress(j), j=1, nstre)
44 FORMAT(/' Element: ',i5,'Integration point: ', i5/&
'
eps_r = ',g12.6,' Gr = ',g12.6/&
'
eps_t = ',g12.6,' Gt = ',g12.6/&
'
eps_z = ',g12.6,' Gz = ',g12.6/&
'
gama_rz = ',g12.6,' Trz = ',g12.6)
END IF
END DO
END DO
END DO
END IF
END DO
END IF
DEALLOCATE(dmatx, strain, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: dmatx, strain, stress! '
RETURN
END SUBROUTINE stresses

1
1
1
1
1
1
1

SUBROUTINE diag(idiag, n, nak)


! Subroutine to compute diagonal addresses of left-hand-side sky-line matrix
IMPLICIT NONE
INTEGER(KIND=4)
:: n, nak
INTEGER(KIND=4)
:: i
INTEGER(KIND=4), DIMENSION(1) :: idiag
idiag(1) = 1
IF (n.EQ.1)THEN
nak = 1
RETURN
END IF
DO i=2,n
idiag(i) = idiag(i) + idiag(i-1) + 1
END DO
nak = idiag(n)
RETURN
END SUBROUTINE diag
SUBROUTINE factor(a, idiag, neq)
! Subroutine to perform Crout factorization: a = u(transpose) * d * u
IMPLICIT NONE
INTEGER(KIND=4)
:: neq
REAL(KIND=8), DIMENSION(1)
:: a
INTEGER(KIND=4), DIMENSION(1) :: idiag
REAL(KIND=8), PARAMETER
:: zero=0
INTEGER(KIND=4)
:: jj, jjlast, j, jcolht, istart, jm1, &
ij, ii, i, iilast, icolht, jlngth, &
length, jtemp
REAL(KIND=8)
:: temp, coldot

1
1
1
1
1
2
2
2
2
2
2
2
2
3
3

jj = 0
DO j=1,neq
jjlast = jj
jj
= idiag(j)
jcolht = jj - jjlast
IF (jcolht.GT.2) THEN
! for column j and i.le.j-1, replace a(i,j) with d(i,i)*u(i,j)
istart = j - jcolht + 2
jm1
= j - 1
ij
= jjlast + 2
ii
= idiag(istart-1)
DO i=istart,jm1

113

Associated Professor Dr. Viktor Hristovski


1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198

3
3
3
3
3
3
3
3
3
2
2
1
2
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
4
4
4
3
3
2
2
1
1

iilast = ii
ii
= idiag(i)
icolht = ii - iilast
jlngth = i - istart + 1
length = min0(icolht-1,jlngth)
IF (length.GT.0) &
a(ij) = a(ij) - coldot(a(ii-length),a(ij-length),length)
ij = ij + 1
END DO
END IF
IF (jcolht.GE.2) THEN
! for column j and i.le.j-1, replace a(i,j) with u(i,j);
! replace a(j,j) with d(j,j).
jtemp = j - jj
DO ij=jjlast+1,jj-1
ii = idiag(jtemp + ij)
! warning: the following calculations are skipped
!
if a(ii) equals zero
IF (a(ii).NE.zero) THEN
temp = a(ij)
a(ij) = temp/a(ii)
a(jj) = a(jj) - temp*a(ij)
ELSE
PRINT *,' Diagonal zerro stiffness detected in subroutine FACTOR! '
STOP
END IF
END DO
END IF
END DO
RETURN
END SUBROUTINE factor
SUBROUTINE back(a, b, idiag, neq)
! Subroutine to perform forward reduction and back substitution
IMPLICIT NONE
INTEGER(KIND=4)
:: neq
REAL(KIND=8), DIMENSION(1)
:: a, b
INTEGER(KIND=4), DIMENSION(1) :: idiag
REAL(KIND=8), PARAMETER
:: zero=0.D0
INTEGER(KIND=4)
:: jj, jjlast, jcolht, j, jjnext,
istart, jtemp, i
REAL(KIND=8)
:: ajj, bj, coldot

&

1
1
1
1
1
1
1

! forward reduction
jj = 0
DO j=1,neq
jjlast = jj
jj
= idiag(j)
jcolht = jj - jjlast
IF (jcolht.GT.1) &
b(j) = b(j) - coldot(a(jjlast+1),b(j-jcolht+1),jcolht-1)
END DO

1
1
1
2
2
2
2
2
2
1

! diagonal scaling
DO j=1,neq
ajj = a(idiag(j))
! warning: diagonal scaling is not performed if ajj equals zero
IF (ajj.NE.zero)THEN
b(j) = b(j)/ajj
ELSE
PRINT *,' Diagonal zerro stiffness detected in subroutine FACTOR! '
STOP
END IF
END DO
! back substitution
IF (neq.EQ.1) RETURN
jjnext = idiag(neq)

1
1
1
1
2
2
2
2
2
3
3
3
2
1

DO j=neq,2,-1
jj
= jjnext
jjnext = idiag(j-1)
jcolht = jj - jjnext
IF (jcolht.GT.1) THEN
bj = b(j)
istart = j - jcolht + 1
jtemp = jjnext - istart + 1
DO i=istart,j-1
b(i) = b(i) - a(jtemp+i)*bj
END DO
END IF
END DO
RETURN
END SUBROUTINE back
FUNCTION coldot(a, b, n)
! Function to compute the dot
IMPLICIT NONE
REAL(KIND=8)
INTEGER(KIND=4)
REAL(KIND=8), DIMENSION(1)

product of vectors stored column-wise


:: coldot
:: n
:: a, b

114

Application of Finite Element Method in Structural Analysis


1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301

1
1
1

REAL(KIND=8), PARAMETER
:: zero=0.D0
INTEGER(KIND=4)
:: i
coldot = zero
DO i=1,n
coldot = coldot + a(i)*b(i)
END DO
RETURN
END FUNCTION coldot
SUBROUTINE colht(idiag, n, ned,
! Calculate column-heights
IMPLICIT NONE
INTEGER(KIND=4)
INTEGER(KIND=4), DIMENSION(1)
INTEGER(KIND=4)

nen, lm)
:: n, ned, nen
:: lm, idiag
:: minn, j, i, indexx, num, ms

minn = n
1
1
2
2
2
3
3
3
2
1
1

DO j=1, nen

1
1
2
2
2
3
3
3
3
2
1
1

DO j=1,nen

1
1
2
3
3
4
5
5
5
5
5
4
4
3
2
1

!element nodes

DO i=1,ned
!element node degrees of freedom
indexx=(j-1)*ned+i
num = lm(indexx)
IF (num.GT.0)THEN
IF(num.LT.minn)minn = min0(minn,num)
END IF
END DO
END DO

DO i=1,ned
indexx=(j-1)*ned+i
num = lm(indexx)
IF (num.GT.0) THEN
ms = num - minn
IF (ms.GT.idiag(num)) idiag(num) = ms
END IF
END DO
END DO
RETURN
END SUBROUTINE colht
SUBROUTINE addlhs(alhs, idiag, lm, eleffm, nee)
! Adding element stiffness matrix to the global stiffness matrix
IMPLICIT NONE
INTEGER(KIND=4)
:: nee
REAL(KIND=8), DIMENSION(1)
:: alhs
INTEGER(KIND=4), DIMENSION(1)
:: idiag, lm
REAL(KIND=8), DIMENSION(nee,nee) :: eleffm
INTEGER(KIND=4)
:: j, k, i, m, l
DO j=1, nee
!element equations
k = lm(j)
IF (k.GT.0) THEN
DO i=1,j
m = lm(i)
IF (m.GT.0) THEN
IF (k.GE.m) THEN
l = idiag(k) - k + m
ELSE
l = idiag(m) - m + k
END IF
alhs(l) = alhs(l) + eleffm(i,j)
END IF
END DO
END IF
END DO
RETURN
END SUBROUTINE addlhs
SUBROUTINE inviter(am, ak, cx, cy, nperd, nak, n, nton, nt, acc, &
inp, nchar, idiag, cxx, nfak)
! Subroutine for eigen-problem solution of the system using inverse
! vector iteration method and Gram-Shmidth vector ortogonalization
IMPLICIT NONE
INTEGER(KIND=4)
:: nperd, nak, n, nton, nt, nchar, nfak
REAL(KIND=8)
:: acc
INTEGER(KIND=4), PARAMETER
:: ndouble=8
REAL(KIND=8), DIMENSION(1)
:: cx, cy, am, ak, cxx
INTEGER(KIND=4), DIMENSION(1) :: idiag
CHARACTER(LEN=*)
:: inp
INTEGER(KIND=4)
:: nres
nres=n*ndouble
OPEN(UNIT=nperd, FILE=inp(1:nchar) // '.per', STATUS='unknown', &
FORM='unformatted', ACCESS='direct', RECL=nres)
CALL shapes(nton, nt, acc, nperd, n, nak, ak, cxx, cx, cy, am, &
idiag, nfak)
RETURN
END SUBROUTINE inviter
SUBROUTINE shapes(nton, nt, acc, nperd, n, nak, ak, cxx, cx, cy, am, &
idiag, nfak)
IMPLICIT NONE
INTEGER(KIND=4)
:: nton, nt, nperd, n, nak, nfak
REAL(KIND=8)
:: acc
REAL(KIND=8), DIMENSION(1)
:: ak, cxx, cx, cy, am

115

Associated Professor Dr. Viktor Hristovski


1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404

INTEGER(KIND=4), DIMENSION(1) :: idiag


! First mode
CALL first(nt, acc, nperd, n, nak, ak, cx, cy, cxx, am, idiag, nfak)
! Higher modes (from 2nd to nton-th mode)
CALL higher(nton, nt, acc, nperd, n, nak, ak, cx, cy, cxx, am, idiag, nfak)
RETURN
END SUBROUTINE shapes

1
1
1
1
1
2
2
2
2
1
2
2
2
1
2
2
2
3
3
3
2
2
1

1
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
3
3
3
2
3
3
4
4
4
4
4
3
2
3
3
4
4
4
5
5
5
5

SUBROUTINE first(nt, acc, nperd, n, nak, ak, cx, cy, cxx, am, idiag, nfak)
IMPLICIT NONE
INTEGER(KIND=4)
:: nt, nperd, n, nak, nfak
REAL(KIND=8)
:: acc
REAL(KIND=8), DIMENSION(1)
:: ak, cxx, cx, cy, am
INTEGER(KIND=4), DIMENSION(1) :: idiag
REAL(KIND=8)
:: ro2, ratio, sf, sa, pd
INTEGER(KIND=4)
:: i, iter, ii, iton
sf = 0.D0
DO i=1, n
cx(i)=1.D0
!cx() = x_1
cy(i)=cx(i)*am(i)
!cy() = y_1
END DO
DO iter=1,nt
DO i=1,n
IF(iter.GT.1)cy(i)=ak(i)
cxx(i)=cy(i)
!cxx() = y_k
END DO
CALL solv(n, nak, ak, am, cy, cxx, idiag, sa, ro2, nfak)
DO i=1,n
ak(i)=ak(i)/(ro2)**0.5
!ak() = y_k+1
END DO
ratio=DABS(sa-sf)/DABS(sa)
IF(ratio.GT.acc)THEN
sf=sa
ELSE
DO ii=1,n
cy(ii)=cy(ii)/(ro2)**0.5
END DO
EXIT
END IF
END DO
pd=2*3.141592653589793D0/(sf)**0.5
iton=1
WRITE(*,1)iton, iter-1, pd
1 FORMAT(2X,'Mode = ',I5,'
Number of iterations = ',I5, &
'
Period = ',F10.5)
CALL write_y(nperd, iton, n, cy, pd, sf)
RETURN
END SUBROUTINE first
SUBROUTINE higher(nton, nt, acc, nperd, n, nak, ak, cx, cy, cxx, am, idiag, nfak)
IMPLICIT NONE
INTEGER(KIND=4)
:: nton, nt, nperd, n, nak, nfak
REAL(KIND=8)
:: acc
REAL(KIND=8), DIMENSION(1)
:: ak, cxx, cx, cy, am
INTEGER(KIND=4), DIMENSION(1) :: idiag
INTEGER(KIND=4)
:: iton, ii, i, j, iter
REAL(KIND=8)
:: alfa, sa, sf, pd, ro2, ratio
sf = 0.D0
DO iton=2, nton
DO ii=1,n
cx(ii)=1.D0
!cx() = x_1
END DO
DO i=1,iton-1
CALL read_y(nperd, i, n, ak, pd)
!Read ak(): {Fi}(i)
alfa=0.D0
DO j=1,n
alfa=alfa+ak(j)*am(j)*cx(j)
!{Fi}(transp)*[M]
END DO
DO j=1,n
cx(j)=cx(j)-alfa*ak(j)
!{x}(init) - SUM [ alfa*{Fi} ]
END DO
END DO
DO ii=1,n
cy(ii)=cx(ii)*am(ii)
!cy() = y_1
END DO
DO iter=1,nt
DO i=1,n
cxx(i)=cy(i)
!cxx() = y_k
END DO
CALL solv(n, nak, ak, am, cy, cxx, idiag, sa, ro2, nfak)
DO i=1,n
ak(i)=ak(i)/(ro2)**0.5
!ak() = y_k+1
IF(am(i).NE.0)THEN
cx(i)=ak(i)/am(i)
ELSE
cx(i)=0.D0
END IF
END DO
ratio=DABS(sa-sf)/DABS(sa)
IF(ratio.GT.acc)THEN
sf=sa
DO i=1,iton-1
CALL read_y(nperd, i, n, ak, pd)
alfa=0.D0
DO ii=1,n
alfa=alfa+ak(ii)*am(ii)*cx(ii) !{Fi}(transp)*[M]
END DO
DO ii=1,n

116

Application of Finite Element Method in Structural Analysis


1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507

5
5
4
4
4
4
3
4
4
4
3
3
2
1
1
1
1
1
1

1
1
1
1
1
1
1

cx(ii)=cx(ii)-alfa*ak(ii)
!{x}(init) - SUM [ alfa*{Fi} ]
END DO
!x_k+1
END DO
DO ii=1,n
cy(ii)=cx(ii)*am(ii)
END DO
ELSE
DO ii=1,n
cy(ii)=cy(ii)/(ro2)**0.5
END DO
EXIT
END IF
END DO
pd=2*3.141592653589793D0/(sf)**0.5
WRITE(*,1)iton,iter-1,pd
1 FORMAT(2X,'Mode = ',I5,'
Number of iterations = ',I5, &
'
Period = ',F10.5)
CALL write_y(nperd, iton, n, cy, pd, sf)
END DO
RETURN
END SUBROUTINE higher
SUBROUTINE solv(n, nak, ak, am,
IMPLICIT NONE
INTEGER(KIND=4)
REAL(KIND=8)
REAL(KIND=8), DIMENSION(1)
INTEGER(KIND=4), DIMENSION(1)
REAL(KIND=8)
INTEGER(KIND=4)
REWIND (UNIT=nfak)
READ(nfak) (ak(i),i=1,nak)
CALL back(ak, cy, idiag, n)
DO i=1,n
ak(i)=am(i)*cy(i)
END DO
ro1=0.D0
ro2=0.D0
DO i=1,n
ro1=ro1+cy(i)*cxx(i)
ro2=ro2+cy(i)*ak(i)
END DO
sa=ro1/ro2
RETURN
END SUBROUTINE solv

cy, cxx, idiag, sa, ro2, nfak)


::
::
::
::
::
::

n, nak, nfak
sa, ro2
ak, am, cy, cxx
idiag
ro1
i

!Factorized stiffness matrix


!output cy() = x_k+1
! _
!ak() = y_k+1

!sa - eigen value :w2

SUBROUTINE read_y(nperd, iton, n, y, pd)


IMPLICIT NONE
INTEGER(KIND=4)
:: nperd, iton, n
REAL(KIND=8), DIMENSION(1)
:: y
REAL(KIND=8)
:: pd, ssf
INTEGER(KIND=4)
:: irec, ieq
irec=(iton-1)*2+1
READ(nperd,REC=irec)pd, ssf
irec=irec+1
READ(nperd,REC=irec)(y(ieq),ieq=1,n)
RETURN
END SUBROUTINE read_y
SUBROUTINE write_y(nperd, iton, n, y, pd, sf)
IMPLICIT NONE
INTEGER(KIND=4)
:: nperd, iton, n
REAL(KIND=8), DIMENSION(1)
:: y
REAL(KIND=8)
:: pd, sf
INTEGER(KIND=4)
:: irec, ieq
irec=(iton-1)*2+1
WRITE(nperd,REC=irec)pd,sf
irec=irec+1
WRITE(nperd,REC=irec)(y(ieq),ieq=1,n)
RETURN
END SUBROUTINE write_y
SUBROUTINE niz(a, imin, n)
IMPLICIT NONE
INTEGER(KIND=4)
REAL(KIND=8), ALLOCATABLE
REAL(KIND=8), DIMENSION(1)
INTEGER(KIND=4), DIMENSION(1)
INTEGER(KIND=2)
REAL(KIND=8)
INTEGER(KIND=4)

::
::
::
::
::
::
::

n
aa(:)
a
imin
errorr
amin, qmax
i, j, k

1
1
1
1

ALLOCATE (aa(n),STAT=errorr)
IF(errorr.NE.0) THEN
PRINT *,' Allocation error in NIZ: aa(:)!'
STOP
END IF

1
1
1
1
1
2
3
3
3
3

qmax=1.D+030
DO i=1,n
aa(i)=a(i)
END DO
DO j=1,n
amin=qmax
DO i=1,n
IF(aa(i).LT.amin)THEN
imin(j)=i
amin=aa(i)
END IF

117

Associated Professor Dr. Viktor Hristovski


1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610

2
1
1
1
1
1
1
1
1
1
1

END DO
k=imin(j)
aa(k)=qmax
END DO
DO j=1,n
k=imin(j)
aa(j)=a(k)
END DO
DO j=1,n
a(j)=aa(j)
END DO

1
1
1
1

DEALLOCATE (aa, STAT=errorr)


IF(errorr.NE.0) THEN
PRINT *,' Deallocation error in NIZ: aa(:)!'
STOP
END IF
RETURN
END SUBROUTINE niz
SUBROUTINE printmod(nton, nt, acc, nperd, nn, n, ndf, cy, inp, nchar)
! Print Natural Periods and Mode Shapes
IMPLICIT NONE
INTEGER(KIND=4)
:: nton, nt, nperd, nn, n, ndf, nchar
REAL(KIND=8)
:: acc
INTEGER(KIND=4), PARAMETER
:: nf100=100, nperd1=101, nwrei=102, &
ndouble=8
REAL(KIND=8), DIMENSION(1)
:: cy
REAL(KIND=8), DIMENSION(6)
:: disp
REAL(KIND=8), ALLOCATABLE
:: aa(:)
INTEGER(KIND=4), ALLOCATABLE :: imin(:)
INTEGER(KIND=2)
:: errorr
CHARACTER(LEN=*)
:: inp
INTEGER(KIND=4)
:: nres, i, kk, j, node, i1, idf, &
nid, k
REAL(KIND=8)
:: pd, v, ymax
OPEN(UNIT=nf100, FILE=inp(1:nchar) // '100', STATUS='unknown', &
FORM='unformatted', ACCESS='direct', RECL=52)

1
1
1
1

ALLOCATE (aa(nton),STAT=errorr)
IF(errorr.NE.0) THEN
PRINT *,' Allocation error in PRINTMOD: aa(:)!'
STOP
END IF

1
1
1
1

ALLOCATE (imin(nton),STAT=errorr)
IF(errorr.NE.0) THEN
PRINT *,' Allocation error in PRINTMOD: imin(:)!'
STOP
END IF
nres=n*ndouble
OPEN(UNIT=nperd1, FILE=inp(1:nchar) // '.pr1',STATUS='unknown', &
FORM='unformatted',ACCESS='direct',RECL=nres)
OPEN(UNIT=nwrei, FILE=inp(1:nchar) // '.eig', STATUS='unknown')
! Print the title
WRITE(nwrei,1)nton, nt, acc
1 FORMAT(//2X,'PERIODS AND MODE SHAPES OF NATURAL VIBRATIONS'// &
2X,'Number of Mode Shapes = ',I5/ &
2X,'Maximum number of iterations = ',I5/ &
2X,'Accuracy = ',F10.8/)

1
1
1
1

1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
1

! Mode Shape Ordering


DO i=1,nton
CALL read_y(nperd, i, n, cy, pd)
aa(i)=pd
END DO
CALL niz(aa, imin, nton)
! Print to output file
DO i=nton,1,-1
k=imin(i)
kk=nton-i+1
CALL read_y(nperd, k, n, cy, pd)
CALL write_y(nperd1, kk, n, cy, pd, pd)
WRITE(nwrei,2)kk, pd
2 FORMAT(//2X,'Mode= ',I2,5X,'T=',F15.6,' sec'/)
ymax=0.D0
DO j=1,n
v=DABS(cy(j))
IF((ymax-v).LT.0.D0)ymax=v
END DO
DO j=1,n
cy(j)=cy(j)/ymax
END DO
DO node=1,nn
i1=(node-1)*ndf
DO idf=1,ndf
nid=i1+idf
disp(idf)=cy(nid)
END DO
WRITE(nf100, REC=node)node,(disp(idf),idf=1,ndf)
END DO
DO node=1,nn
READ(nf100, REC=node)nid,(disp(idf),idf=1,ndf)
WRITE(nwrei,'(I5,6F10.5)')node,(disp(idf),idf=1,ndf)
END DO
END DO

118

Application of Finite Element Method in Structural Analysis


1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

1
1
1
1

! Update unformatted file 'nperd'


DO i=1,nton
CALL read_y(nperd1, i, n, cy, pd)
CALL write_y(nperd, i, n, cy, pd, pd)
END DO

1
1
1
1

DEALLOCATE (aa, imin, STAT=errorr)


IF(errorr.NE.0) THEN
PRINT *,' Deallocation error in PRINTMOD!'
STOP
END IF
CLOSE (UNIT=nperd1,STATUS='delete')
CLOSE (UNIT=nwrei)
CLOSE (UNIT=nf100, STATUS='delete')
RETURN
END SUBROUTINE printmod

1
1
1
1
1
1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

SUBROUTINE cput(iticks1, iticks2, time)


! Calculate CPU elapsed time needed for calculation
IMPLICIT NONE
INTEGER(KIND=4)
:: iticks1, iticks2
CHARACTER(LEN=*)
:: time
REAL(KIND=8)
:: sec, hun_tot, d, hours, difh, smin, difm
INTEGER(KIND=4)
:: ihours, minn
IF(iticks2.GT.iticks1)THEN
sec=(iticks2-iticks1)*0.01D0
!seconds
ELSE
hun_tot=100*60*60*24
!0.01 seconds
d=hun_tot-iticks1
sec=(d+iticks2)*0.01D0
END IF
ihours=sec/3600.D0
!hours
hours=sec/3600.D0
difh=hours-ihours
smin=difh*60.D0
minn=INT(smin)
difm=smin-minn
sec=difm*60.D0
time(1:3)='HR:'
IF(ihours.LT.10)THEN
time(4:4)='0'
WRITE(time(5:5),'(i1)')ihours
ELSE IF(ihours.GE.10.AND.ihours.LT.100)THEN
WRITE(time(4:5),'(i2)')ihours
END IF
time(6:9)=' MN:'
IF(minn.LT.10)THEN
time(10:10)='0'
WRITE(time(11:11),'(i1)')minn
ELSE
WRITE(time(10:11),'(i2)')minn
END IF
time(12:15)=' SC:'
IF(sec.LT.10)THEN
time(16:16)='0'
WRITE(time(17:21),'(f4.2)')sec
ELSE
WRITE(time(16:21),'(f5.2)')sec
END IF
PRINT *,'CPU elapsed time : ',time
END SUBROUTINE cput
!
Last change: VH
11 Apr 2003
2:23 pm
! FILE:
trian6.f90
! Purpose:
Subroutines for curved isoparametric triangular elements
!
with 3 and 6 nodes TRIAN6
! Author:
Viktor HRISTOVSKI
!
SUBROUTINE stiff6 (isw, nne, iel, em1, sni1, t, xx, yy, sk1, ijk6)
! Purpose:
! Form element stiffness matrix 'sk' for TRIAN6N element
IMPLICIT NONE
INTEGER(KIND=4)
:: nee, i, iel, isw, j, kgasp, k, i1, j1, ii1, jj1, &
idf, jdf, nstre, ngp, nne, nge, nne2
INTEGER(KIND=4), DIMENSION(nne)
:: ijk6
INTEGER(KIND=2)
:: ier
REAL(KIND=8), PARAMETER
:: twopi=6.283185308D0
REAL(KIND=8), DIMENSION(nne*2,nne*2) :: sk1
REAL(KIND=8), DIMENSION(4, 18)
:: bmatx, dbmat
REAL(KIND=8), ALLOCATABLE
:: dmatx(:,:)
REAL(KIND=8), DIMENSION(3, nne)
:: deriv
REAL(KIND=8), DIMENSION(2, 9)
:: elcod, eldis, gpcod, cartd
REAL(KIND=8), DIMENSION(2, 2)
:: djacm
REAL(KIND=8), DIMENSION(9)
:: shape1
REAL(KIND=8), DIMENSION(nne)
:: xx, yy
REAL(KIND=8), DIMENSION(3)
:: we6, al1, al2, al3
REAL(KIND=8)
:: em1, sni1, t, exisp, etasp, &
djacb, dvolu, Area, al11, al22, al33

1
2
2
2
1

! Initialization of the element stiffness matrix sk1(nne*2,nne*2)


nne2 = nne*2
DO i=1, nne2
DO j=1, nne2
sk1(i,j)=0.0D0
END DO
END DO

1
1

! Element nodal coordinates


DO i=1, nne
elcod(1, i) = xx(i)

119

Associated Professor Dr. Viktor Hristovski


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

1
1

elcod(2, i) = yy(i)
END DO

1
1
1
1
1

IF(isw.EQ.1.OR.isw.EQ.2) THEN
nstre = 3
ELSE IF(isw.EQ.3) THEN
nstre = 4
END IF
ALLOCATE(dmatx(nstre, nstre), STAT=ier)
IF(ier.NE.0) STOP ' Allocation error: nstre(:,:)! '

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
3
4
4
4
3
2
1
1

! Integration points (Area coordinates) and Weight functions


IF(nne.EQ.3) THEN
al1(1) = 0.333333333333D0
al2(1) = 0.333333333333D0
al3(1) = 0.333333333333D0
we6(1) = 0.5D0
nge = 1
ELSE IF(nne.EQ.6) THEN
al1(1) = 0.5D0
al2(1) = 0.5D0
al3(1) = 0.0D0
al1(2) = 0.0D0
al2(2) = 0.5D0
al3(2) = 0.5D0
al1(3) = 0.5D0
al2(3) = 0.0D0
al3(3) = 0.5D0
nge = 3
DO i=1, 3
we6(i) = 1.0D0/6.0D0
END DO
END IF
!Integration over 'nge' integration points
Area=0.D0
DO ngp=1, nge
al11 = al1(ngp)
al22 = al2(ngp)
al33 = al3(ngp)
kgasp = ngp
! Prepare [D] matrix
CALL modps(dmatx, em1, sni1, isw, nstre)

! => dmatx(nstre, nstre)

! Evaluate the shape functions, elemental volume, etc.


CALL sfr6(nne, deriv, shape1, al11, al22, al33)
CALL jacob6(nne, cartd, deriv, djacb, elcod, gpcod, iel, kgasp, &
shape1)
dvolu=djacb*we6(ngp)
IF(isw.EQ.3) dvolu=dvolu*twopi*gpcod(1, kgasp)
IF(isw.EQ.2) t = 1.D0
dvolu = dvolu*t
Area = Area + dvolu
!PRINT *,'dvolu Area', dvolu, Area
! Evaluate the [B] matrix
CALL bmatps(bmatx, cartd, nne, shape1, gpcod, isw, kgasp)
! Calculate dbmat = [D][B]
CALL dbe(dmatx, bmatx, dbmat, nne2, nstre)
! Calculate the element stiffnesses
DO i=1, nne2
DO j=i, nne2
DO k=1, nstre
sk1(i, j) = sk1(i, j) + bmatx(k, i)*dbmat(k, j)*dvolu
END DO
END DO
END DO
END DO
DEALLOCATE(dmatx, STAT=ier)
IF(ier.NE.0) STOP ' Deallocation error: dmatx(:,:)! '

1
1
1
1
1

! Check the Area


IF(dvolu.LT.0)THEN
WRITE(*, *)'Negative jacobian detected! Check the connectivity!'
WRITE(*, *)'Element:', iel,' Incidences:', (ijk6(i),i=1, nne)
STOP 'Negative jacobian detected! Check the connectivity!'
END IF

1
2
2
2
1

! Construct the lower triangle of the stiffness matrix


DO i=1, nne2
DO j=1, nne2
sk1(j, i) = sk1(i, j)
END DO
END DO
RETURN
END SUBROUTINE stiff6
SUBROUTINE sfr6(nne, deriv, shape1, al1, al2, al3)
! Purpose:
! Evaluating shape functions and their derivatives for linear,
! serendipity isoparametric 2D triagular element with 6 nodes TRIAN6N
! ....................................................................
! Parameters:
! deriv - Derivatives of shape functions for given ksi(p) and eta(p)
! shape1 - Shape function vector for given ksi(p) and eta(p)

120

Application of Finite Element Method in Structural Analysis


142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

! exisp - Sampling point coordinate ksi(p)


! etasp - Sampling point coordinate eta(p)
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: nne
REAL(KIND=8), DIMENSION(3,nne) :: deriv
REAL(KIND=8), DIMENSION(nne)
:: shape1
REAL(KIND=8)
:: al1, al2, al3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

IF(nne.EQ.3) THEN
shape1(1) = al1
shape1(2) = al2
shape1(3) = al3
deriv(1,1) = 1.D0
deriv(1,2) = 0.D0
deriv(1,3) = 0.D0
deriv(2,1) = 0.D0
deriv(2,2) = 1.D0
deriv(2,3) = 0.D0
deriv(3,1) = 0.D0
deriv(3,2) = 0.D0
deriv(3,3) = 1.D0
ELSE IF(nne.EQ.6) THEN
shape1(1)
shape1(2)
shape1(3)
shape1(4)
shape1(5)
shape1(6)

=
=
=
=
=
=

al1*(2.D0*al1-1.D0)
al2*(2.D0*al2-1.D0)
al3*(2.D0*al3-1.D0)
4.D0*al2*al3
4.D0*al3*al1
4.D0*al1*al2

deriv(1,1)
deriv(1,2)
deriv(1,3)
deriv(1,4)
deriv(1,5)
deriv(1,6)

=
=
=
=
=
=

4.D0*al1-1.D0
0.D0
0.D0
0.D0
4.D0*al3
4.D0*al2

deriv(2,1)
deriv(2,2)
deriv(2,3)
deriv(2,4)
deriv(2,5)
deriv(2,6)

=
=
=
=
=
=

0.D0
4.D0*al2-1.D0
0.D0
4.D0*al3
0.D0
4.D0*al1

deriv(3,1)
deriv(3,2)
deriv(3,3)
deriv(3,4)
deriv(3,5)
deriv(3,6)

=
=
=
=
=
=

0.D0
0.D0
4.D0*al3-1.D0
4.D0*al2
4.D0*al1
0.D0

END IF
RETURN
END SUBROUTINE sfr6
SUBROUTINE jacob6(nne, cartd, deriv, djacb, elcod, gpcod, ielem, kgasp, &
shape1)
! Purpose:
! Evaluating the Jacobian matrix and the Cartesian shape function
! derivates
! ....................................................................
! Parameters:
! cartd - Cartesian derivatives
! deriv - Derivatives of shape functions for Gaussian points
! djacb - Determinant of Jacobian matrix
! elcod - Element nodes coordinates
! gpcod - Cartesian coordinates of the Gauss points
! ielem - Actual element number
! kgasp - Integrational point counter for an element (kgasp=1,3)
! shape1 - Shape function vector for Gaussian points
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: nne, ielem, kgasp, idime, inode, &
jdime, i, j
REAL(KIND=8), DIMENSION(3,nne) :: deriv
REAL(KIND=8), DIMENSION(2,nne) :: gpcod, cartd, elcod
REAL(KIND=8), DIMENSION(nne)
:: shape1, dndg6, dnde6
REAL(KIND=8), DIMENSION(2,2)
:: xjaci, xjacm
REAL(KIND=8), PARAMETER
:: zero=0.0001D0
REAL(KIND=8)
:: djacb

1
1
2
2
2
2
1

! Calculate coordinates of sampling point


DO idime=1, 2
gpcod(idime,kgasp)=0.D0
DO inode=1, nne
gpcod(idime, kgasp)=gpcod(idime,kgasp)+elcod(idime,inode)* &
shape1(inode)
END DO
END DO

1
1
1
1

! Create Jacobian matrix xjacm


DO i=1, nne
dndg6(i) = deriv(1,i)-deriv(3,i)
dnde6(i) = deriv(2,i)-deriv(3,i)
END DO

121

Associated Professor Dr. Viktor Hristovski


245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

1
2
2
2
1

DO i=1, 2
DO j=1, 2
xjacm(i,j)=0.D0
END DO
END DO

1
1
1
1
1
1

DO i=1, nne
xjacm(1,1)
xjacm(1,2)
xjacm(2,1)
xjacm(2,2)
END DO

1
1
1
1
1
1
1
1
1
2
3
3
3
2
1
1
2
2
2
2
1
1

=
=
=
=

xjacm(1,1)+dnde6(i)*elcod(2,
xjacm(1,2)-dndg6(i)*elcod(2,
xjacm(2,1)-dnde6(i)*elcod(1,
xjacm(2,2)+dndg6(i)*elcod(1,

i)
i)
i)
i)

! Jacobian determinant
djacb = xjacm(1,1)*xjacm(2,2) - xjacm(1,2)*xjacm(2,1)
IF(djacb.LT.0.D0.OR.DABS(djacb).LE.zero)THEN
WRITE(*,1) ielem
1 FORMAT(//' PROGRAM HALTED IN SUBROUTINE JACOB6',11x, &
' ZERO OR NEGATIVE AREA',/,10x,' ELEMENT NUMBER',i5)
STOP
ELSE
DO i=1,2
DO j=1,2
xjaci(i,j) = xjacm(i,j)/djacb
END DO
END DO
! Calculate cartesian derivatives
DO i=1, nne
cartd(1, i) = xjaci(1,1)*dndg6(i) + xjaci(1,2)*dnde6(i)
cartd(2, i) = xjaci(2,1)*dndg6(i) + xjaci(2,2)*dnde6(i)
END DO
END IF
RETURN
END SUBROUTINE jacob6

!
Last change: VH
11 Apr 2003
2:23 pm
! FILE:
quad489.f90
! Purpose:
Subroutines for curved isoparametric quadrilateral element
!
with 4, 8 and 9 nodes QUAD489
! Author:
Viktor HRISTOVSKI
!
SUBROUTINE stiff489 (isw, iel, nne, ngaus, em1, sni1, t, xx, yy, sk1, ijk)
! Purpose:
! Form element stiffness matrix 'sk' for QUAD489 element
! ...........................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: iel, nee, nee2, &
nn, i, nne, itype, isw, ngaus, &
j, kgasp, igaus, jgaus, k, i1, j1, ii1, jj1, &
nstre, idf, jdf
INTEGER(KIND=4), DIMENSION(nne)
:: ijk
REAL(KIND=8), PARAMETER
:: twopi=6.283185308D0
REAL(KIND=8)
:: em1, sni1, t, exisp, etasp, &
djacb, dvolu, Area
REAL(KIND=8), DIMENSION(nne*2, nne*2) :: sk1
REAL(KIND=8), DIMENSION(4)
:: posgp, weigp
REAL(KIND=8), DIMENSION(4, 4)
:: dmatx
REAL(KIND=8), DIMENSION(2, 2)
:: djacm
REAL(KIND=8), DIMENSION(9)
:: xx, yy, shape1
REAL(KIND=8), DIMENSION(2, 9)
:: cartd, deriv, elcod, gpcod
REAL(KIND=8), DIMENSION(4, 18)
:: bmatx, dbmat
1
2
2
2
1

nee2 = nne*2
DO i=1, nee2
! sk1(nne*2, nne*2)
DO j=1, nee2
sk1(i, j) = 0.D0
END DO
END DO

1
1
1
1

! Element nodal coordinates


DO i=1, nne
elcod(1, i) = xx(i)
elcod(2, i) = yy(i)
END DO

1
1
1
1
1

kgasp=0
IF(isw.EQ.1.OR.isw.EQ.2) THEN
nstre = 3
ELSE IF(isw.EQ.3) THEN
nstre = 4
END IF
! Gaussian integration constants
CALL gaussq(ngaus, posgp, weigp)

1
1
1
1
2
2
2

! Enter loops for area numerical integration


Area = 0.D0
DO igaus=1, ngaus
exisp=posgp(igaus)
DO jgaus=1, ngaus
etasp=posgp(jgaus)

122

Application of Finite Element Method in Structural Analysis


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
2
2
2
2
2
2
2
3
4
5
5
5
4
3
2
2
1
1

kgasp=kgasp+1

END DO

1
2
2
2
1

! Construct the lower triangle of the stiffness matrix


DO i=1, nee2
DO j=1, nee2
sk1(j, i) = sk1(i, j)
END DO
END DO

! Prepare [D] matrix


CALL modps(dmatx, em1, sni1, isw, nstre)

! => dmatx(nstre, nstre)

! Evaluate the shape functions, elemental volume, etc.


CALL sfr2(deriv, nne, shape1, exisp, etasp)
CALL jacob2(cartd, deriv, djacb, elcod, gpcod, iel, kgasp, &
nne, shape1)
dvolu=djacb*weigp(igaus)*weigp(jgaus)
IF(isw.EQ.3) dvolu=dvolu*twopi*gpcod(1, kgasp)
IF(isw.EQ.2) t = 1.D0
dvolu = dvolu*t
Area = Area + dvolu
! Check the Area
IF(dvolu.LT.0)THEN
WRITE(*, *)'Negative Jacobian detected! Check the connectivity!'
WRITE(*, *)'Element:', iel,' Incidences:', (ijk(i),i=1, nne)
STOP 'Negative Jacobian detected! Check the connectivity!'
END IF
! Evaluate the [B] matrix
CALL bmatps(bmatx, cartd, nne, shape1, gpcod, isw, kgasp)
! Calculate dbmat = [D][B]
CALL dbe(dmatx, bmatx, dbmat, nee2, nstre)
! Calculate the element stiffnesses
DO i=1, nee2
DO j=i, nee2
DO k=1, nstre
sk1(i, j) = sk1(i, j) + bmatx(k, i)*dbmat(k, j)*dvolu
END DO
END DO
END DO
END DO

RETURN
END SUBROUTINE stiff489
SUBROUTINE gaussq(ngaus, posgp, weigp)
! Purpose:
! Seting up the Gaus-Legendre integration constants
! ....................................................................
! Parameters:
! ngaus
- Order of integration rule
! posgp() - Point positions for Gaussian integration
! weigp() - Weighting factors for Gaussian integration
! ....................................................................
IMPLICIT NONE
REAL(KIND=8), DIMENSION(1)
:: posgp, weigp
INTEGER(KIND=4)
:: ngaus, kgaus, igash, jgash
1
1
1
1
1
1
1
1
1
1
1
1
1
1

IF(ngaus.LE.2)THEN
posgp(1) = -0.577350269189626D0
weigp(1) = 1.0D0
ELSE
posgp(1) = -0.774596669241483D0
posgp(2) = 0.0D0
weigp(1) = 0.555555555555556D0
weigp(2) = 0.888888888888889D0
END IF
kgaus=ngaus/2
DO igash=1, kgaus
jgash = ngaus+1-igash
posgp(jgash) = -posgp(igash)
weigp(jgash) = weigp(igash)
END DO
RETURN
END SUBROUTINE gaussq
SUBROUTINE sfr2(deriv, nne, shape1, exisp, etasp)
! Purpose:
! Evaluating shape functions and their derivatives for linear,
! quadratic langrangian serendipity isoparametric 2D elements
! ....................................................................
! Parameters:
! deriv - Derivatives of shape functions for given ksi(p) and eta(p)
! nne - Number of element joints (4, 8, or 9)
! shape1 - Shape function vector for given ksi(p) and eta(p)
! exisp - Sampling point coordinate ksi(p)
! etasp - Sampling point coordinate eta(p)
! ....................................................................
IMPLICIT NONE
REAL(KIND=8), DIMENSION(2,9) :: deriv
REAL(KIND=8), DIMENSION(9)
:: shape1
REAL(KIND=8)
:: exisp, etasp, s, t, st, s2, t2, &
ss, tt, s1, t1, s9, t9, sst, stt, &

123

Associated Professor Dr. Viktor Hristovski


163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265

INTEGER(KIND=4)

st2
:: nne

s=exisp
t=etasp
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

IF(nne.EQ.4)THEN

! Shape functions for 4 noded element

st=s*t
shape1(1)=(1.D0-t-s+st)*0.25D0
shape1(2)=(1.D0-t+s-st)*0.25D0
shape1(3)=(1.D0+t+s+st)*0.25D0
shape1(4)=(1.D0+t-s-st)*0.25D0
deriv(1,1)=(-1.D0+t)*0.25D0
deriv(1,2)=(+1.D0-t)*0.25D0
deriv(1,3)=(+1.D0+t)*0.25D0
deriv(1,4)=(-1.D0-t)*0.25D0
deriv(2,1)=(-1.D0+s)*0.25D0
deriv(2,2)=(-1.D0-s)*0.25D0
deriv(2,3)=(+1.D0+s)*0.25D0
deriv(2,4)=(+1.D0-s)*0.25D0
ELSE IF(nne.EQ.8)THEN

! Shape functions for 8 noded element

s2=s*2.D0
t2=t*2.D0
ss=s*s
tt=t*t
st=s*t
sst=s*s*t
stt=s*t*t
st2=s*t*2.D0
shape1(1)=(-1.D0+st+ss+tt-sst-stt)*.25D0
shape1(2)=(1.D0-t-ss+sst)*0.5D0
shape1(3)=(-1.D0-st+ss+tt-sst+stt)*0.25D0
shape1(4)=(1.D0+s-tt-stt)*0.5D0
shape1(5)=(-1.D0+st+ss+tt+sst+stt)*0.25D0
shape1(6)=(1.D0+t-ss-sst)*0.5D0
shape1(7)=(-1.D0-st+ss+tt+sst-stt)*0.25D0
shape1(8)=(1.D0-s-tt+stt)*0.5D0
deriv(1,1)=(t+s2-st2-tt)*0.25D0
deriv(1,2)=-s+st
deriv(1,3)=(-t+s2-st2+tt)*0.25D0
deriv(1,4)=(1.D0-tt)*0.5D0
deriv(1,5)=(t+s2+st2+tt)*0.25D0
deriv(1,6)=-s-st
deriv(1,7)=(-t+s2+st2-tt)*0.25D0
deriv(1,8)=(-1.D0+tt)*0.5D0
deriv(2,1)=(s+t2-ss-st2)*0.25D0
deriv(2,2)=(-1.D0+ss)*0.5D0
deriv(2,3)=(-s+t2-ss+st2)*0.25D0
deriv(2,4)=-t-st
deriv(2,5)=(s+t2+ss+st2)*0.25D0
deriv(2,6)=(1.D0-ss)*0.5D0
deriv(2,7)=(-s+t2+ss-st2)*0.25D0
deriv(2,8)=-t+st
ELSE IF(nne.EQ.9)THEN

! Shape functions for 9 noded element

ss=s*s
st=s*t
tt=t*t
s1=s+1.D0
t1=t+1.D0
s2=s*2.D0
t2=t*2.D0
s9=s-1.D0
t9=t-1.D0
shape1(1)=0.25D0*s9*st*t9
shape1(2)=0.5D0*(1.D0-ss)*t*t9
shape1(3)=0.25D0*s1*st*t9
shape1(4)=0.5D0*s*s1*(1.D0-tt)
shape1(5)=0.25D0*s1*st*t1
shape1(6)=0.5D0*(1.D0-ss)*t*t1
shape1(7)=0.25D0*s9*st*t1
shape1(8)=0.5*s*s9*(1.D0-tt)
shape1(9)=(1.D0-ss)*(1.D0-tt)
deriv(1,1)=0.25D0*t*t9*(-1.D0+s2)
deriv(1,2)=-st*t9
deriv(1,3)=0.25D0*(1.D0+s2)*t*t9
deriv(1,4)=0.5D0*(1.D0+s2)*(1.D0-tt)
deriv(1,5)=0.25D0*(1.D0+s2)*t*t1
deriv(1,6)=-st*t1
deriv(1,7)=0.25D0*(-1.D0+s2)*t*t1
deriv(1,8)=0.5*(-1.D0+s2)*(1.D0-tt)
deriv(1,9)=-s2*(1.D0-tt)
deriv(2,1)=0.25D0*s*s9*(-1.D0+t2)
deriv(2,2)=0.5D0*(1.D0-ss)*(-1.D0+t2)
deriv(2,3)=0.25D0*(-1.D0+t2)*s*s1
deriv(2,4)=-st*s1
deriv(2,5)=0.25D0*(1.D0+t2)*s*s1
deriv(2,6)=0.5D0*(1.D0-ss)*(1.D0+t2)
deriv(2,7)=0.25D0*(1.D0+t2)*s*s9
deriv(2,8)=-st*s9
deriv(2,9)=-t2*(1.D0-ss)
END IF
RETURN
END SUBROUTINE sfr2
SUBROUTINE jacob2(cartd, deriv, djacb, elcod, gpcod, ielem, kgasp, &

124

Application of Finite Element Method in Structural Analysis


266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368

nne, shape1)
! Purpose:
! Evaluating the Jacobian matrix and the Cartesian shape function
! derivates
! ....................................................................
! Parameters:
! cartd - Cartesian derivatives
! deriv - Derivatives of shape functions for Gaussian points
! djacb - Determinant of Jacobian matrix
! elcod - Element nodes coordinates
! gpcod - Cartesian coordinates of the Gauss points
! ielem - Actual element number
! kgasp - Element Gauss point counter (kgasp=1, ngaus*ngaus)
! nne
- Number of element joints (4, 8, or 9)
! shape1 - Shape function vector for Gaussian points
! ....................................................................
IMPLICIT NONE
REAL(KIND=8), DIMENSION(2,9) :: cartd, deriv, elcod, gpcod
REAL(KIND=8), DIMENSION(9)
:: shape1
REAL(KIND=8), DIMENSION(2,2) :: xjaci, xjacm
REAL(KIND=8), PARAMETER
:: zero=0.0001D0
REAL(KIND=8)
:: djacb
INTEGER(KIND=4)
:: nne, ielem, kgasp, idime, inode, &
jdime
1
1
2
2
2
2
1

! Calculate coordinates of sampling point


DO idime=1, 2
gpcod(idime,kgasp)=0.D0
DO inode=1, nne
gpcod(idime, kgasp)=gpcod(idime,kgasp)+elcod(idime,inode)* &
shape1(inode)
END DO
END DO

1
2
2
3
3
3
3
2
1

! Create Jacobian matrix xjacm


DO idime=1, 2
DO jdime=1, 2
xjacm(idime,jdime)=0.D0
DO inode=1, nne
xjacm(idime, jdime)=xjacm(idime, jdime)+deriv(idime,inode)* &
elcod(jdime,inode)
END DO
END DO
END DO

1
1
1
1
1
1
1
1
1
1
1
1
2
3
3
4
4
4
4
3
2
1

! Calculate determinant and inverse of Jacobian matrix


djacb=xjacm(1,1)*xjacm(2,2)-xjacm(1,2)*xjacm(2,1)
IF(djacb.LT.0.D0.OR.DABS(djacb).LE.zero)THEN
WRITE(*,1)ielem
1 FORMAT(//' PROGRAM HALTED IN SUBROUTINE JACOB2',11x, &
' ZERO OR NEGATIVE AREA',/,10x,' ELEMENT NUMBER',i5)
STOP
ELSE
xjaci(1,1)=xjacm(2,2)/djacb
xjaci(2,2)=xjacm(1,1)/djacb
xjaci(1,2)=-xjacm(1,2)/djacb
xjaci(2,1)=-xjacm(2,1)/djacb
! Calculate cartesian derivatives
DO idime=1,2
DO inode=1, nne
cartd(idime, inode)=0.D0
DO jdime=1,2
cartd(idime, inode)=cartd(idime, inode)+xjaci(idime,jdime)* &
deriv(jdime,inode)
END DO
END DO
END DO
END IF
RETURN
END SUBROUTINE jacob2
SUBROUTINE bmatps(bmatx, cartd, nne, shape1, gpcod, isw, kgasp)
! Purpose:
! This subroutine evaluates the strain-displacement matrix
! ....................................................................
! Parameters:
! bmatx - [B] matrix
! cartd - Cartesian derivatives
! nne
- Number of element joints (4, 8, or 9)
! shape1 - Shape function vector for given ksi(p) and eta(p)
! gpcod - Cartesian coordinates of the Gauss points
! isw
- Problem case: 1 - Plane-stress case
!
2 - Plane-strain case
!
3 - Axisymmetric case
! kgasp - Element Gauss point counter (kgasp=1, ngaus*ngaus)
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: nne, isw, kgasp, ngash, mgash, &
inode
REAL(KIND=8), DIMENSION(4,18) :: bmatx
REAL(KIND=8), DIMENSION(2, 9) :: cartd, gpcod
REAL(KIND=8), DIMENSION(9)
:: shape1

1
1
1
1
1
1

ngash=0
DO inode=1, nne
mgash=ngash+1
ngash=mgash+1
bmatx(1, mgash)=cartd(1, inode)
bmatx(1, ngash)=0.D0

125

Associated Professor Dr. Viktor Hristovski


369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471

1
1
1
1
1
2
2
2
2
1
1

bmatx(2,
bmatx(2,
bmatx(3,
bmatx(3,

mgash)=0.D0
ngash)=cartd(2, inode)
mgash)=cartd(2, inode)
ngash)=cartd(1, inode)

IF(isw.EQ.3)THEN ! For axisymmetric case


bmatx(4, mgash)=shape1(inode)/gpcod(1, kgasp)
bmatx(4, ngash)=0.D0
END IF
END DO
RETURN
END SUBROUTINE bmatps
SUBROUTINE modps(dmatx, young, poiss, isw, nstre)
! Purpose:
! Evaluating the Elasticity [D] matrix
! ....................................................................
! Parameters:
! dmatx - [D] matrix
! young - Young's modulus of elasticity
! poiss - Poisson's coefficient
! isw
- Problem case: 1 - Plane-stress case
!
2 - Plane-strain case
!
3 - Axisymmetric case
! nstre - Number of stresses: 3 for plane-stress and plane-strain
!
4 for axisymmetric case
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: isw, nstre, istr1, jstr1
REAL(KIND=8), DIMENSION(nstre,nstre) :: dmatx
REAL(KIND=8)
:: young, poiss, const, conss

1
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

! Initialize [D] matrix


DO istr1=1, nstre
DO jstr1=1, nstre
dmatx(istr1, jstr1)=0.D0
END DO
END DO
IF(isw.EQ.1)THEN

! Plane-stress

const=young/(1.D0-poiss*poiss)
dmatx(1,1)=const
dmatx(2,2)=const
dmatx(1,2)=const*poiss
dmatx(2,1)=const*poiss
dmatx(3,3)=(1.D0-poiss)*const*0.5D0
ELSE IF(isw.EQ.2)THEN

! Plane-strain

const=young*(1.D0-poiss)/((1.D0+poiss)*(1.D0-2.D0*poiss))
dmatx(1,1)=const
dmatx(2,2)=const
dmatx(1,2)=const*poiss/(1.D0-poiss)
dmatx(2,1)=const*poiss/(1.D0-poiss)
dmatx(3,3)=(1.D0-2.D0*poiss)*const*0.5D0/(1.D0-poiss)
ELSE IF(isw.EQ.3)THEN

! Axisimmetry

const=young*(1.D0-poiss)/((1.D0+poiss)*(1.D0-2.D0*poiss))
conss=poiss/(1.D0-poiss)
dmatx(1,1)=const
dmatx(2,2)=const
dmatx(3,3)=const*(1.D0-2.D0*poiss)*0.5D0/(1.D0-poiss)
dmatx(1,2)=const*conss
dmatx(1,4)=const*conss
dmatx(2,1)=const*conss
dmatx(2,4)=const*conss
dmatx(4,1)=const*conss
dmatx(4,2)=const*conss
dmatx(4,4)=const
END IF
RETURN
END SUBROUTINE modps

1
2
2
3
3

SUBROUTINE dbe(dmatx, bmatx, dbmat, nevab, nstre)


! Purpose:
! This subroutine multiplies the [D] matrix by the [B] matrix
! ....................................................................
! Parameters:
! bmatx - [B] matrix
! dbmat - [D][B] matrix
! dmatx - [D] matrix
! nevab - Total number of d.o.f. per element
! nstre - The number of independent stress components for the application:
!
= 3, Plane stress/strain;
!
= 4, Axial symmetry.
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: nevab, nstre, istre, ievab, jstre
REAL(KIND=8), DIMENSION(4, 18)
:: bmatx, dbmat
REAL(KIND=8), DIMENSION(nstre, nstre) :: dmatx
DO istre=1, nstre
DO ievab=1, nevab
dbmat(istre, ievab)=0.D0
DO jstre=1, nstre
dbmat(istre, ievab) = dbmat(istre, ievab) &

126

Application of Finite Element Method in Structural Analysis


472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539

3
3
2
1

+ dmatx(istre, jstre)*bmatx(jstre, ievab)

END DO
END DO
END DO
RETURN
END SUBROUTINE dbe

SUBROUTINE linear(cartd, dmatx, eldis, nne, nstre, isw, stran, kgasp, gpcod, &
shape1)
! Purpose:
! This subroutine evaluates stresses and strains assuming linear
! elastic behaviour
! ....................................................................
! Parameters:
! cartd - Cartesian derivatives
! dmatx - [D] matrix
! eldis - Element displacement matrix
! nne
- Number of element joints (4, 8, or 9)
! nstre - The number of independent stress components for the application:
!
= 3, Plane stress/strain;
!
= 4, Axial symmetry.
! isw
- Problem type parameter:
!
= 1, Plane stress,
!
= 2, Plane strain,
!
= 3, Axial symmetry
! poiss - Poisson's coefficient
! stran - Linear strains
! kgasp - Element Gauss point counter (kgasp=1, ngaus*ngaus)
! gpcod - Cartesian coordinates of the Gauss points
! shape1 - Shape function vector for given ksi(p) and eta(p)
! ....................................................................
IMPLICIT NONE
INTEGER(KIND=4)
:: nne, nstre, isw, idf, jdf, ind, &
istre, jstre, kgasp
REAL(KIND=8), PARAMETER
:: eps0 = 1.D-5
REAL(KIND=8), DIMENSION(2,2)
:: agash
REAL(KIND=8), DIMENSION(2,9)
:: cartd, eldis, gpcod
REAL(KIND=8), DIMENSION(nstre,nstre) :: dmatx
REAL(KIND=8), DIMENSION(nstre)
:: stran
REAL(KIND=8), DIMENSION(9)
:: shape1
REAL(KIND=8)
:: poiss, bgash
1
2
2
3
3
3
2
2
1

DO idf=1, 2
DO jdf=1, 2
bgash = 0.D0
DO ind=1, nne
bgash = bgash+cartd(jdf, ind)*eldis(idf, ind)
END DO
agash(idf, jdf) = bgash
END DO
END DO

1
1
2
3
3
3
2
1

! Calculate the strains


stran(1) = agash(1,1)
stran(2) = agash(2,2)
stran(3) = agash(1,2)+agash(2,1)
IF(nstre.EQ.4) THEN
stran(4) = 0.D0
IF(DABS(gpcod(1, kgasp)).GT.eps0) THEN
DO ind=1, nne
stran(4) = stran(4)+eldis(1, ind)*shape1(ind)/gpcod(1, kgasp)
END DO
END IF
END IF
RETURN
END SUBROUTINE linear

Interpretation of results obtained by FEM analysis


Interpretation of the results obtained by finite element analysis is one of the most important parts of
the process of analysis of structures. Here, we will use examples to illustrate two approaches for
treating of this problem.

Example: Dual system frame&wall (Fig. 12.1)


Once the structure is solved, for critical sections of columns we can use an approach of
integration of the stresses y in order to obtain bending moment M and axial force N, as shown (Fig.
12.2):

N = t[

y _ ex1 + y1

M = t[

2
y _ ex1 + y1
2

a1 +

y1 + y 2

a1 t1 +

2
y1 + y 2
2

a2 +

y 2 + y3

a 2t2 +

(a 3 + a 4 ) +

y 2 + y3
2

(12.1)

127

y3 + y4

(a 3 + a 4 ) t 3 +

a5 +

y3 + y 4
2

y _ ex 2 + y 4

a5t 4 +

a6]

y _ ex 2 + y 4
2

a6t5 ]

Associated Professor Dr. Viktor Hristovski

where
t thickness of the structure
yi stresses in y direction obtained in integration points of the elements
y_exi extrapolated stresses in y direction
For the case of critical sections in the wall, the same procedure could be applied, however,
alternatively it is better to deal directly with stresses in integration points, using the Rankine Criterion
(Maximum Tensile-Stress Criterion):

f ( I1 , J 2 , ) = 2 3 J 2 cos + I1 3 f t = 0

(12.2)

where ft is the tensile strength of the concrete, and I1, J2 and are first invariant of stress tensor,
second invariant of stress deviator tensor and angle of similarity, respectively. These variables can be
obtained using the following expressions for plane-stress case:

1
( x + y )
3
d1 = x m

m =

d2 = y m
d 3 = xy
d 4 = m

(12.3)

I1 = 3 m

1 2
d1 + d 22 + d 42
2
2
J3 = d4 d4 J 2
J 2 = d 32 +

cos =

3 3 J3
3
2
J 22

So, if the above function f ( I1 , J 2 , ) is less than zero, it means that there is not cracking in
the considered point. If this function is equal or greater than zero it indicates that cracking occur, so
that appropriate reinforcement should be placed. The function f ( I1 , J 2 , ) in fact represents the first
principal stress in the considered point:

f ( I1 , J 2 , ) = 1

(12.4)

For case of plane-strain and axisymmetry, the same equations can be applied with slight
modifications regarding the following variables, as follows:

1
( x + y + z )
3
d4 = z m

m =

(12.5)

This criterion is practical for such materials like concrete and rock, i.e. for brittle materials
with small tensile strength. However, for ductile materials, like steel, Von Mises criterion is more
appropriate. This criterion can be expressed, as follows:

f (J 2 ) = J 2 k 2 = 0
where:

128

(12.6)

Application of Finite Element Method in Structural Analysis

k=

sy
3

(12.7)

and sy is yielding stress of steel.


For soil materials the Mohr-Coulomb Criterion can be used, as follows:

J2

f ( I1 , J 2 , ) = I1 sin + J 2 sin + +
cos + sin c cos = 0
3
3
3
3

where is frictional angle of the material, and c is its cohesion.

Fig. 12.1 Example of dual system frame&wall

Fig. 12.2 Calculation of section quantities N and M from given stresses

129

(12.8)

Associated Professor Dr. Viktor Hristovski

130

Application of Finite Element Method in Structural Analysis

CHAPTER 13

Solution of Equilibrium Equations in Static


Analysis
Introduction
So far we have considered the derivation of the equilibrium equations of a finite element system.
However, the overall effectiveness of an analysis depends to a large degree on the numerical
procedures used for the solution of the system equilibrium equations. As discussed earlier, the
accuracy of the analysis can, in general, be improved if a more refined finite element mesh is used.
Therefore, in oractice, an analyst tends to employ larger and larger finite element systems to
approximate the actual structure. However, this means that the cost of an analysis and, in fact, its
practical feasibility depend to a considerable degree on the algorithms available for the solution of the
resulting systems of equations. Because of the requirements that large systems be solved, much
research effort has gone into optimizing the equation solution algorithms. Currently, equations of the
order 100,000 are solved without much difficulty.
Depending on the kind and number of elements used in the assemblage and on the topology of
the finite element mesh, in a linear static analysis the time required for solution of the equilibrium
equations can be a considerable percentage of the total solution time, whereas in dynamic analysis or
in nonlinear analysis, this percentage may be still higher. Therefore, if inappropriate techniques for the
solution of the equilibrium equations are used, the total cost of analysis is affected a great deal, and
indeed the cost may be many times, say 100 times, larger than it is necessary.
In addition to considering the actual computer effort that is spent on the solution of the
equilibrium equations, it is important to realize that an analysis may, in fact, not be possible if
inappropriate numerical procedures are used. This may be the case because the analysis is simply too
costly using the slow solution methods. But, more seriously, the analysis may not be possible because
the solution procedures are unstable. Especially, the stability of the solution procedures is particularly
important in dynamic analysis.
In this chapter we are concerned with the solution of the simultaneous equations that arise in
the static analysis of structures and solids, and we discuss first the solution of the equations that arise
in linear analysis,

Ku = r

(13.1)

where K is the stiffness matrix, u is the displacement vector, and r is the load vector of the finite
element system.
These procedures for equations solution are also important, because they are the basis of the
algorithms employed for eigensolutions and direct step-by-step integrations during dynamic analysis.
Although we consider explicitly in this chapter the solution of the equilibrium equations that
arise in the analysis of solids and structures, the techniques are quite general and are entirely and
directly applicable to all those analyses that lead to symmetric (positive definite) coefficient matrices.

131

Associated Professor Dr. Viktor Hristovski

Essentially, there are two different classes of methods for the solution of the equations: direct
solution techniques and iterative solution methods. In a direct solution the equations in (13.1) are
solved using a number of steps and operations that are predetermined in an exact manner, whereas
iteration is used when an iterative solution method is employed. At present, direct techniques are
employed in most cases, but for large systems iterative methods can be much more effective.

Direct Solutions Using Algorithms Based on Gauss Elimination


The most effective direct solution techniques currently used are basically applications of Gauss
elimination, which C.F. Gauss proposed over a century ago (1873). However, although the basic
Gauss solution svheme can be applied to almost any set of simultaneous linear equations, the
effectiveness in finite element analysis depends on the specific properties of the finite element
stiffness matrix: symmetry, positive definiteness, and bandedness.
In the following we consider first the Gauss elimination procedure as it is used in the solution
of positive definite, symmetric, and banded systems.
We propose to introduce the Gauss solution procedure by studying the solution of the
following equations:

0 U 1 0
5 4 1
4 6 4 1 U 1
2 =

1 4 6 4 U 3 0

1 4 5 U 4 0
0

(13.2)

In this case the stiffness matrix K corresponds to a simply supported beam with four
translational degrees of freedom, a shown in Fig. 13.1. These equations have been derived by finite
differences, but in this case, they have the same properties as in finite element analysis.
Let us first consider the basic mathematical operations of Gauss elimination. We proceed in
the following systematic steps:
Step 1:Subtract a multiple of the first equation from the second and third equations to obtain
zero elements in the first column of K. This means that 4/5 times the first row is subtracted from the
second row, and 1/5 times the first row is subtracted from the third row. The resulting equations are

4
1
0 U 1 0
5
0 14 5 16 5 1 U 1
2 =

0 16 5 29 5 4 U 3 0

1
4
5 U 4 0
0

(13.3)

Step 2: Considering next the equations in (13.3), subtract 16/14 times the second equation
from the third equation and 5/14 times the second equation from the fourth equation. The resulting
equations are

1
0 U 1 0
5 4
0 14 5 16 5
1 U 2 1

0
0
15 7 20 7 U 3 8 7

20 7 65 14 U 4 5 14
0
0

(13.4)

Step 3: Subtruct 20/15 times the third equation from the fourth equation in (13.4). This gives

132

Application of Finite Element Method in Structural Analysis

1
0 U 1 0
5 4
0 14 5 16 5
1 U 2 1

=
0
0
15 7 20 7 U 3 8 7

0
0
5 6 U 4 7 6
0

(13.5)

Using (13.5), we can now simply solve for the unknows U4, U3, U2, and U1:

7
U4 = 6 =
5
5
6
8 ( 20 7)U
4
12
U3 = 7
=
15 7
5
1 (16 5)U 3 (1)U 4 13
U2 =
=
14 5
5
0 (4)13 (1)12 (0) 7
5
5
5 =8
U1 =
5
5

(13.6)

Fig. 13.1 Stiffness matrices and load vectors considered in the Gauss elimination solution of the
simply supported beam

133

Associated Professor Dr. Viktor Hristovski

In order to identify the physical process corresponding to the mathematical operations in


Gauss elimination, we note first that the operations on the coefficient matrix K are independent of the
elements in the load vector r. Therefore, let us consider now only the operations on the coefficient
matrix K and for ease of explanation again use the above example and Fig. 13.1. We consider that no
loads are applied and hence have

0 U 1 0
5 4 1
4 6 4 1 U 0
2 =

1 4 6 4 U 3 0

1 4 5 U 4 0
0

(13.7)

Using the condition given by the first equation, i.e.,

5U 1 4U 2 + U 3 = 0
4
1
U1 = U 2 U 3
5
5

(13.8)

we can eliminate U1 from the three equations remaining in (13.7), obtaining

1
4
4 U 2 U 3 + 6U 2 4U 3 + U 4 = 0
5
5
1
4
U 2 U 3 4U 2 + 6U 3 4U 4 = 0
5
5
U 2 4U 3 + 5U 4 = 0

(13.9a)

or, in matrix form,

14 5 16 5 1 U 2 0
16 5 29 5 4 U = 0
3

1
4
5 U 4 0

(13.9)

Comparing (13.9) and (13.3), we observe that the coefficient matrix in (13.9) is actually the
lower right 3 x 3 submatrix of the coefficient matrix in (13.3). However, we obtained the coefficient
matrix of (13.9) by using (13.7) and the condition in (13.8), which expresses that no force is applied at
the degree of freedom 1 of the beam. It follows that the coefficient matrix in (13.9) is, in fact, the
stiffness matrix of the beam that corresponds to the degrees of freedom 2,3 and 4 when no force is
applied at the degree of freedom 1, i.e., when the degree of freedom 1 has been "released" (or
"statically condensed out"). By the same reasoning, we have obtained in (13.4) the stiffness matrix of
the beam when the first two degrees of freedom have been released; and in (13.5), the element (4,4) of
the coefficient matrix represents the stiffness matrix of the beam corresponding to degree of freedom
4, when the degrees of freedom 1,2, and 3 have all been released. These stiffness matrices are given in
Figs. 13.1 (b) to (d).

Compacted Column Storage Scheme and Crout Elimination


Assume the symmetric stiffness matrix K (array A( ) ) has dimension 8 x 8 and has zero and nonzero
elements indicated in the Fig. 13.2. The line enveloping the nonzero terms is sometimes called the
"profile" or "skyline".
A( ) is stored in a one-dimensional array, column-wise beginning with the first nonzero
element in each column and ending with the diagonal term. The locations of the diagonal terms in A( )
are stored in a one-dimensional integer array idiag( ). The dimension of idiag( ) is n, the number of

134

Application of Finite Element Method in Structural Analysis

equations. The dimension of A( ) is nak, the sum of the "column heights". The column height is the
number of terms in a column beginning with the first nonzero term and ending with the diagonal term.

K11

A1 A2
A6
A3 A4 A7
A5 A8
A12
A9 A10 A13
A11 A14
A18
A15 A16 A19
A17 A20
A21
Fig. 13.2 Compacted column storage scheme for the stiffness matrix
According to the Fig. 13.2, for this stiffness matrix n=8, nak=21 and idiag( )=(1, 3, 5, 9, 11,
15, 17, 21). The zero terms beneath the skyline must be stored because they become nonzero during
the factorization process.
The heights of the columns in K are determined by subroutine COLHT (see FEM3 program,
on page 113).

Crout Elimination
The procedure used for performing the factorization of the left-hand-side matrix is called
Crout elimination, a convenient variant of Gauss elimination.
Derivation of the computational formulas for Crout elimination is the following:
Let us write the system of equations to be solved:

Ax = b

135

(13.10)

Associated Professor Dr. Viktor Hristovski

We wish to derive algorithms for factorization A = U T DU , forward reduction U T z = b ,


diagonal scaling Dy = z and back substitution Ux = y .
The index version of the Crout factorization is expressed as
j

(1 i j )

Aij = U ki DkkU kj
k =1

where U ii = 1,
U ij = 0,

(13.11)

for i > j

Expanding the above for j=1,2,,n , usefulformulas for programming may be derived, as
follows:
i 1

L ji = Aij U ki L jk

(1 i

j 1)

k =1

U ij = L ji / Dii

(13.12)

j 1

D jj = A jj L jiU ij
i =1

This is the procedure coded in subroutine FACTOR (see FEM3 pogram, on page 111).
Additionally, FACTOR takes account of the profile storage of the coefficient matrix.
The indicial form of the forward reduction is
n

U
i =1

z = bj

(13.13)

ij i

Using the properties of the Uij's, we can immediately derive


j 1

z j = b j U ij zi ,

(2

j n)

(13.14)

i =1

This procedure is coded in subroutine BACK, which takes into account the profile storage of
the stiffness matrix.
Diagonal scaling is also performed in subroutine BACK:
The indicial form of the back substitution is
Expanding this expression, we finaly obtain

136

Application of Finite Element Method in Structural Analysis

APPENDIX 1

Bibliography
[1] K. J. Bathe, "Finite Element Procedures", Prentice Hall, 1996
[2] J. N. Reddy, "An Introduction to the Finite Element Method", 1993
[3] O. C. Zienkiewicz and R. L. Taylor, "The Finite Element Method", 4th edition, Vol. I, 1989

137

Associated Professor Dr. Viktor Hristovski

138

Application of Finite Element Method in Structural Analysis

APPENDIX 2

Application of Finite Element Method in


Nonlinear Analysis of RC Structures
1. Study Of Hypoelastic FEM Based Reinforced Concrete Analytical
Models
1.1 Introduction
Cracking of concrete is one of the major factors contributing to its non-linear behavior. Generally,
two distinguished cracking modes have shown to influence significantly on the overall structural
response: normal mode, caused by principal tensile stresses acting perpendicular to the crack plane
(often referred to as Mode I), and tangential mode (or Mode II), resulting from shear-stresses in the
crack plane, causing shear-slip phenomenon. In spite of its discontinuity nature, these phenomena have
been more or less successfully simulated over the last 30 years using continuum-based approaches.
Especially, the smeared crack models for the normal mode have become very popular because of their
convenience to be easily implemented into finite element programs. Also, when the structural response
is not governed by dominant cracks with large crack widths (which is the case of properly designed
structural elements), then the smeared crack approach offers good resemblance with the physical
reality. Within this study, adopting the smeared crack approach, the both cracking modes have been
discussed. In order to emphasize the influence of each mode separately, comparative analyses have
been performed. Regarding the normal mode, a hypo-elastic rotating crack model has been
considered, and as for tangential mode, the Walravens (Ref. [1]) shear-slip model including the
effects of aggregate interlock, has been adopted.
Although the appearance of the rotating crack model caused different reactions and critics in the
past, nowadays, supported by the experimental evidence, its physical interpretation is becoming
clearer. Practically, the rotating cracks simulate the formation of a new crack in rotated direction,
while the previously formed crack closes. Hence, the rotating crack model could be treated as a special
case of fixed non-orthogonal crack model storing the information only for the latest formed crack
(Ref. [2]). In such a way sufficient accuracy, reduced computational effort, and optimal Finite Element
implementation is provided.
The proposed constitutive models have been implemented into the original software package
FELISA/3M. Using selected specimens recommended for model verification (Ref. [3, 4]), the
particular contribution of each cracking mode has been comparatively considered, finding reasonable
agreement between the analyses and tests. Particularly, the inclusion of the influence of the tangential
mode has shown to be very important for reinforced concrete members with emphasized shear type of
failure.

139

Associated Professor Dr. Viktor Hristovski

1.2 Proposed Constitutive Models


1.2.1 Constitutive Model for Simulation of the Normal Crack Mode

The proposed model based on hypo-elasticity uses the equivalent uniaxial strain formulation for
bi-axial stress-strain state (Ref. [5]). The principal stresses and strains are allowed to rotate in coaxial
directions during the loading process that is necessary condition for satisfying the form invariance of
the crack-induced orthotropic material behavior. From this condition, the tangent shear stiffness of the
cracked material can be determined, as follows:

GT =

1 2
2( 1 2 )

(1)

In Eq.(1), 1 and 2 are the principal stresses, and 1 and 2 are principal strains. In the cases
where a large rotation is expected (as in the analysis of beam-column joints), control of this rotation
becomes necessary in order to prevent numerical instabilities during calculation of the equivalent
uniaxial strains. Therefore, according to Noguchi (Ref. [5]), the improved accuracy is provided by
transformation of the principal axes in case when the rotation relating to the original state becomes
greater than 45 degrees.
The stress-update scheme is based on the hypo-elastic incremental formulation, where the
incremental stresses in each integration point of the finite elements can be calculated as follows:

d n +1 = C T d n +1

(2)

Here, dn+1 and dn+1 are actual incremental stresses and strains, while CT is the material elasticity
matrix, which depends on the previous state of the equivalent uniaxial strain functions u. All the
quantities in Eq. (2) are related to the global coordinate system. According to the equivalent uniaxial
strain definition, the increments of these functions du can be related to the increments of the strains in
principal directions dp using the following equation (with being Poissons ratio, and E1 and E2
tangent moduli in principal directions):

1
1
d u =
1 2 E1

E2

E2

E1
d
p
1

(3)

During cracking, the modulus of elasticity in the direction normal to the crack becomes zero.
Hence, in order to avoid numerical instability, the ratios E1/E2 and E2/E1 in Eq. (3), according to
Noguchi (Ref. [5]), have been set unity. Since the material axes rotate (with angle ), an appropriate
transformation should be done regarding the material elasticity matrix CT and the strain and stress
vectors, as follows:

p = S( )

(4)

p = T( )

(5)

where:

cos 2
sin 2
cos sin

2
2
cos
cos sin
S( ) = sin
2 cos sin 2 cos sin cos 2 - sin 2

140

(6)

Application of Finite Element Method in Structural Analysis

cos 2
sin 2
2 cos sin

2
2
cos
2 cos sin
T( ) = sin
cos sin cos sin cos 2 - sin 2

(7)

In Eqs. (4) and (5), the strain and stress vectors with subscript p are related to the principal directions. The vectors without subscripts are related to the global x-y
coordinate system. The relation between the material elasticity matrix in principal and in global coordinates can be expressed as follows:

C T = T( )C p S( )

(8)

The ultimate surface adopted in the model is based on the Kupfers (Ref. [6]) yield curve for biaxial stresses, taking into account the influence of the strength reduction of cracked concrete in
compression, according to Noguchi (Ref. [7]). Hence, particularly, for the combination of stresses
tension-compression, when tension strain is greater than cracking strain, the following expressions
are used:

c2 =

fc

0.27 + 0.96 u1
cu

0.167

fc

(9a)

c1 = c2

(9b)

In Eqs. (9a) and (9b), c1 and c2 are ultimate stresses in principal directions, fc < 0 is uniaxial
concrete strength in compression, u1 > 0 and cu < 0 are equivalent uniaxial strain function in principal
direction 1 (in tension) and uniaxial strain in compression for the corresponding strength fc,
respectively. Once the equivalent uniaxial strains have been updated using the Eq. (3), the
corresponding equivalent uniaxial stresses u1 and u2 in principal directions can be found by the
Saenzs uniaxial relation (Ref. [8]) for the case of equivalent uniaxial strains in compression, or by
tension-stiffening function proposed by Shirai (Ref. [9]), in the case of tension. The Shirais tensionstiffening function is expressed as follows:

u1 = f t (1 2.748 + 2.654 2 0.906 3 )



= u1 cr
m cr

(10a)
(10b)

The adopted constitutive relations for concrete are shown in Fig. 1. In Eqs. (10a) and (10b) ft > 0
is the concrete uniaxial tension
Shirai [9]: Eqs. (10) strength, cr is a concrete
cracking strain and m is a
tension strain for zero stresses
(adopted in the analyses: m
Saenz [8]:
E o u2
u2 =
=20 cr). Once u1 and u2
2
u2 u2
c2
have been found, the total

1 + (E o
2)
+
c2 c2
c2
corrected stress vector n+1
can be calculated directly by
using transformation from local
(principal)
into
global
Fig.1 Adopted constitutive relations for concrete
coordinate system.
In this model, the smeared reinforcement approach has been adopted for modeling of reinforcing
bars, assuming perfect bond between the steel and the concrete.
1.2.2

Constitutive Model for Shear-Slip Relation along the Crack

Apart from taking into account the normal cracking mode, as described in the previous chapter,
the slippage has also been treated within this hypo-elastic smeared-crack and smeared-reinforcement

141

Associated Professor Dr. Viktor Hristovski

formulation. The discussed algorithm is based on the approach recently proposed by Vecchio
(Refs.[10, 11]), using the Walravens formulation (Ref. [1]) of the shear-slip relationship for the
cracked surfaces, as follows:

1.8 w

-0.8

c
+ (0.234 w 0.707 0.2) f cc

(11)

In Eq. (11), is the tangential slip along the crack (in mm), w is the crack width (in mm), fcc is
the cube concrete compressive strength (in MPa) and c is the shear stress acting along the crack (in
MPa). According to assumptions of the adopted model, the shear stress c along the cracks should be
equal to zero, since the direction of the material axes are assumed to be identical to the principal axes.
However, due to the aggregate interlock influence, which is taken into account within the Eq. (11), as
well as due to the local equilibrium conditions between the forces in reinforcement and concrete along
the crack surface (Fig. 2), the existence of shear stresses becomes reality so that, according to Vecchio
(Ref. [10]) it can be calculated, as follows:
n

c = i ( f s,cr,i f s,i )cos i sin i

(12)

i =1

In Eq. (12), i is the reinforcement ratio of the i-th reinforcement (with the direction i related to
the global x-axis) crossing the crack, while i is the difference between angle of the principal direction
1 and angle of the reinforcement direction i. Functions fs,cr,i and fs,,i are local stress (at the analyzed
crack) and the average stress in reinforcement (in the integration point of the actual finite element),
Using the Eq. (11), the shear angle s
respectively.
can be found as follows:

s =

(13)

where s is a distance between cracks. In the


analyses, the value of s has been taken as
the distance among the integration points
within the finite elements. The crack width
w for the calculation of in Eq. (11) can be
easily found as follows:

w = 1u s

Fig.2 Equilibrium conditions along the crack surface

slip

(14)

Once s has been calculated from Eq. (13),


the strains due to shear-slip can be
calculated using the following expressions:

1
sin 2

1

= = s sin 2

2


cos 2

s
x
s
y
s
xy

(15)

In order to establish an incremental relation, the incremental strains due to shear-slip should be calculated from the actual (
follows:

d slip = slip slip,p

slip

) and previous (

slip,p

) strains, as

(16)

Finally, the additional unbalanced stresses dslip can be calculated according to the following
incremental relation:

142

Application of Finite Element Method in Structural Analysis

d slip = C T d slip

(17)

In Eq.(12) the values of the local forces in reinforcing bars fs,cr,i can be calculated using iterative
numerical procedure based on Newton-Raphson method, assuming that the local strains s,cr,i in bars
can be found from the average strains s,i and the strain increment 1,cr resulting from the cracking, as
follows:

s,cr,i = s,i + 1,cr cos 2 i

(18)

satisfying the following equilibrium condition:

1 = i ( f s,cr,i f s,i )cos i

(19)

i =1

The integral algorithm including both cracking modes has been implemented into the original
software package FELISA/3M.
1.3 Numerical Implementation And Verification
The FEM based software package FELISA/3M with the included previously described constitutive
models offers possibilities of performing non-linear progressive failure analysis of reinforced concrete
members and structures. Verification of the models has been done using the results from experiments
conducted on samples of reinforced concrete columns, beams and shear-walls, recommended for
model verification by Japan Concrete Institute (JCI) (Ref. [3]) and Architectural Institute of Japan
(AIJ) (Ref. [4]). Within this paper, the results from the analysis of one column and four shear-wall
specimens are given.
1.3.1 JCI Shear-Wall Specimens #1 and #1

The JCI shear-wall specimens #1 and #1 (tested by Aoyama et al.) consist of heavily reinforced
base and top spreader beams for the purpose of the load transfer, as well as of the columns with t=20
cm, cast integrally with the walls t=10 cm. The both specimens have the same material properties and
the same amount of reinforcement (see Tab. 1) with only difference in the columns cross sections. As
observed experimentally (specimens were subjected to reversed cyclic loading), the failure
mechanisms included flexural cracking of the tensioned columns, shear-tension failure of the walls
and crushing of the compressed columns. As can be seen in the Figs. 3 and 4, the performed FE nonlinear analyses for both specimens have shown that the integral models including both cracking modes
(see curves w) resulted in better agreement with experiments, especially regarding the stiffness and
strength, than the basic models with included only the normal cracking mode (curves w/o). The
experimentally measured maximum forces of 1650 kN and 1410 kN for the #1 and #1 specimens,
respectively have been correctly simulated by analytically obtained values of 1638 kN (#1) and 1378
kN (#1) using the integral model. Also, the failure mechanisms have been well simulated. However,
the discrepancy regarding the displacements still exists, probably due to the experimentally observed
slip on the boundaries between the parts with different thickness that has not been considered in the
model. The general impression is that for both specimens, very obvious and reasonable softening
tendency has been analytically observed owning to the inclusion of the tangential crack mode into the
concrete constitutive model.
1.3.2 JCI Column Specimen No. 1

The basic geometry of the JCI column specimen No.1 (tested by Kokusho et al.) is given in Fig. 5,
and the properties of the used concrete and steel are given in Tab. 2. According to the experimental
observations, the specimen failed in non-ductile diagonal tension failure mode, without yielding of the
reinforcement (see EXP in Fig. 5). The performed monotonic loading progressive failure analyses
using both models with (w) and without (w/o) inclusion of the tangential cracking mode have

143

Associated Professor Dr. Viktor Hristovski

resulted into relatively correct simulation of the stiffness. Regarding the capacity and ductility, the
integral model with included tangential crack mode has shown to be more appropriate than basic
model taking into account only the normal cracking mode ( see analytically obtained force displacement diagrams in Fig.5). The maximum experimentally observed force of 121 kN has been
successfully simulated by the integral model, obtaining 121.4 kN. Unlike the previous example (shear
specimens #1 and #1), where the inclusion of the tangential cracking mode led to softened response
due to the additional slippage deformations along the cracks, in this case, as the comparative analyses
between the used models have shown, the contribution of the aggregate-interlock mechanism in
diagonal cracks has resulted into increased overall structural capacity.
Tab. 1 Material properties of the JCI Shear Wall Specimens Wall#1 and Wall#1
JCI Shear Wall Specimens Wall#1 and Wall#1
Zone
Thickness
Horizontal reinforcement
[m]
Diameter
y[MPa]
1
0.30
6-D29
400
2
0.20
2D6/5 cm
399
3
0.10
2-D6/7.5 cm
362
4
0.30
6-D29
400
+ 3-D22
Es = 210 GPa

Vertical Reinforcement
Diameter
y[MPa]
2-D10/10 cm
353
12-D13
368
2-D6/7.5 cm
362
2-D10/10 cm
353

Concrete
fc = 29.7 MPa
ft= 2.36 MPa
Ec = 23.4 GPa

Fig.3 JCI Specimen #1: Geometry and comparison of analytical (w with shear-slip
effects, w/o without shear slip effects) and experimental (EXP) F-D diagrams
1.3.3 AIJ Shear-Wall Specimens W2BF-N0 and W2BF-N1

The geometry and the material properties of the 2-story shear-wall specimens W2BF-N0 and
W2BF-N1 (tested by Shibata et al. [4]) are given in Figs. 6 and 7 and Tab. 3. As can be seen, the
concrete strength and the axial force level were the only differences between these two specimens
subjected to cyclic loading. As experimentally observed, the first specimen W2BF-N0 failed in
tension-flexural mode of the columns, however in limited ductile manner due to the lack of axial
force resulting in slip- page along the rigid base. Since, the influence of the slippage between the parts
with different thickness has not been considered into the constitutive models, the analytically obtained
force-displacement curves for this specimen have shown larger capacity (160.2 kN, compared with the
experimentally obtained maximum force of 147 kN) as well as lower ductility, as can be seen in Fig.
6. However, regarding the stiffness, good correlations have been obtained. The second specimen
W2BF-N1, due to the presence of axial force of N=108 kN preventing the slippage relative to the base,
failed in much more ductile manner in predominant flexural mode. This behavior has been

144

Application of Finite Element Method in Structural Analysis

successfully analytically simulated, as shown in Fig. 7. The maximum experimentally measured base
force of 213 kN has been analytically simulated by 227.5 kN using the integral model (curve w).
Generally, due to the dominant influence of the normal (bending) cracking mode for both specimens,
the comparative analyses using the both basic and integral models have not shown a significant
difference, resulting in a reasonable agreement with the experiments.

Fig.4

JCI Specimen #1: Geometry and comparison of analytical (w with shearslip effects, w/o without shear slip effects) and experimental (EXP) F-D
diagrams
Tab. 2

Material properties of the JCI Column Specimens No.1

JCI Column Specimen No. 1


Steel
Longitudinal
Hoops
Diameter
2 x 3-D13
2-4 /15 cm
A [cm2]
7.62
0.254
[%]
1.22
0.068
Es [GPa]
190
203
400
380
y[MPa]

Concrete
fc [MPa]

21.2

ft [MPa]

1.83

Ec [GPa]

20.9

1.4 Conclusions
Hypo-elastic FEM based models for non-linear progressive failure analysis of reinforced concrete
members have been discussed, considering the effects of rotation of the material (and principal) axes
(Ref. [5]), the tension-stiffening due to the normal (bending) cracking mode (Shirais equation, Ref.
[9]) and the influence of the shear-slip mechanism (Refs. [1, 10, 11]). The compressive behavior of
concrete has been simulated using the Saenzs equation (Ref. [8]) with included effects of reduction of
the compressive strength of cracked concrete according to Noguchi (Ref. [7]). The proposed models
have been comparatively studied and implemented into the original software package for non-linear
analysis of reinforced concrete structures FELISA/3M. The model including only the normal cracking
mode has shown to be appropriate for the case of members with basically flexural and mixed failure
modes. However, the integral model including both cracking modes has shown to be significant for
correct simulation of the failure progress for members with predominant shear behavior. Two
tendencies have been observed: For the members failing in premature brittle manner without yielding
of reinforcement, the inclusion of the aggregate interlock mechanism has resulted in increased shear
capacity. On the other hand, for the cases of more ductile members, the developed shear deformations
have contributed in decreasing the capacity. As recommendation for future work, the influence of the

145

Associated Professor Dr. Viktor Hristovski

slippage between the parts of the specimens with different thickness should be considered, as it can
significantly improve the overall force-displacement prediction.
ACKNOWLEDGMENTS
The authors express appreciations to the Japan Concrete Institute (JCI), as well as to the
Architectural Institute of Japan (AIJ) for the opportunity of using the selected and recommended
specimens for the model verification. Also, the authors would like to express their appreciations to the
Japan Society for the Promotion of Science (JSPS) that supported this research through the Postdoctoral Fellowship Program for Foreign Researchers.
Tab. 3 Material properties of the AIJ Shear Wall Specimens W2BF-N0 and W2BF-N1
JCI 2-Story Shear Wall Specimens W2BF-N0 and W2BF-N1
Zone
Thickness
Horizontal Reinforcement
Vertical Reinforcement
[m]
Diameter
Es [GPa]
Diameter
Es [GPa]
y[MPa]
y[MPa]
1
0.35
8-D19
575
181
2-D10/10 cm
381
175
2
0.15
2-4 /5 cm
387
167
4-D10
381
175
3
0.15
4-D10
381
175
387
167
2-4/5 cm
4
0.15
4-D10
381
175
387
167
2-4/5 cm
5
0.05
4 /10 cm
375
177
375
177
4/10 cm
6
0.04
4 /10 cm
375
177
375
177
4/10 cm
Concrete: fc = 28.0 (30.0) MPa, ft= 1.746 (1.807) MPa, Ec = 24.7 (24.7) GPa

REFERENCES
[1]

Walraven, J.C. : Fundamental Analysis of Aggregate Interlock, ASCE Journ. of Structural


Engineering, Vol.107, No.11, 1981, pp.2245-2270
[2] Hofstetter, G. and Mang, H.A. : Computational Mechanics of Reinforced Concrete Structures,
Vieweg & Sohn, Wiesbaden, 1995
[3] JCI : Collected Experimental Data of Specimens for Verification of Analytical Models,
Proceedings of JCI 2nd Colloquium on Shear Analysis of RC Structures, JCI-C6, October 1983
(In Japanese)
[4] Shibata, T., Hirabuki, M., Goto, Y. and Joh, O., Performances at various deformations in R/C
multi-story structural walls,, Architectural Institute of Japan, Summaries of technical papers of
annual meeting, Structures II, pp. 573-578, October 1990 (In Japanese)
[5] Noguchi, H. : Analytical Models for Reinforced Concrete Members Subjected to Reversed
Cyclic Loading, Proc., Seminar on Finite Element Analysis of Reinforced Concrete Structures,
Volume 2, JSPS, Tokyo, May 21-24, 1985, pp.93-112
[6] Kupfer, H. and Gerstle, K. H. : Behavior of Concrete under Biaxial Stresses, ASCE Journal of
Engineering Mechanics Division, Vol.99, No.EM4, Proc. Paper 9917, Aug. 1973, pp.852-866
[7] Noguchi, H., Ohkubo, M. and Hamada S. : Basic Experiments on the Degradation of Cracked
Concrete under Biaxial Tension and Compression, Proc. of JCI, Vol.11, No.2, 1989, pp.323-326
(In Japanese)
[8] Saenz, L.P. : Discussion of Equation for the Stress-Strain Curve of Concrete by Desayi and
Krishman, ACI Journal, Vol.61, September 1964, pp. 1229-1235
[9] Shirai, N. and Sato, T. : Bond-Cracking Model for Reinforced Concrete, Trans. of the JCI, Vol.
6, 1984, pp. 457-468
[10] Vecchio, F. J. : Disturbed Stress Field Model for Reinforced Concrete: Formulation, Journal of
Structural Engineering, ASCE, Vol. 126, No. 9, September, 2000, pp. 1070-1077
[11] Vecchio, F. J. : Disturbed Stress Field Model for Reinforced Concrete: Implementation,
Journal of Structural Engineering, ASCE, Vol. 127, No. 1, January, 2001, pp. 12-20

146

Application of Finite Element Method in Structural Analysis

Fig.5 JCI Column Specimen No.1: Geometry and comparison of analytical (w with shear-slip
effects, w/o without shear slip effects) and experimental (EXP) F-D diagrams

Fig.6 AIJ 2-Story Shear-Wall Specimen W2BF-N0: Geometry and comparison of analytical (w
with shear-slip effects, w/o without shear slip effects) and experimental (EXP) F-D
diagrams

147

Associated Professor Dr. Viktor Hristovski

Fig.7 AIJ 2-Story Shear-Wall Specimen W2BF-N1: Geometry and comparison of analytical (w
with shear-slip effects, w/o without shear slip effects) and experimental (EXP) F-D
diagrams

2. Another Implementation of Smeared Crack Models for Shear


Analysis of RC Members
2.1 Introduction

Cracking is one of the largest contributors to the non-linear behavior of reinforced concrete
structures. In spite of its discontinuity nature, simulation of this phenomenon has been often conducted
using smeared models, due to their simplicity and convenient implementation into finite element
analysis programs. In this paper, smeared crack models based on hypo-elasticity are discussed, taking
into account both normal and tangential cracking modes that appear as a result of the normal tensile
stresses acting perpendicularly to the crack plane and the local shear stresses acting along the crack
plane, respectively. Using selected specimens recommended for model verification, the particular
contribution of each cracking mode has been comparatively considered, finding reasonable agreement
between the analyses and tests. The inclusion of the influence of the tangential mode via the proposed
shear-slip model has shown to be important for better simulation of the behavior of RC members with
emphasized shear type of failure.
2.2 Smeared rotating-crack model

The proposed crack model for the normal mode is based on hypo-elasticity, as described in Ref.
[1]. The principal stresses and strains are allowed to rotate in coaxial directions during the loading
process, satisfying the form invariance condition. From this condition, the tangent shear stiffness in
the cracked material can be determined, as follows:

GT =

1 2
2( 1 2 )

(1)

In Eq.(1), 1 and 2 are principal stresses, and 1 and 2 are


principal strains. In the cases where a large

rotation is expected (as in the analysis of beam-column joints), control of this rotation becomes
necessary in order to prevent numerical instabilities during calculation of the equivalent uniaxial
strains. Therefore, according to Noguchi (Ref. [1]), the improved accuracy is provided by
transformation of the principal axes in case when the rotation relating to the original state becomes
greater than 45 degrees. This can be expressed, as follows:

bo =| new o |

148

(2a)

Application of Finite Element Method in Structural Analysis

b1 =| new old |

(2b)
In Eqs. (2a) and (2b), o, ld, new are initial, previous and current angle of the principal axis 1, related
to global x-axis, respectively. If bo > 45o or b1 > 45o then a transformation of axes is needed in such a
way that the stresses, strains and stiffness regarding the axis 1 are substituted to the same respective
quantities related to axis 2 and vise versa.
The ultimate surface adopted in the model is based on the Kupfers yield curve for bi-axial stresses
(Ref. [2]), taking into account the influence of the strength reduction of cracked concrete in
compression, according to Noguchi et al. (Ref. [3]). Hence, particularly, for the combination of
stresses tension-compression, when tension strain is greater than cracking strain, the following
expressions are used:

fc

c2 =


0.27 + 0.96 u1
cu
c1 = c2
(3b)

0.167

fc

(3a)

In Eqs. (3a) and (3b), c1 and c2 are ultimate stresses in principal directions, fc is uniaxial concrete
strength in compression, u1 and cu are equivalent uniaxial strain function in principal direction 1 (in
tension) and uniaxial strain in compression for the corresponding strength fc, respectively. The
constitutive relation of concrete for compression is based on the equation of Saenz (Ref. [4]). Tensionstiffening effect during cracking has been taken into account using the Shirais function (Ref. [5]), as
follows:

u1 = f t (1 2.748 + 2.654 2 0.906 3 )



= u1 cr
m cr

(4a)
(4b)

In Eqs. (4a) and (4b) ft is concrete uniaxial tension strength, cr is a concrete cracking strain and m is
a tension strain for zero stresses (adopted in the analyses: m =20 cr). In this model, the smeared
reinforcement approach has been adopted for modeling of reinforcing bars using elastic-plastic
constitutive model, assuming perfect bond between the steel and the concrete.
2.3 Smeared shear-slip model

Apart from taking into account the normal cracking mode, as described in the previous chapter,
the slippage has also been treated within this smeared-crack and smeared-reinforcement formulation.
The discussed algorithm is based on the approach recently proposed by Vecchio (Ref. [6]), using the
Walravens formulation (Ref. [7]) of the shear-slip relationship for the cracked surfaces, as follows:

1.8 w

-0.8

c
(5)
+ (0.234 w 0.707 0.2) f cc

In Eq. (5), is tangential slip along the crack (in mm), w is crack width (in mm), fcc is cube concrete
compressive strength (in MPa) and c is local shear stress acting along the crack (in MPa). According
to Vecchio (Ref. [6]) this local shear stress can be calculated using local equilibrium conditions in the
crack plane, as follows:
n

c = i (f s,cr,i f s,i )cos i sin i

(6)

i =1

In Eq. (6), i is the reinforcement ratio of the i-th reinforcement (with the direction i related to the
global x-axis) crossing the crack, while i is the difference between angle of the principal direction 1
and angle of the reinforcement direction i. Functions fs,cr,i and fs,i are local stress (at the analyzed
crack) and the average stress in reinforcement (in the integration point of the actual finite element),
respectively. The basic idea of the concept is to find the incremental strains due to slippage dslip and
to calculate resulting unbalanced stresses dslip as follows:

d slip = C T d slip

(7)

149

Associated Professor Dr. Viktor Hristovski

where CT is the concrete tangent modular matrix.


2.4 Numerical example

Verification of the models has been done using the results from experiments conducted on
samples of reinforced concrete columns, beams and shear-walls, recommended for model verification
by Japan Concrete Institute (JCI) and Architectural Institute of Japan (AIJ). Within this paper, the
comparative results from the analyses of the JCI shear-wall specimen #3 (corresponding to W7502
tested by Ono et al. 1976, Ref. [8]) are given (see Fig. 1). According to the experimental observations,
this specimen failed in shear mode, after developing large bending plastic deformation. Also, the
compressive failure together with shear-slip failure along the contact zone between the wall and the
base structure occurred. In addition, the large plastic strain of reinforcing bars was observed.

Fig. 1 Geometry of the JCI shear-wall specimen #3 and comparison of the obtained force-displacement
diagrams: experimental curve (EXP), analytical curve without shear-slip mode (w/o), analytical
curve including effects of shear-slip mode (w)
The material properties of the analyzed specimen are given in Table 1. The finite element mesh of
the analytical model consists of 164 isoparametric elements with 8 nodes using 3x3 Gaussian
integration scheme. As can be seen in Fig. 1, the analytical simulations have predicted the forcedisplacement diagrams correctly, as to the capacity and ductility. It should be noted that the analytical
results only up to the peak capacities are here presented, although the computations continued further,
following the descending branch of the force-displacement diagrams. The other aspects of the
behavior have also been well simulated: the failure progress mechanisms, crack patterns, stress states
in concrete and yielding of the reinforcement. However, the analytically obtained initial stiffness has
been greater than experimental one, because the influence of the slippage between the parts with
different thickness has not been taken into account in the model.
Table 1 Material properties of the JCI shear-wall #3
Compressive concrete
strength

23.3 MPa

Concrete tension strength 2.13 MPa


Initial elasticity modulus

24,135 MPa

Steel yielding strength

285 MPa

Steel elasticity modulus

210 GPa

150

Application of Finite Element Method in Structural Analysis


2.5 Conclusions and recommendations

Hypo-elastic FEM crack models based on smeared approach are discussed, considering the
tension-stiffening effect due to the normal cracking mode and the influence of the shear-slip
mechanism along the crack. The analyses showed (as in Fig. 1) that the integral model including both
cracking modes has resulted in more correct simulation of the failure progress than the basic model
without taking into account the shear-slip. Also, it can be concluded that the influence of the slippage
between the specimens parts with different thickness could be significant, as experiments showed.
Therefore, in order to improve the overall force-displacement prediction, this phenomenon should also
be considered in the future analytical models.
2.6 References

1. Noguchi, H. Analytical Models for Reinforced Concrete Members Subjected to Reversed Cyclic
Loading, Proc., Seminar on Finite Element Analysis of Reinforced Concrete Structures, Volume 2,
JSPS, Tokyo, May 21-24, 1985, pp.93-112
2. Kupfer, H. and Gerstle, K. H., Behavior of Concrete under Biaxial Stresses, ASCE Journal of
Engineering Mechanics Division, Vol.99, No.EM4, Proc. Paper 9917, Aug. 1973, pp.852-866
3. Noguchi, H., Ohkubo, M. and Hamada S., Basic Experiments on the Degradation of Cracked
Concrete under Biaxial Tension and Compression, Proc. of JCI, Vol.11, No.2, 1989, pp.323-326
(In Japanese)
4. Saenz, L.P., Discussion of Equation for the Stress-Strain Curve of Concrete by Desayi and
Krishman, ACI Journal, Vol.61, September 1964, pp. 1229-1235
5. Shirai, N. and Sato, T., Bond-Cracking Model for Reinforced Concrete, Trans. of the JCI, Vol. 6,
1984, pp. 457-468
6. Vecchio, F. J., Disturbed Stress Field Model for Reinforced Concrete: Formulation, Journal of
Structural Engineering, ASCE, Vol. 126, No. 9, September, 2000, pp. 1070-1077
7. Walraven, J.C., Fundamental Analysis of Aggregate Interlock, ASCE Journ. of Structural
Engineering, Vol.107, No.11, 1981, pp.2245-2270
8. JCI, Collected Experimental Data of Specimens for Verification of Analytical Models,
Proceedings of JCI 2nd Colloquium on Shear Analysis of RC Structures, JCI-C6, October 1983 (In
Japanese)

151

Vous aimerez peut-être aussi