Upload
hani-aziz-ameen
View
262
Download
0
Embed Size (px)
DESCRIPTION
derivation of lagrangian shape functions for hexahedral element, Hani Aziz Ameen, Finite element method, FEM, superposition method
Citation preview
1
DERIVATION OF LAGRANGIAN SHAPE FUNCTIONS FOR
HEXAHEDRAL ELEMENT
HANI AZIZ AMEEN
Associate Professor of Engineering and Applied Mechanics
Dies and Tools Engineering Department
Technical College,
Baghdad,
Iraq E-mail: [email protected]
ABSTRACT This paper introduces a general theory for the derivation of the shape functions for the hexahedral element (20-node) in the interval [0,1] .Two basic procedures are introduced; the first by polynomials equation and the second by superposition .The paper also introduces the formulation of the three-dimensional finite element method for elasticity problems. A complete finite element program is introduced in QBASIC for the three-dimensional
problems using either local coordinates [ ]1,1 +− or intrinsic coordinates [ ]1,0 + .
INTRODUCTION
The Lagrangian quadrilateral family of finite elements appeared very early in the history of the
finite element method. Melosh [1] derived the 4-node rectangular element. Pain [2] gave an
algorithm for the direct displacement approach with any number of unknown coefficients. The
concept of arbitrary-node elements was described by Irons [3]. Argyris [4] derived the 8-node
paralleiogramic element. Ergatoudis [5] derived the shape function for some Lagrangian and
serendipity elements. Zafrany [6] derived the Lagrangian and Hermitian shape functions for
quadrilateral element. The shape functions for 20-node hexahederal element with intrinsic
coordinates using Lagrange superposition is presented in this paper. The main concept here is
that the geometry of the element is defined using the nodal coordinates and the shape function
which are used to interpolate the main unknowns, e.g., displacement or temperature with an iso-
parametric formulation which is convenient to express the shape functions in terms of the non-
dimensional element coordinates ξ, η and ζ which varies from –1 to +1 over the element for local
coordinates and from 0 to +1 over the element for intrinsic coordinates [7]. This coordinates
International Electronic Engineering Mathematical Society IEEMS
http://www.ieems.org
International e-Journal of Abstract and Applied Engineering Mathematics
http://www.ieems.org/iejaaem.htm
ISSN 2090-5297
Volume (1), January, 2011, pp.1-30
2
system is particularly useful when the numerical integration is adopted to evaluate any element
integrals which are required during the stiffness matrix and load vector calculations.
COMPLETE POLYNOMIALS IN THREE DIMENSIONS
In the three dimensions shown in figure (1), it can be used to provide the terms in a complete
polynomial of nth order [8] which may also be found from the expression
nkjizyxzyxfp
r
kji
r ≤++=∑=
,),,(1
γ
Where the number of terms in the polynomial is given as:
( )( )( ) 6/321 +++= nnnp
Figure 1: Complete polynomials in three dimensions
Hence for a linear polynomial
zγyγxγγzyxf 4321),,( +++=
And the number of required terms is 4,
For a quadratic polynomial 2
10
2
9
2
87654321),,( zγyγxγyzγxzγxyγzγyγxγγzyxf +++++++++=
Thus 10 terms are required
For cubic polynomial
yxγzxγzγyγxγyzγxzγxyγzγyγxγγzyxf 2
12
2
11
2
10
2
9
2
87654321 ),,( +++++++++++=
3
20
3
19
3
18
2
17
2
16
2
1514
2
13 zγyγxγzyγyzγxyγxyzγxzγ ++++++++ (1)
And 20 terms are required
Now equation (1) for non-dimensional coordinates (ξ,η,ζ) will be:
ηξγζξγζγηγξγηζγξζγξηγζγηγξγγ 2
12
2
11
2
10
2
9
2
87654321 +++++++++++=Ψ
3
20
3
19
3
18
2
17
2
16
2
1514
2
13 ζγηγξγζηγηζγξηγξηζγξζγ ++++++++ (2)
Where Ψ is any physical variable, i.e., displacement u,v,w or temperature …etc. Applying
equation (2) on each node of the element in figure (2) gives:
13
2014131211 ............................... ζγζγηγξγγ +++++=Ψ
23
2024232212 ............................... ζγζγηγξγγ +++++=Ψ
…………… (3)
3
203
20204203202120 ............................... ζγζγηγξγγ +++++=Ψ
ξ , η, and ζ for the local node number for this element figure(2), gives the following table (1).
Figure 2: 20-node rectangular parallelepiped element (hexahedral element)
Table (1)
Local node ξi ηi ζi
1 –1 –1 –1
2 1 –1 –1
3 1 1 –1
4 –1 1 –1
5 –1 –1 1
6 1 –1 1
7 1 1 1
8 –1 1 1
9 0 –1 –1
10 1 0 –1
11 0 1 –1
12 –1 0 –1
13 –1 –1 0
14 1 –1 0
15 1 1 0
16 –1 1 0
17 0 –1 1
18 1 0 1
19 0 1 1
20 –1 0 1
Substituting the value of ξi, ηi and ζi from the table (1) into equation (3) and solve it
simultaneously to get the value of constants 20321 ,....,,, γγγγ and then substitute these constants
4
into equation (2), one can get:
202044332211 ....... NNNNN Ψ++Ψ+Ψ+Ψ+Ψ=Ψ (4)
Where
)2)(1)(1)(1)(8/1(1 −−−−−−−= ζηξζηξN
)2)(1)(1)(1)(8/1(2 −−−−−+= ζηξζηξN
)2)(1)(1)(1)(8/1(3 −−−−++= ζηξζηξN
)2)(1)(1)(1)(8/1(4 −−+−−+−= ζηξζηξN
)2)(1)(1)(1)(8/1(5 −+−−+−−= ζηξζηξN
)2)(1)(1)(1)(8/1(6 −+−+−+= ζηξζηξN
)2)(1)(1)(1)(8/1(7 −+++++= ζηξζηξN
)2)(1)(1)(1)(8/1(8 −++−++−= ζηξζηξN
)1)(1)(1)(4/1( 2
9 ζηξN −−−=
)1)(1)(1)(4/1( 2
10 ζηξN −−+=
)1)(1)(1)(4/1( 2
11 ζηξN −+−=
)1)(1)(1)(4/1( 2
12 ζηξN −−−=
)1)(1)(1)(4/1( 2
13 ζηξN −−−=
)1)(1)(1)(4/1( 2
14 ζηξN +−−=
)1)(1)(1)(4/1( 2
15 ζηξN ++−=
)1)(1)(1)(4/1( 2
16 ζηξN −+−=
)1)(1)(1)(4/1( 2
17 ζηξN +−−=
)1)(1)(1)(4/1( 2
18 ζηξN +−+=
)1)(1)(1)(4/1( 2
19 ζηξN ++−=
)1)(1)(1)(4/1( 2
20 ζηξN +−−=
It can be proved that the above shape functions satisfied the conditions
∑ =1),,( ζηξNi (5)
= =≠),,(
ji if 1
ji if 0iiii ζηξN (6)
LAGRANGIAN SUPERPOSITION METHOD
Hexahedral local element
In this article the shape functions of the general boundary described element can be obtained by
Lagrangian superposition [6] as shown in figure (3).
5
Figure 3: Superposition for local coordinates
6
Now;
ΨΨΨΨΨΨ ˆˆ),,( −−++= ζηξζηξ (7)
Applied the Lagrange interpolation on the nodes in the ξ direction, it can be obtained:
522
21
312
21
21
339
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξLξ +++=
1121
22
324
21
22
316
22
21
3317
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξL ++++
722
22
3319
22
22
328
22
22
319
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξL ++++
912
)1(
2
)1(
1
)1)(1(
2
)1(
2
)1(
2
)1(ΨΨΨ
−−
−−
−−+
+−−
−−−
=ζηξξζηξξ
ξ
522
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
−+
−−−
+−−
−−+
+ζηξξζηξξ
6172
)1(
2
)1(
2
)1(
2
)1(
2
)1(
1
)1)(1(ΨΨ
+−−+
++
−−
−−+
+ζηξξζηξξ
1142
)1(
2
)1(
1
)1)(1(
2
)1(
2
)1(
2
)1(ΨΨ
−−+
−−+
+−−+−
+ζηξξζηξξ
892
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
++−+
−−++
+ζηξξζηξξ
7192
)1(
2
)1(
2
)1(
2
)1(
2
)1(
1
)1)(1(ΨΨ
++++
+−−
−++
ζηξξζηξξ (8)
Applied the Lagrange interpolation on the nodes in the η direction, it can be shown that:
222
21
314
21
21
3312
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ζLξLηLζLξLηLζLξLηLζLξLηLη +++=
2021
22
325
21
22
319
22
21
3310
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ξLζLηLξLζLηLξLζLηLξLζLηL ++++
722
22
3318
22
22
326
22
22
318
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLξLηLζLξLηLζLξLηLξLζLηL ++++
1212
)1(
1
)1)(1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨΨ
−−
−−+
−−
+−−−−
=ζηηξζηηξ
η
242
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
+−−−
+−−+
−−
+ζηηξζηηξ
9102
)1(
2
)1(
2
)1(
2
)1(
1
)1)(1(
2
)1(ΨΨ
++−−
++
−−+
−−
+ζηηξζηηξ
2052
)1(
1
)1)(1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
−−
−+−
−−
+−−++
+ξηηξξηηζ
682
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
+−−+
++−−
+ζηηξζηηξ
7182
)1(
2
)1(
2
)1(
2
)1(
1
)1)(1(
2
)1(ΨΨ
++++
+−
−+++
ζηηξζηηξ (9)
Applied the Lagrange interpolation on the nodes in the ζ direction, it can be shown that:
222
21
315
21
21
3313
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ξLηLζLηLξLζLηLξLζLηLξLζLζ +++=
1621
22
324
21
22
316
22
21
3314
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ξLηLζLξLηLζLξLηLζLξLηLζL ++++
722
22
3315
22
22
329
22
22
318
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLξLηLξLηLζLξLηLζLξLηLζL ++++
7
1912
)1)(1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨΨ
−−+
−−
−−
+−
−−
−−
=ζζηξζζηξ
ζ
252
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
−−
−−+
+−−
−−+
+ζζηξζηξξ
6142
)1(
2
)1(
2
)1(
1
)1)(1(
2
)1(
2
)1(ΨΨ
+−−+
+−
++−−+
+ζζηξζζηξ
1642
)1(
2
)1(
1
)1)(1(
2
)1(
2
)1(
2
)1(ΨΨ
−−+
−−+
+−+−
+ζηξξζζηξ
982
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
++++
−+−−
+ζζηξζζηξ
7152
)1(
2
)1(
2
)1(
2
)1(
2
)1(
1
)1)(1(ΨΨ
++++
++−
−++
ζζηξζηξξ (10)
Applied Lagrange interpolation on the nodes at corner:
922
21
224
21
21
222
21
21
221
21
21
21 )().().()().().()().().()().().(ˆ ΨΨΨΨΨ ζLξLηLζLξLηLζLηLξLζLξLηL +++=
722
22
228
21
22
226
22
22
215
21
22
21 )().().()().().()().().()().().( ΨΨΨΨ ξLζLηLξLζLηLξLζLηLξLζLηL ++++
212
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ˆ ΨΨΨ−−
−−+
+−−
−−−
=ζηξζηξ
942
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
−−++
+−+
−−
+ζηξζηξ
652
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
+−−+
++
−−
−+
+ζηξζηξ
782
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(ΨΨ
++++
−−++
+ξηξξηζ
(11)
Substitute equations (8), (9), (10) and (11) into equation (7), it can be deduced that:
1]2
)1(
2
)1(
2
)1(2
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1([),,(
Ψ
Ψ
−−−
−−
−−−
−−
−−
+−−−
−−
+−−
−−−
=
ζηξζζηξ
ζηηξζηξξζηξ
+−−
−−+
−−
−−−
++−
−−
+−−
−−+
+
2]2
)1(
2
)1(
2
)1(2
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1(
2
)1( [
Ψζηξζηξξ
ζηηξζηξξ
20]2
)1(
1
)1)(1(
2
)1([ ................ Ψ
+−
−+−−
+ζηηξ
2020332211 ............................. NNNN ΨΨΨΨΨ ++++=
Where
)2)(1)(1)(1)(8/1(1 −−−−−−−= ζηξζηξN
)2)(1)(1)(1)(8/1(2 −−−−−+= ζηξζηξN
……………………………………………..
)1)(1)(1)(4/1( 2
20 ζηξN +−−=
It can be shown that Ni is identical to what was found previously.
8
Hexahedral Intrinsic Element In this paper the shape functions for the hexahedral element with intrinsic coordinates by superposition method is presented, now similar as before figure (4) shows the superposition of the element.
Figure 4: Superposition for intrinsic coordinates
9
The local number of this element can be shown in the table (2):
Table(2)
Local node ξi ηi ζi
1 0 0 0
2 0 1 0
3 1 1 0
4 1 0 0
5 0 0 1
6 0 1 1
7 1 1 1
8 1 0 1
9 0 0.5 0
10 0.5 1 0
11 1 0.5 0
12 0.5 0 0
13 0 0 0.5
14 0 1 0.5
15 1 1 0.5
16 1 0 0.5
17 0 0.5 1
18 0.5 1 1
19 1 0.5 1
20 0.5 0 1
ΨΨΨΨΨΨ ˆˆ),,( −−++= ζηξζηξ (12)
Applied Lagrange interpolation on the nodes in the ξ direction:
522
21
314
21
21
3312
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξLξ +++=
1021
22
322
21
22
318
22
21
3320
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξL ++++
722
22
3318
22
22
326
22
22
313
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLηLξLζLηLξLζLηLξLζLηLξL ++++
+−−−+−−−−= 121 )1)(1)(1(4)1)(1)(1)(5.0(2 ΨΨΨ ζηξξζηξξξ
+−−−+−−− 54 )1)(1)(5.0(2)1)(1)(5.0(2 ΨΨ ζηξξζηξξ
+−−+−− 820 )1)(5.0(2)1)(1(4 ΨΨ ζηξξζηξξ
+−−+−−− 102 )1()1(4)1()5.0)(1(2 ΨΨ ζηξζηξξ
71869 )5.0(2)1(4)1)(5.0(2)1()5.0(2 ΨΨΨΨ ηζξξηζξξηζξξζηξξ −+−+−−+−− (13)
Applied Lagrange interpolation on the nodes in the η direction:
422
21
312
21
21
339
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ξLζLηLζLξLηLζLξLηLζLξLηLη +++=
1721
22
325
21
22
319
22
21
3311
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ξLζLηLξLζLηLξLζLηLξLζLηL ++++
722
22
3319
22
22
328
22
22
316
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLξLηLζLξLηLζLξLηLξLζLηL ++++
10
+−−−+−−−−= 91 )1)(1)(1(4)1)(1)(5.0)(1(2 ΨΨΨ ζηξηζξηηη
+−−−+−−− 42 )1)(1)(5.0(2)1)(1)(5.0(2 ΨΨ ζξηηζξηη
+−−+−− 911 )1)(5.0(2)1)(1(4 ΨΨ ξζηηξζηη
+−−+−−− 175 )1()1(4)1()1)(5.0(2 ΨΨ ξζηηξζηη
71986 )5.0(2)1(4)1)(5.0(2)1()5.0(2 ΨΨΨΨ ξζηηξζηηξζηηζζηη −+−+−−+−− (14)
Applied Lagrange interpolation on the nodes in the ζ direction, it can be shown that:
422
21
315
21
21
3313
21
21
321
21
21
31 )().().()().().()().().()().().( ΨΨΨΨΨ ξLηLζLηLξLζLηLξLζLηLξLζLζ +++=
1421
22
322
21
22
318
22
21
3316
22
21
32 )().().()().().()().().()().().( ΨΨΨΨ ξLηLζLξLηLζLξLηLζLξLηLζL ++++
722
22
3315
22
22
329
22
22
316
22
22
33 )().().()().().()().().()().().( ΨΨΨΨ ζLξLηLξLηLζLξLηLζLξLηLζL ++++
+−−−+−−−−= 131 )1)(1)(1(4)1)(1)(1)(5.0(2 ΨΨΨ ξηζζξηζζζ
+−−−+−−− 45 )1)(1)(5.0(2)1)(1)(5.0(2 ΨΨ ξηζζξηζζ
+−−+−− 816 )1)(5.0(2)1)(1(4 ΨΨ ξηζζξηζζ
+−−+−−− 142 )1()1(4)1()5.0)(1(2 ΨΨ ξηξζξηζζ
71596 )5.0(2)1(4)1)(5.0(2)1()5.0(2 ΨΨΨΨ ηξζζηξζζηξζζξηζζ −+−+−−+−− (15)
Applied Lagrange interpolation on the nodes at corner:
922
21
222
21
21
224
21
21
221
21
21
21 )().().()().().()().().()().().(ˆ ΨΨΨΨΨ ζLξLηLζLξLηLζLηLξLζLξLηL +++=
722
22
226
21
22
228
22
22
215
21
22
21 )().().()().().()().().()().().( ΨΨΨΨ ξLζLηLξLζLηLξLζLηLξLζLηL ++++
+−−+−−−= 41 )1)(1()1)(1)(1(ˆ ΨΨΨ ηζξξηζ
+−+−− 92 )1()1()1( ΨΨ ξξηξηζ
+−+−− 85 )1()1)(1( ΨΨ ξηζξηζ
76)1( ΨΨ ζηξξζη +− (16)
Substitute equations (13), (14), (15) and (16) into equation (12), it can be deduced that:
20
1
])1)(1(4[
..............)]1)(1)(1(2)1)(1)(5.0)(1(2
)1)(1)(5.0)(1(2)1)(1)(1)(5.0(2[),,(
Ψ
ΨΨ
ζηξξ
ζηξηξζζ
ζξηηζηξξζηξ
−−
++−−−−−−−−
+−−−−+−−−−=
2020332211 ............................. NNNN ΨΨΨΨΨ ++++=
Where:
)5.0)(1)(1)(1(21 ζηξζηξN −−−−−−=
)5.0)(1()1(22 −−+−−−= ζηξζηξN
)5.1)(1(23 −−+−= ζηξζξηN
)5.0)(1)(1(24 −−−−−= ζηξζηξN
)5.0()1)(1(25 −+−−−−= ζηξζηξN
)5.1()1(26 −++−−= ζηξηζξN
)5.2(27 −++= ζηξξηζN
)5.1()1(28 −+−−= ζηξζηξN
)1)(1()1(49 ζηηξN −−−=
)1)(1(410 ζξηξN −−=
11
)1)(1(411 ζηξηN −−=
)1)(1)(1(412 ζηξξN −−−=
)1()1)(1(413 ζζηξN −−−=
)1()1(414 ζηξξN −−=
ηζξξN )1(415 −=
ζηξξN )1)(1(416 −−=
ζηηξN )1()1(417 −−=
ηζξξN )1(418 −=
ζηξηN )1(419 −=
ζηξξN )1)(1(420 −−=
And it can be proved that the shape function Ni satisfied the conditions mention in equation(5)
and (6).
TRANSFORMATION MATRIX
A most convenient method of establishing the coordinate transformations is to use the shape
functions.
iiNXNXNXNXNXX =++++= 2020332211 .......................),,( ζηξ
iiNYNYNYNYNYY =++++= 2020332211 .............................),,( ζηξ
iiNZNZNZNZNZZ =++++= 2020332211 ..........................),,( ζηξ
Such transformation is known as "iso-parametric transformation". By the usual rules of partial
differentiation, it can be written:
ξ
Z
Z
N
ξ
Y
Y
N
ξ
X
X
N
ξ
N iiii
∂∂
∂∂
+∂∂
∂∂
+∂∂
∂∂
=∂∂
η
Z
Z
N
η
Y
Y
N
η
X
X
N
η
N iiii
∂∂
∂∂
+∂∂
∂∂
+∂∂
∂∂
=∂∂
ζ
Z
Z
N
ζ
Y
Y
N
ζ
X
X
N
ζ
N iiii
∂∂
∂∂
+∂∂
∂∂
+∂∂
∂∂
=∂∂
In a matrix form:
∂∂∂∂∂∂
=
∂∂∂∂∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
=
∂∂∂∂∂∂
Z
NY
NX
N
J
Z
NY
NX
N
ζ
Z
ζ
Y
ζ
X
η
Z
η
Y
η
Xξ
Z
ξ
Y
ξ
X
ζ
N
η
Nξ
N
i
i
i
i
i
i
i
i
i
][
12
Where
Jacobian matrix [J] =
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
ζ
Z
ζ
Y
ζ
Xη
Z
η
Y
η
Xξ
Z
ξ
Y
ξ
X
Strain Matrix [B] Six strain components are relevant in full three-dimensional analysis
X
uεx ∂
∂= ,
Y
vε y ∂
∂= ,
Z
wεz ∂
∂= ,
X
v
Y
uγxy ∂
∂+
∂∂
= , Y
w
Z
vγyz ∂
∂+
∂∂
= , Z
u
X
wγzx ∂
∂+
∂∂
=
We have
2020332211 ............................. NuNuNuNuu ++++=
2020332211 ................................. NvNvNvNvv ++++=
2020332211 ............................ NwNwNwNww ++++=
Since the strain components will be:
X
Nu
X
Nu
X
Nuεx ∂
∂++
∂∂
+∂∂
= 2020
22
11 ...........................
Y
Nv
Y
Nv
Y
Nvε y ∂
∂++
∂∂
+∂∂
= 2020
22
11 ...........................
Z
Nw
Z
Nw
Z
Nwεz ∂
∂++
∂∂
+∂∂
= 2020
22
11 ...........................
X
Nv
X
Nv
X
Nv
Y
Nu
Y
Nu
Y
Nuγxy ∂
∂++
∂∂
+∂∂
+∂∂
++∂∂
+∂∂
= 2020
22
11
2020
22
11 ..............
Y
Nw
Y
Nw
Y
Nw
Z
Nv
Z
Nv
Z
Nvγyz ∂
∂++
∂∂
+∂∂
+∂∂
++∂∂
+∂∂
= 2020
22
11
2020
22
11 ..............
Z
Nu
Z
Nu
Z
Nu
X
Nw
X
Nw
X
Nwγzx ∂
∂++
∂∂
+∂∂
+∂∂
++∂∂
+∂∂
= 2020
22
11
2020
22
11 ..............
In a matrix form
δBε ][= (17)
Where ε is the strain vector that
`}{ yxyzxyzyx γγγεεεε =
13
∂∂
∂∂
∂∂
∂∂∂∂
∂∂
∂∂
∂∂
∂∂
=
X
N
Z
NY
N
Z
NX
N
Y
NZ
NY
NX
N
B
ii
ii
ii
i
i
i
0
0
0
00
00
00
][
δ is the displacement vector and it takes the following form:
} w vu ........ w vu w v{ 202020222111u=δ
Elasticity Matrix [D] From Hooke's law the stress/ strain relation is
εDσ ][= (18)
Where
`}{ yxyzxyzyx τττσσσσ =
−−
−−
−−
−−
−−
−−
−+−
=
)1(2
)21(00000
0)1(2
)21(0000
00)1(2
)21(000
0001)1()1(
000)1(
1)1(
000)1()1(
1
)21)(1(
)1(][
υ
υ
υ
υυ
υ
υ
υ
υ
υ
υ
υ
υ
υυ
υ
υ
υ
υυ
υED
Where E is the Young modulus of elasticity and υ is the Poisson's ratio.
Stiffness Matrix [K] For many problems of continuum mechanics there are forms of energy balance theorems, which provide variational statement directly. The energy theorem, which is employed in this paper is "the minimum total potential energy theorem". The total potential energy can be expressed as follows [9]:
WUχ −=
Where U is the strain energy stored in the system
14
W is the work done by the external loads. Of all possible displacement states (u,v,w) a body can assume which satisfy compatibility and given kinematic or displacement boundary equilibrium equation makes the total potential energy
assuming a minimum value, i.e., =χ minimum and the variation of 0=δχ
Hence:
σε2
1=U per volume
For increment ∫∫∫= dxdydzεσUt
)(2
1
And
δFWt.=
Where F is the force vector which takes the following form:
}Fz Fy Fx ..................... Fz Fy { 202020111FxF =
Thus:
∫∫∫ −= Fδdxdydzεσχtt
)(2
1 (19)
Substitute equations (17) and (18) into equation (19) it can be deduced that:
( ) FδδBDBδχttt −∫∫∫= dzdy dx ]][[][
2
1
Minimization 0 , =∂∂δ
χχ , it can be shown that FδK =][
Where
∫∫∫= dzdy dx ]][[][][ BDBK t (20)
When modified Gaussian quadratic product rule is adopted, the integration in equation (20) is carried out using the expression [10]:
∫ ∫ ∫=1
0
1
0
1
0
d d d det[J] ),,(][ ζηξζηξfK (21)
Where
]][[][),,( BDBζηξf t=
ζηξdx d d d det[J] dzdy =
Thus equation (21) can be written:
∫ ∫ ∫=1
0
1
0
1
0
d d d ),,(][ ζηξζηξgK
∑ ∑ ∑== = =
NQ
k
NQ
j
NQ
iiiikji ζηξgwwwK
1 1 1
),,( ][
Where NQ is the number of modified Gaussian points, table(3). Table 3: Modified Gaussian points
NQ iii ζηξ ,, wi,wj,wk
2 0.2113249 0.7886751
0.5 0.5
3 0.11270167 0.5
0.88729833
0.27777778 0.44444444 0.27777778
15
COMPUTER PROGRAM The FE- program (FEEL3D) is built in QUIKBASIC language as shown in appendix. The flow chart of the program is illustrated in figure (5).
Figure 5: Flow chart for the program
COMPUTER SOLUTION EXAMPLE The cantilever beam with concentrated load is employed. The physical properties are P=20 kN L= 4 m I = 104 * 106 mm4 E=100 GN/m2
3.0=υ
Figure 6 Finite element mesh for this problem can be shown in figure (6).
Figure 7: FE-mesh for cantilever beam
16
Table (3) shows the deflection of the beam for the two element coordinates (local, intrinsic) and it can be deduced that the results for the intrinsic coordinates element is more efficient than that for local coordinates element and the error for intrinsic coordinates at maximum deflection is much better than that for local intrinsic coordinates.
Length (mm)
Theoretical deflection*
(mm)
Deflection* for intrinsic
coordinates element (mm)
Deflection* for local
coordinates element (mm)
1000 2.08 2.41 2.32
2000 8.97 9.4 9.19
3000 21.63 20.3 19.27
4000 41.02 33.72 31.13
* In the downward direction
The error for local coordinate at maximum deflection = 24.07% The error for intrinsic coordinates at maximum deflection =17.75%
CONCLUSIONS The authors have introduced a general theory for Lagrangian superposition shape functions of hexahedral element (20-node). This theory is simpler than that given in reference [8] and also the authors used their method (superposition) to derive the shape functions for hexahedral element in intrinsic coordinates, i.e., in the interval [0,1] such shape functions have been programmed by the authors in their finite element system the FEEL3D system. The results have been obtained from the intrinsic element were more accurate than for local element. Thus the hexahedral element for intrinsic coordinates is more efficient than that for local coordinates.
REFERENCES
(1) R. J. Melosh, 'Basis for Derivation of Matrices for the Direct Stiffness Method', AIAA
Journal, vol. (1),1631-1637 ,1963.
(2) T. H. Pain, 'Derivation of Element Stiffness Matrices'. AIAA, Journal, vol. (2), pp. 576-
577, 1964.
(3) B. M. Irons, 'Engineering Applications of Numerical Integration in Stiffness Methods',
AIAA, Journal, vol. (4), pp. 2035-2037, 1966.
(4) J. H. Argyris, 'Continua and Discontinua', Proc. Conf. Matrix Method in Struct. Mech.
Airforce Inst. of Tech.,Wrigh Patterson, A.F. Base ,1965.
(5) I. Erqatoudis, B. M. Irons and O. C. Zienkiewicz, 'Curved isoparametric quadrilateral
elements for finite element analysis', Int. J. Solid and Struct., vol. 4, pp. 31-42,1968.
(6) A. EL-Zafrany and R. A. Cookson, 'Derivation of Lagrangian and Hermitian Shape
functions for quadrilateral elements,' Int. J. Num. Meth. Eng., vol.(23), pp. 1939-1958,1986.
(7) E. Hinton and D. R. J. Owen, 'An Introduction to Finite Element Computations',
Pineridge Press, 1981.
(8) O. C. Zienkiewicz, 'The Finite Element Method', Mc Graw-Hill book company limited,
17
1977
(9) S. S. Rao, 'The Finite Element Method in Engineering', 2nd Edition Pergamon Press,
1989.
(10) A. H. Stroud and Don Secrest, 'Gaussian Quadrature Formulas', Prentice- Hall,
Englewood Cliffs, N. J. , 1966.
(11) P. A. F. Martins and M. J. M. Barata Marques, 'Model 3-A three Dimensional mesh
generator', Computers and Structures, vol. (42), No. (4), pp. 511-529, 1992.
Appendix
In this appendix a list of the FEEL3D program is presented and the mesh for the FEEL3D can be
made by using Reference [11], if the complex problems existed.
DECLARE SUB XJA() DECLARE SUB JINVERS() DECLARE SUB MATV (M!, N!, A!(), B!(), C(()! DECLARE SUB REACTION() DECLARE SUB CARTD() DECLARE SUB JACOB() DECLARE SUB INTRD() DECLARE SUB MATI (N!, A!(), ND(! DECLARE SUB DMATRIX() DECLARE SUB BMATRIX() DECLARE SUB MATM (M!, N!, L!, A!(), B!(), C(()! DECLARE SUB MATT (M!, N!, A!(), AT(()! DECLARE SUB ESMG() DECLARE SUB REDUCER() DECLARE SUB SOLVER() DECLARE SUB MATS (N!, A!(), B!(), DV!, ND(! DECLARE SUB LOCAD() DECLARE SUB DATIn() DECLARE SUB ASSEMBLY() DECLARE SUB DISPLACEMENT() DECLARE SUB STRESS() DECLARE SUB LOCACO() DECLARE SUB INTRCO()
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'PROGRAM FINITE ELEMENT METHOD FOR 'THREE DIMENSIONAL ELASTICITY 'PROBLEMS (FEEL3D.BAS)
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BY:
ASST. PROF. DR. HANI AZIZ AMEEN TECHNICAL COOLEGE – BAGHDAD – IRAQ. NOV. 2010
'========================================================================= 'MAIN PROGRAM
'========================================================================= DIM SHARED E, P, IDOF, ITY, NN, NEL, NT, NR, DETJ DIM SHARED XI, ETA, ZITA CLS INPUT "NAME OF DATA FILE"; A$ INPUT "NAME OF DISPLACEMENT FILE"; DISP$
18
INPUT "NAME OF REACTION FILE"; REAC$ INPUT "NAME OF STRESS FILE"; STRS$ OPEN A$ FOR INPUT AS #1 OPEN DISP$ FOR OUTPUT AS #2 ' DISPLACEMENT OPEN REAC$ FOR OUTPUT AS #3 ' REACTION OPEN STRS$ FOR OUTPUT AS #4 ' STRESS INPUT #1, NN, NEL, IDOF NT = NN * IDOF $'DYNAMIC DIM SHARED SKE(60, 60), SKG(NT, NT), FG(NT), RG(NT), DG(NT) DIM SHARED XG(NN), YG(NN), ZG(NN) DIM SHARED ITA(NEL, 20) DIM SHARED ISW(NT), PDIS(NT( DIM SHARED XE(20), YE(20), ZE(20), DE(60) DIM SHARED DSFX(20), DSFY(20), DSFZ(20( DIM SHARED DSFXI(20), DSFETA(20), DSFZITA(20) DIM SHARED XJINV(3, 3), XJ(3, 6) DIM SHARED B(6, 60), D(6, 6), DB(6, 60), BT(60, 6), BTDB(60, 60) DIM SHARED WQ(3), XQ(3) DIM SHARED XXI(20), EETA(20), ZZITA(20) DIM SHARED S(6), EE(6), SP(6), EP(3), NC(NN), EN(NN, 6), SN(NN, 6) DATIn DIM SHARED SKR(NR, NR), FR(NR), DR(NR) ASSEMBLY REDUCER SOLVER DISPLACEMENT REACTION STRESS SCREEN 1 PRINT "FINSHED WITH HELP OF GOD" END REM $STATIC SUB ASSEMBLY ========================================================================' 'ASSEMBLY OF EQUATION FOR THE WHOLE DOMAIN
'========================================================================= FOR IE = 1 TO NEL FOR I = 1 TO 20 XE(I) = XG(ITA(IE, I)) YE(I) = YG(ITA(IE, I)) ZE(I) = ZG(ITA(IE, I)) NEXT I CALL ESMG FOR I = 1 TO 20 FOR IR = 1 TO IDOF IL = (I - 1) * IDOF + IR IG = (ITA(IE, I) - 1) * IDOF + IR FOR J = 1 TO 20 FOR S = 1 TO IDOF JL = (J - 1) * IDOF + S JG = (ITA(IE, J) - 1) * IDOF + S SKG(IG, JG) = SKG(IG, JG) + SKE(IL, JL) NEXT S, J, IR, I NEXT IE END SUB SUB BMATRIX
'========================================================================= 'B MATRIX GENERATOR SUBROUTINE
'========================================================================= CALL CARTD
19
K = 0 FOR I = 1 TO 20 IB1 = (2 * I) - 1 + K IB2 = (2 * I) + K IB3 = (2 * I) + 1 + K B(1, IB1) = DSFX(I) B(1, IB2) = 0! B(1, IB3) = 0! B(2, IB1) = 0! B(2, IB2) = DSFY(I) B(2, IB3) = 0! B(3, IB1) = 0! B(3, IB2) = 0! B(3, IB3) = DSFZ(I) B(4, IB1) = DSFY(I) B(4, IB2) = DSFX(I) B(4, IB3) = 0! B(5, IB1) = 0! B(5, IB2) = DSFZ(I) B(5, IB3) = DSFY(I) B(6, IB1) = DSFZ(I) B(6, IB2) = 0! B(6, IB3) = DSFX(I) K = K + 1 NEXT I END SUB SUB CARTD
'========================================================================= 'CARTESIAN DERIVATIVES SUBROUTINE
'======================================================================== CALL JACOB FOR I = 1 TO 20 DSFX(I) = XJINV(1, 1) * DSFXI(I) + XJINV(1, 2) * DSFETA(I) + XJINV(1, 3) * DSFZITA(I) DSFY(I) = XJINV(2, 1) * DSFXI(I) + XJINV(2, 2) * DSFETA(I) + XJINV(2, 3) * DSFZITA(I) DSFZ(I) = XJINV(3, 1) * DSFXI(I) + XJINV(3, 2) * DSFETA(I) + XJINV(3, 3) * DSFZITA(I) NEXT I END SUB SUB DATIn
'-------------------------------------------------------------- 'READ MATERIAL DATA
'-------------------------------------------------------------- INPUT #1, E, P, ITY
'-------------------------------------------------------------- 'READ MESH DATA
'-------------------------------------------------------------- FOR II = 1 TO NN INPUT #1, I, XG(I), YG(I), ZG(I) NEXT II FOR II = 1 TO NEL INPUT #1, IE FOR I = 1 TO 20 INPUT #1, ITA(IE, I) NEXT I NEXT II
'---------------------------------------------------------------- 'READ BOUNDARY CONDITION DATA
'---------------------------------------------------------------- INPUT #1, NRN FOR I = 1 TO NRN INPUT #1, IG
20
FOR L = 1 TO IDOF INPUT #1, ISW(IDOF * (IG - 1) + L), PDIS(IDOF * (IG - 1) + L) NEXT L NEXT I NT = NN * IDOF NR = NT FOR I = 1 TO NT IF ISW(I) <> 0 THEN NR = NR - 1 NEXT I
'-------------------------------------------------------------- 'READ LOADING DATA
'--------------------------------------------------------------- INPUT #1, NLN FOR I = 1 TO NLN INPUT #1, IG FOR IR = 1 TO IDOF INPUT #1, FG(IDOF * (IG - 1) + IR) NEXT IR NEXT I
'---------------------------------------------------------------- CLOSE #1 END SUB SUB DISPLACEMENT
'========================================================================= 'NODAL DISPLACEMENT SUBROUTINE
'========================================================================= PRINT #2, "DISPLACEMENT" IG = 0 IR = IG FOR I = 1 TO NN FOR LR = 1 TO IDOF IG = IG + 1 IF ISW(IG) = 1 THEN GOTO 10 IR = IR + 1 DG(IG) = DR(IR) GOTO 50 10 DG(IG) = PDIS(IG) 50 NEXT LR PRINT #2, I, XG(I), YG(I), ZG(I) FOR LR = 1 TO IDOF PRINT #2, DG(IDOF * (I - 1) + LR) NEXT LR NEXT I CLOSE #2 END SUB SUB DMATRIX
'======================================================================= ' D MATRIX SUBROUTINE
'======================================================================= FOR I = 1 TO 6 FOR J = 1 TO 6 D(I, J) = 0! NEXT J, I Q = (E * (1 - P)) / ((1 + P) * (1 - 2 * P)) Q1 = P / (1 – P) Q2 = (1 - 2 * P) / (2 * (1 – P)) D(1, 1) = Q D(1, 2) = Q * Q1 D(1, 3) = Q * Q1 D(2, 1) = Q * Q1
21
D(2, 2) = Q D(2, 3) = Q * Q1 D(3, 1) = Q * Q1 D(3, 2) = Q * Q1 D(3, 3) = Q D(4, 4) = Q * Q2 D(5, 5) = Q * Q2 D(6, 6) = Q * Q2 END SUB SUB ESMG
'========================================================================= 'ELEMENT STIFFNESS MATRIX GENERATED
'========================================================================= NQ = 3 IF ITY = 2 THEN XQ(1) = -.774596669#: XQ(2) = 0: XQ(3) = .774596669# WQ(1) = .555555555#: WQ(2) = .888888888#: WQ(3) = .555555555# ELSE WQ(1) = .27777778#: WQ(2) = .444444: WQ(3) = .27777778# XQ(1) = .11270167#: XQ(2) = .5: XQ(3) = .88729833# END IF NTE = IDOF * 20 CALL MATI(NTE, SKE(), NTE() CALL DMATRIX FOR S = 1 TO NQ FOR IR = 1 TO NQ FOR L = 1 TO NQ WT = WQ(S) * WQ(IR) * WQ(L) XI = XQ(L) ETA = XQ(IR) ZITA = XQ(S) CALL BMATRIX DV = WT * DETJ CALL MATM(6, 6, NTE, D(), B(), DB(() CALL MATT(6, NTE, B(), BT(() CALL MATM(NTE, 6, NTE, BT(), DB(), BTDB(() CALL MATS(NTE, BTDB(), SKE(), DV, 60) NEXT L NEXT IR NEXT S END SUB SUB INTRCO
'========================================================================= 'INTRINSIC COORDINATE OF ELEMENT NODES
'========================================================================= XXI(1) = 0! XXI(2) = 0! XXI(3) = 1! XXI(4) = 1! XXI(5) = 0! XXI(6) = 0! XXI(7) = 1! XXI(8) = 1! XXI(9) = 0! XXI(10) = .5 XXI(11) = 1! XXI(12) = .5 XXI(13) = 0! XXI(14) = 0! XXI(15) = 1!
22
XXI(16) = 1! XXI(17) = 0! XXI(18) = .5 XXI(19) = 1! XXI(20) = .5 EETA(1) = 0! EETA(2) = 1! EETA(3) = 1! EETA(4) = 0! EETA(5) = 0! EETA(6) = 1! EETA(7) = 1! EETA(8) = 0! EETA(9) = .5 EETA(10) = 1! EETA(11) = .5 EETA(12) = 0! EETA(13) = 0! EETA(14) = 1! EETA(15) = 1! EETA(16) = 0! EETA(17) = .5 EETA(18) = 1! EETA(19) = .5 EETA(20) = 0! ZZITA(1) = 0! ZZITA(2) = 0! ZZITA(3) = 0! ZZITA(4) = 0! ZZITA(5) = 1! ZZITA(6) = 1! ZZITA(7) = 1! ZZITA(8) = 1! ZZITA(9) = 0! ZZITA(10) = 0! ZZITA(11) = 0! ZZITA(12) = 0! ZZITA(13) = .5 ZZITA(14) = .5 ZZITA(15) = .5 ZZITA(16) = .5 ZZITA(17) = 1! ZZITA(18) = 1! ZZITA(19) = 1! ZZITA(20) = 1! END SUB SUB INTRD
'========================================================================== 'INTRINSIC DERIVATIVE SUBROUTINE
'========================================================================== DSFXI(1) = 2 * (1 - ETA) * (1 - ZITA) * (-1.5 + 2 * XI + ETA + ZITA) DSFXI(2) = 2 * ETA * (1 - ZITA) * (-.5 + 2 * XI - ETA + ZITA) DSFXI(3) = 2 * ETA * (1 - ZITA) * (-1.5 + 2 * XI + ETA – ZITA) DSFXI(4) = 2 * (1 - ETA) * (1 - ZITA) * (2 * XI - ETA - ZITA - .5) DSFXI(5) = 2 * (1 - ETA) * ZITA * (-.5 + 2 * XI + ETA – ZITA) DSFXI(6) = 2 * ETA * ZITA * (.5 + 2 * XI - ETA – ZITA) DSFXI(7) = 2 * ETA * ZITA * (2 * XI + ETA + ZITA - 2.5) DSFXI(8) = 2 * (1 - ETA) * ZITA * (2 * XI - ETA + ZITA - 1.5) DSFXI(9) = -4 * ETA * (1 - ETA) * (1 – ZITA) DSFXI(10) = 4 * ETA * (1 - ZITA) * (1 - 2 * XI) DSFXI(11) = 4 * ETA * (1 - ETA) * (1 - ZITA(
23
DSFXI(12) = 4 * (1 - ETA) * (1 - ZITA) * (1 - 2 * XI) DSFXI(13) = -4 * (1 - ETA) * ZITA * (1 – ZITA) DSFXI(14) = -4 * ETA * ZITA * (1 – ZITA) DSFXI(15) = 4 * ETA * ZITA * (1 – ZITA) DSFXI(16) = 4 * (1 - ETA) * ZITA * (1 – ZITA) DSFXI(17) = -4 * ETA * (1 - ETA) * ZITA DSFXI(18) = 4 * ETA * ZITA * (1 - 2 * XI) DSFXI(19) = 4 * ETA * ZITA * (1 – ETA) DSFXI(20) = 4 * (1 - ETA) * ZITA * (1 - 2 * XI) DSFETA(1) = 2 * (1 - XI) * (1 - ZITA) * (-1.5 + XI + 2 * ETA + ZITA) DSFETA(2) = 2 * (1 - XI) * (1 - ZITA) * (-XI + 2 * ETA - ZITA - .5) DSFETA(3) = 2 * XI * (1 - ZITA) * (-1.5 + XI + 2 * ETA – ZITA) DSFETA(4) = 2 * XI * (1 - ZITA) * (-.5 - XI + 2 * ETA + ZITA) DSFETA(5) = 2 * (1 - XI) * ZITA * (-.5 + XI + 2 * ETA – ZITA) DSFETA(6) = 2 * (1 - XI) * ZITA * (-XI + 2 * ETA + ZITA - 1.5) DSFETA(7) = 2 * XI * ZITA * (XI + 2 * ETA + ZITA - 2.5) DSFETA(8) = 2 * XI * ZITA * (.5 - XI + 2 * ETA – ZITA) DSFETA(9) = 4 * (1 - XI) * (1 - ZITA) * (1 - 2 * ETA) DSFETA(10) = 4 * (1 - ZITA) * XI * (1 – XI) DSFETA(11) = 4 * XI * (1 - ZITA) * (1 - 2 * ETA) DSFETA(12) = -4 * XI * (1 - XI) * (1 – ZITA) DSFETA(13) = -4 * (1 - XI) * ZITA * (1 – ZITA) DSFETA(14) = 4 * (1 - XI) * ZITA * (1 – ZITA) DSFETA(15) = 4 * XI * ZITA * (1 – ZITA) DSFETA(16) = -4 * XI * ZITA * (1 – ZITA) DSFETA(17) = 4 * (1 - XI) * ZITA * (1 - 2 * ETA) DSFETA(18) = 4 * XI * (1 - XI) * ZITA DSFETA(19) = 4 * XI * ZITA * (1 - 2 * ETA) DSFETA(20) = -4 * XI * (1 - XI) * ZITA DSFZITA(1) = 2 * (1 - XI) * (1 - ETA) * (-1.5 + XI + ETA + 2 * ZITA) DSFZITA(2) = 2 * ETA * (1 - XI) * (-.5 + XI - ETA + 2 * ZITA) DSFZITA(3) = 2 * ETA * XI * (.5 - XI - ETA + 2 * ZITA) DSFZITA(4) = 2 * XI * (1 - ETA) * (-.5 - XI + ETA + 2 * ZITA) DSFZITA(5) = 2 * (1 - ETA) * (1 - XI) * (-.5 - XI - ETA + 2 * ZITA) DSFZITA(6) = 2 * ETA * (1 - XI) * (-1.5 - XI + ETA + 2 * ZITA) DSFZITA(7) = 2 * ETA * XI * (-2.5 + XI + ETA + 2 * ZITA) DSFZITA(8) = 2 * (1 - ETA) * XI * (-1.5 + XI - ETA + 2 * ZITA) DSFZITA(9) = -4 * (1 - ETA) * ETA * (1 – XI) DSFZITA(10) = -4 * XI * ETA * (1 – XI) DSFZITA(11) = -4 * XI * ETA * (1 – ETA) DSFZITA(12) = -4 * XI * (1 - ETA) * (1 – XI) DSFZITA(13) = 4 * (1 - ETA) * (1 - XI) * (1 - 2 * ZITA) DSFZITA(14) = 4 * ETA * (1 - XI) * (1 - 2 * ZITA) DSFZITA(15) = 4 * XI * ETA * (1 - 2 * ZITA) DSFZITA(16) = 4 * XI * (1 - ETA) * (1 - 2 * ZITA) DSFZITA(17) = 4 * (1 - ETA) * (1 - XI) * ETA DSFZITA(18) = 4 * XI * ETA * (1 – XI) DSFZITA(19) = 4 * XI * ETA * (1 – ETA) DSFZITA(20) = 4 * XI * (1 - ETA) * (1 – XI) END SUB SUB JACOB
'========================================================================= 'JACOBIAN MATRIX SUBROUTINE
'========================================================================== IF ITY = 2 THEN CALL LOCAD ELSE CALL INTRD END IF CALL JINVERS CALL XJA
24
'--------------------------------------------- 'JACOBIAN DETERMINATE
'--------------------------------------------- N = 3 FOR K = 1 TO N - 1 FOR I = K + 1 TO N A = XJ(I, K) / XJ(K, K) FOR J = K TO N XJ(I, J) = XJ(I, J) - XJ(K, J) * A NEXT J NEXT I NEXT K C = 1! FOR I = 1 TO N C = C * XJ(I, I) NEXT I DETJ = ABS(C) END SUB SUB JINVERS
'------------------------------------------------- 'JACOBIAN INVERSE
'-------------------------------------------------- CALL XJA N = 3 N1 = N + 1 N2 = N * 2 FOR I = 1 TO N FOR J = N1 TO N2 XJ(I, J) = 0! IF I <> (J - N) THEN GOTO 20 XJ(I, J) = 1! 20 NEXT J NEXT I FOR K = 1 TO N A = XJ(K, K( FOR J = 1 TO N2 XJ(K, J) = XJ(K, J) / A NEXT J FOR I = 1 TO N IF I = K THEN GOTO 150 A = XJ(I, K( FOR J = 1 TO N2 XJ(I, J) = XJ(I, J) - A * XJ(K, J) NEXT J 150 NEXT I NEXT K KK = 0 FOR I = 1 TO N FOR J = N1 TO N2 KK = KK + 1 XJINV(I, KK) = XJ(I, J) NEXT J KK = 0 NEXT I END SUB SUB LOCACO
'======================================================================== 'LOCAL COORDINATE OF ELEMENT NODES
'=========================================================================
25
XXI(1) = -1! XXI(2) = 1! XXI(3) = 1! XXI(4) = -1! XXI(5) = -1! XXI(6) = 1! XXI(7) = 1! XXI(8) = -1! XXI(9) = 0! XXI(10) = 1! XXI(11) = 0! XXI(12) = -1! XXI(13) = -1! XXI(14) = 1! XXI(15) = 1! XXI(16) = -1! XXI(17) = 0! XXI(18) = 1! XXI(19) = 0! XXI(20) = -1! EETA(1) = -1! EETA(2) = -1! EETA(3) = 1! EETA(4) = 1! EETA(5) = -1! EETA(6) = -1! EETA(7) = 1! EETA(8) = 1! EETA(9) = -1! EETA(10) = 0! EETA(11) = 1! EETA(12) = 0! EETA(13) = -1! EETA(14) = -1! EETA(15) = 1! EETA(16) = 1! EETA(17) = -1! EETA(18) = 0! EETA(19) = 1! EETA(20) = 0! ZZITA(1) = -1! ZZITA(2) = -1! ZZITA(3) = -1! ZZITA(4) = -1! ZZITA(5) = 1! ZZITA(6) = 1! ZZITA(7) = 1! ZZITA(8) = 1! ZZITA(9) = -1! ZZITA(10) = -1! ZZITA(11) = -1! ZZITA(12) = -1! ZZITA(13) = 0! ZZITA(14) = 0! ZZITA(15) = 0! ZZITA(16) = 0! ZZITA(17) = 1! ZZITA(18) = 1! ZZITA(19) = 1! ZZITA(20) = 1! END SUB
26
SUB LOCAD '=========================================================================
'LOCAL DERIVATIVE SUBROUTINE '=========================================================================
DSFXI(1) = .125 * (1 - ETA) * (1 - ZITA) * (1 + 2 * XI + ETA + ZITA) DSFXI(2) = .125 * (1 - ETA) * (1 - ZITA) * (-1 + 2 * XI - ETA – ZITA) DSFXI(3) = .125 * (1 + ETA) * (1 - ZITA) * (-1 + 2 * XI + ETA – ZITA) DSFXI(4) = .125 * (1 + ETA) * (1 - ZITA) * (1 + 2 * XI - ETA + ZITA) DSFXI(5) = .125 * (1 - ETA) * (1 + ZITA) * (1 + 2 * XI + ETA – ZITA) DSFXI(6) = .125 * (1 - ETA) * (1 + ZITA) * (-1 + 2 * XI - ETA + ZITA) DSFXI(7) = .125 * (1 + ETA) * (1 + ZITA) * (-1 + 2 * XI + ETA + ZITA) DSFXI(8) = .125 * (1 + ETA) * (1 + ZITA) * (1 + 2 * XI - ETA – ZITA) DSFXI(9) = -.5 * XI * (1 - ETA) * (1 – ZITA) DSFXI(10) = .25 * (1 - ETA ^ 2) * (1 – ZITA) DSFXI(11) = -.5 * XI * (1 + ETA) * (1 – ZITA) DSFXI(12) = -.25 * (1 - ETA ^ 2) * (1 – ZITA) DSFXI(13) = -.25 * (1 - ETA) * (1 - ZITA ^ 2) DSFXI(14) = .25 * (1 - ETA) * (1 - ZITA ^ 2) DSFXI(15) = .25 * (1 + ETA) * (1 - ZITA ^ 2) DSFXI(16) = -.25 * (1 + ETA) * (1 - ZITA ^ 2) DSFXI(17) = -.5 * XI * (1 - ETA) * (1 + ZITA) DSFXI(18) = .25 * (1 - ETA ^ 2) * (1 + ZITA) DSFXI(19) = -.5 * XI * (1 + ETA) * (1 + ZITA) DSFXI(20) = -.25 * (1 - ETA ^ 2) * (1 + ZITA) DSFETA(1) = .125 * (1 - XI) * (1 - ZITA) * (1 + XI + 2 * ETA + ZITA) DSFETA(2) = .125 * (1 + XI) * (1 - ZITA) * (1 - XI + 2 * ETA + ZITA) DSFETA(3) = .125 * (1 + XI) * (1 - ZITA) * (-1 + XI + 2 * ETA – ZITA) DSFETA(4) = .125 * (1 - XI) * (1 - ZITA) * (-1 - XI + 2 * ETA – ZITA) DSFETA(5) = .125 * (1 - XI) * (1 + ZITA) * (1 + XI + 2 * ETA – ZITA) DSFETA(6) = .125 * (1 + XI) * (1 + ZITA) * (1 - XI + 2 * ETA – ZITA) DSFETA(7) = .125 * (1 + XI) * (1 + ZITA) * (-1 + XI + 2 * ETA + ZITA) DSFETA(8) = .125 * (1 - XI) * (1 + ZITA) * (-1 - XI + 2 * ETA + ZITA) DSFETA(9) = -.25 * (1 - XI ^ 2) * (1 – ZITA) DSFETA(10) = -.5 * ETA * (1 - ZITA) * (1 + XI) DSFETA(11) = .25 * (1 - XI ^ 2) * (1 – ZITA) DSFETA(12) = -.5 * ETA * (1 - XI) * (1 – ZITA) DSFETA(13) = -.25 * (1 - XI) * (1 - ZITA ^ 2) DSFETA(14) = -.25 * (1 + XI) * (1 - ZITA ^ 2) DSFETA(15) = .25 * (1 + XI) * (1 - ZITA ^ 2) DSFETA(16) = .25 * (1 - XI) * (1 - ZITA ^ 2) DSFETA(17) = -.25 * (1 - XI ^ 2) * (1 + ZITA) DSFETA(18) = -.5 * ETA * (1 + XI) * (1 + ZITA) DSFETA(19) = .25 * (1 - XI ^ 2) * (1 + ZITA) DSFETA(20) = -.5 * ETA * (1 - XI) * (1 + ZITA) DSFZITA(1) = .125 * (1 - XI) * (1 - ETA) * (1 + XI + ETA + 2 * ZITA) DSFZITA(2) = .125 * (1 - ETA) * (1 + XI) * (1 - XI + ETA + 2 * ZITA) DSFZITA(3) = .125 * (1 + ETA) * (1 + XI) * (1 - XI - ETA + 2 * ZITA) DSFZITA(4) = .125 * (1 + ETA) * (1 - XI) * (1 + XI - ETA + 2 * ZITA) DSFZITA(5) = .125 * (1 - ETA) * (1 - XI) * (-1 - XI - ETA + 2 * ZITA) DSFZITA(6) = .125 * (1 - ETA) * (1 + XI) * (-1 + XI - ETA + 2 * ZITA) DSFZITA(7) = .125 * (1 + ETA) * (1 + XI) * (-1 + XI + ETA + 2 * ZITA) DSFZITA(8) = .125 * (1 + ETA) * (1 - XI) * (-1 - XI + ETA + 2 * ZITA) DSFZITA(9) = -.25 * (1 - ETA) * (1 - XI ^ 2) DSFZITA(10) = -.25 * (1 - ETA ^ 2) * (1 + XI) DSFZITA(11) = -.25 * (1 + ETA) * (1 - XI ^ 2) DSFZITA(12) = -.25 * (1 - ETA ^ 2) * (1 – XI) DSFZITA(13) = -.5 * ZITA * (1 - ETA) * (1 – XI) DSFZITA(14) = -.5 * ZITA * (1 - ETA) * (1 + XI) DSFZITA(15) = -.5 * ZITA * (1 + ETA) * (1 + XI) DSFZITA(16) = -.5 * ZITA * (1 + ETA) * (1 - XI) DSFZITA(17) = .25 * (1 - ETA) * (1 - XI ^ 2) DSFZITA(18) = .25 * (1 - ETA ^ 2) * (1 + XI)
27
DSFZITA(19) = .25 * (1 + ETA) * (1 - XI ^ 2) DSFZITA(20) = .25 * (1 - ETA ^ 2) * (1 – XI) END SUB SUB MATI (N, A(), ND)
'========================================================================= 'INITIAT SUBROUTINE
'======================================================================== FOR I = 1 TO N FOR J = 1 TO N A(I, J) = 0! NEXT J, I END SUB SUB MATM (M, N, L, A(), B(), C(()
'========================================================================= 'MULTIPLIER SUBROUTINE
'========================================================================= FOR I = 1 TO M FOR K = 1 TO L C(I, K) = 0 FOR J = 1 TO N C(I, K) = C(I, K) + A(I, J) * B(J, K) NEXT J, K, I END SUB SUB MATS (N, A(), B(), DV, ND)
'========================================================================= 'ADDER SUBROUTINE
'========================================================================= FOR I = 1 TO N FOR J = 1 TO N B(I, J) = B(I, J) + DV * A(I, J( NEXT J, I END SUB SUB MATT (M, N, A(), AT(()
'========================================================================= 'TRANSPOSES SUBROUTINE
'========================================================================== FOR I = 1 TO M FOR J = 1 TO N AT(J, I) = A(I, J) NEXT J, I END SUB SUB MATV (M, N, A(), B(), C(()
'========================================================================== 'MULTIPLIER MATRIX BY VECTOR SUBROUTINE
'========================================================================== FOR I = 1 TO M C(I) = 0! FOR J = 1 TO N C(I) = C(I) + A(I, J) * B(J) NEXT J, I END SUB SUB REACTION
'========================================================================= 'REACTION SUBROUTINE
'========================================================================= PRINT #3, "REACTIONS"
28
IG = 0 FOR I = 1 TO NN FOR NR = 1 TO IDOF IG = IG + 1 RG(IG) = -FG(IG( FOR JG = 1 TO NT RG(IG) = RG(IG) + SKG(IG, JG) * DG(JG) NEXT JG, NR PRINT #3, I, XG(I), YG(I), ZG(I) FOR L = 1 TO IDOF PRINT #3, FG(IDOF * (I - 1) + L), RG(IDOF * (I - 1) + L) NEXT L NEXT I CLOSE #3 END SUB SUB REDUCER
'======================================================================== 'APPLICATION OF BOUNDARY CONDITION REDUCES OF EQUA.
'======================================================================== IR = 0 FOR I = 1 TO NT IF ISW(I) = 1 THEN 100 IR = IR + 1 FR(IR) = FG(I) JR = 0 FOR J = 1 TO NT IF ISW(J) = 1 THEN 110 JR = JR + 1 SKR(IR, JR) = SKG(I, J) GOTO 90 110 FR(IR) = FR(IR) - SKG(I, J) * PDIS(J) 90 NEXT J 100 NEXT I END SUB SUB SOLVER
'========================================================================= 'EQUATION SOLVER SUBROUTINE
'========================================================================= FOR K = 1 TO NR - 1 IF ABS(SKR(K, K)) = 0 THEN GOTO 1 FOR I = K + 1 TO NR Q = SKR(I, K) / SKR(K, K) FR(I) = FR(I) - Q * FR(K) FOR J = K + 1 TO NR SKR(I, J) = SKR(I, J) - Q * SKR(K, J) NEXT J, I, K FOR I = NR TO 1 STEP -1 SUM = FR(I) FOR J = I + 1 TO NR SUM = SUM - SKR(I, J) * DR(J) NEXT J DR(I) = SUM / SKR(I, I) NEXT I GOTO 60 1 PRINT "GAUSS FAILES" STOP 60 END SUB SUB STRESS
'=========================================================================
29
' STRESS AND STRAIN SUBROUTINE '========================================================================= DEG = 45! /
ATN(1(! FOR I = 1 TO NN NC(I) = 0 FOR J = 1 TO 6 EN(I, J) = 0! NEXT J, I FOR IE = 1 TO NEL FOR I = 1 TO 20 IG = ITA(IE, I) XE(I) = XG(IG) YE(I) = YG(IG) ZE(I) = ZG(IG) FOR LR = 1 TO IDOF DE(IDOF * (I - 1) + LR) = DG(IDOF * (IG - 1) + LR) NEXT LR, I CALL DMATRIX IF ITY = 2 THEN CALL LOCACO ELSE CALL INTRCO END IF FOR I = 1 TO 20 IG = ITA(IE, I) NC(IG) = NC(IG) + 1 XI = XXI(I) ETA = EETA(I) ZITA = ZZITA(I) CALL BMATRIX CALL MATV(6, 20 * IDOF, B(), DE(), EE(() CALL MATV(6, 6, D(), EE(), S(() FOR J = 1 TO 6 SN(IG, J) = SN(IG, J) + S(J) EN(IG, J) = EN(IG, J) + EE(J) NEXT J, I NEXT IE PRINT #4, "STRESS HEADING" FOR I = 1 TO NN FOR J = 1 TO 6 S(J) = SN(I, J) / NC(I) SN(I, J) = S(J( NEXT J Q1 = (S(1) + S(2)) / 2 Q2 = (S(1) - S(2)) / 2 Q3 = SQR(Q2 * Q2 + S(3) ^ 2) SP(1) = Q1 + Q3 SP(2) = Q1 - Q3 SP(3) = Q3 THETA = ATN(-S(3) / Q2) * DEG PRINT #4, I, XG(I), YG(I), ZG(I), S(1), S(2), S(3), S(4), S(5), S(6), SP(1), SP(2), SP(3), THETA NEXT I PRINT #4, "STRAIN HEADING" FOR I = 1 TO NN FOR J = 1 TO 6 EE(J) = EN(I, J) / NC(I) EN(I, J) = EE(J( NEXT J Q1 = (EE(1) + EE(2)) / 2 Q2 = (EE(1) - EE(2)) / 2 Q3 = SQR(Q2 * Q2 + EE(3) ^ 2 / 4) EP(1) = Q1 + Q3
30
EP(2) = Q1 - Q3 EP(3) = 2 * Q3 THETA = ATN(-EE(3) / Q2 / 2) * DEG PRINT #4, I, XG(I), YG(I), ZG(I), EE(1), EE(2), EE(3), EE(4), EE(5), EE(6), EP(1), EP(2), EP(3), THETA NEXT I CLOSE #4 END SUB SUB XJA CALL MATI(3, XJ(), 3) FOR I = 1 TO 20 XJ(1, 1) = XJ(1, 1) + XE(I) * DSFXI(I) XJ(1, 2) = XJ(1, 2) + YE(I) * DSFXI(I) XJ(1, 3) = XJ(1, 3) + ZE(I) * DSFXI(I) XJ(2, 1) = XJ(2, 1) + XE(I) * DSFETA(I) XJ(2, 2) = XJ(2, 2) + YE(I) * DSFETA(I) XJ(2, 3) = XJ(2, 3) + ZE(I) * DSFETA(I) XJ(3, 1) = XJ(3, 1) + XE(I) * DSFZITA(I) XJ(3, 2) = XJ(3, 2) + YE(I) * DSFZITA(I) XJ(3, 3) = XJ(3, 3) + ZE(I) * DSFZITA(I) NEXT I END SUB