1d-fem in fortran: steady state heat conductionnkl.cc.u-tokyo.ac.jp/13e/02-fem/fem1d-f.pdf1d-fem in...
TRANSCRIPT
![Page 1: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/1.jpg)
1D-FEM in Fortran: Steady State Heat Conduction
Kengo NakajimaInformation Technology Center
Programming for Parallel Computing (616-2057) Seminar on Advanced Computing (616-4009)
![Page 2: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/2.jpg)
FEM1D 2
• 1D-code for Static Linear-Elastic Problems by Galerkin FEM
• Sparse Linear Solver– Conjugate Gradient Method– Preconditioning
• Storage of Sparse Matrices
• Program
![Page 3: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/3.jpg)
FEM1D 3
Keywords
• 1D Steady State Heat Conduction Problems• Galerkin Method• Linear Element• Preconditioned Conjugate Gradient Method
![Page 4: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/4.jpg)
FEM1D 4
1D Steady State Heat Conduction
x=0 (xmin) x= xmax
Qheat generation/volume0
Q
xT
x
• Uniform: Sectional Area: A, Thermal Conductivity: • Heat Generation Rate/Volume/Time [QL-3T-1]• Boundary Conditions
– x=0 : T= 0 (Fixed Temperature)
– x=xmax: (Insulated)0
xT
Q
![Page 5: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/5.jpg)
FEM1D 5
1D Steady State Heat Conduction
x=0 (xmin) x= xmax
Q
0
xT
heat generation/volume0
Q
xT
x
Q
• Uniform: Sectional Area: A, Thermal Conductivity: • Heat Generation Rate/Volume/Time [QL-3T-1]• Boundary Conditions
– x=0 : T= 0 (Fixed Temperature)
– x=xmax: (Insulated)
![Page 6: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/6.jpg)
FEM1D 6
Analytical Solution
x=0 (xmin) x= xmax
0@0 xTmax@0 xx
xT
xxQxQT
xTCCxCxQT
xxTxQCCxQT
QT
max2
2212
maxmax11
21
0@0,021
@0,
0
Q
xT
x
heat generation/volume Q
![Page 7: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/7.jpg)
FEM1D 7
1D Linear Element (1/4)一次元線形要素
• 1D Linear Element– Length= L
• Node (Vertex)• Element
– Ti Temperature at i– Tj Temperature at j– Temperature T on each
element is linear function of x (Piecewise Linear):
xT 21 iX jX x
L
T iT
jT
![Page 8: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/8.jpg)
FEM1D 8
1D Linear Element (1/4)一次元線形要素
xT 21 iX jX x
L
T iT
jT
• 1D Linear Element– Length= L
• Node (Vertex)• Element
– Ti Temperature at i– Tj Temperature at j– Temperature T on each
element is linear function of x (Piecewise Linear):
![Page 9: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/9.jpg)
FEM1D 9
Piecewise Linear
1 2 3 4 51 2 3 4
Global Node IDElement ID
1 21
1 22
1 23
1 24
Local Node IDfor each elem.Gradient of temperature is constant in each
element (might be discontinuous at each “node”)
![Page 10: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/10.jpg)
FEM1D 10
1D Linear Elem.: Shape Function (2/4)• Coef’s are calculated based
on info. at each nodejjii XxTTXxTT @,@
jjii XTXT 2121 ,
• Coefficients:
LTT
LXTXT ijijji
21 ,
• T can be written as follows, according to Ti and Tj :
ji
ij T
LXxT
LxX
T
Ni Nj
iX jX x
T iT
jT
L
Ni
Ni, Nj
Shape Function or Interpolation Functionfunction of x (only)Nj
![Page 11: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/11.jpg)
FEM1D 11
1D Linear Elem.: Shape Function (3/4)
LXxN
LxX
N ij
ji ,
• Number of Shape Functions = Number of Vertices of Each Element– Ni: Function of Position– A kind of Test/Trial Functions
• Linear combination of shape functions provides displacement “in” each element– Coef’s (unknows): Temperature at each node
iX jX x
T iT
jT
L
jjii TNTNT i
ia
Trial/Test Function (known function of position, defined in domain and at boundary. “Basis” in linear algebra.Coefficients (unknown)
i
M
iiM au
1MT
![Page 12: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/12.jpg)
FEM1D 12
1D Linear Elem.: Shape Function (4/4)
LXxN
LxX
N ij
ji ,
• Value of Ni– =1 at one of the nodes in
element– =0 on other nodes
iX jX x
N
iN jN0.1
iX jX x
T iT
jT
L
![Page 13: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/13.jpg)
FEM1D 13
Galerkin Method (1/4)• Governing Equation for 1D
Steady State Heat Conduction Problems (Uniform ):
02
2
Q
dxTd
}{NT Distribution of temperature in each element (matrix form), : Temperature at each node
• Following integral equation is obtained at each element by Galerkin method, where [N]’s are also weighting functions:
02
2
dVQ
dxTdN
T
V
![Page 14: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/14.jpg)
x=0 (xmin) x= xmax
Q体積当たり一様発熱
FEM1D 14
Galerkin Method (2/4)
• Green’s Theorem (1D)
• Apply this to the 1st part of eqn with 2nd-order diff.:
dSdxdTNdV
dxdT
dxNddV
dxTdN
S
TT
V
T
V
2
2
VV S
dVdxdB
dxdAdS
dxdBAdV
dxBdA 2
2
• Consider the following terms:
dxdTq
: Heat flux at element surface[QL-2T-1]
}{},{ dxNd
dxdTNT
V
S S
![Page 15: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/15.jpg)
x=0 (xmin) x= xmax
Q体積当たり一様発熱
FEM1D 15
Galerkin Method (3/4)• Finally, following eqn is
obtained by considering heat generation term :
0
dVNQdSNq
dVdxNd
dxNd
V
T
S
T
T
V
• This is called “weak form(弱形式)”. Original PDE consists of terms with 2nd-order diff., but this “weak form” only includes 1st-order diff by Green’s theorem.– Requirements for shape functions are “weaker” in “weak
form”. Linear functions can describe effects of 2nd-order differentiation.
V
S S
Q
![Page 16: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/16.jpg)
FEM1D 16
Galerkin Method (4/4)
• These terms coincide at element boundaries and disappear. Finally, only terms on the domain boundaries remain.
0
dVNQdSNq
dVdxNd
dxNd
V
T
S
T
T
V
x=0 (xmin) x= xmax
Q体積当たり一様発熱
V
S S
![Page 17: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/17.jpg)
FEM1D 17
Weak Form and Boundary Conditions• Value of dependent variable is
defined (Dirichlet)– Weighting Function = 0– Principal B.C. (Boundary
Condition)(第一種境界条件)
– Essential B.C.(基本境界条件)
• Derivatives of Unknowns (Neumann)– Naturally satisfied in weak form– Secondary B.C.(第二種境界条件)
– Natural B.C(自然境界条件) dxdTq where
x=0 (xmin) x= xmax
Q体積当たり一様発熱
V
S S
0
dVNQdSNq
dVdxNd
dxNd
V
T
S
T
T
V
![Page 18: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/18.jpg)
FEM1D 18
Weak Form with B.C.: on each elem.
dVdxNd
dxNdk
T
V
e
)(
)()()( eee fk
dSNqdVNQfS
T
V
Te )(
![Page 19: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/19.jpg)
FEM1D 19
Integration over Each Element: [k]
LXxN
LxX
N ij
ji ,
LdxdN
LdxdN ji 1,1
0iX LX j x
u iu
ju
L
LxN
LxN ji ,1
1111
1111
/1,/1/1/1
02
0
LAdx
LA
dxALLLL
dVdxNd
dxNd
L
L
T
V
2x1 matrix 1x2 matrix
A: Sectional AreaL: Length
![Page 20: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/20.jpg)
FEM1D 20
Integration over Each Element: {f} (1/2)
LXxN
LxX
N ij
ji ,
LdxdN
LdxdN ji 1,1
1
12/
/1
0
ALQdxLx
LxAQdVNQ
L
V
T
1 : 1
Heat Generation(Volume)
LxN
LxN ji ,1
A: Sectional AreaL: Length
![Page 21: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/21.jpg)
FEM1D 21
Integration over Each Element: {f} (2/2)
LXxN
LxX
N ij
ji ,
LdxdN
LdxdN ji 1,1
dxdTqAqAqdSNq
LxS
T
,
10
when surface heat flux acts on only this surface.
1
12/
/1
0
ALQdxLx
LxAQdVNQ
L
V
T
Heat Generation(Volume)
Surface Heat Flux
![Page 22: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/22.jpg)
FEM1D 22
Global Equations
• Accumulate Element Equations:
)()()( eee fk
fFkK ,
FK
ofvectorglobal:
This is the final linear equations (global equations) to be solved.
Element Matrix, Element Equations
Global Matrix, Global Equations
![Page 23: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/23.jpg)
FEM1D 23
ECCS2012 System
Creating Directory
>$ cd Documents >$ mkdir 2013summer your favorite name>$ cd 2013summer
This is your “top” directory, and is called <$E-TOP> in this class.
1D Code for Steady-State Heat Conduction Problems
>$ cd <$E-TOP>>$ cp /home03/skengon/Documents/class_eps/F/1d.tar . >$ cp /home03/skengon/Documents/class_eps/C/1d.tar .>$ tar xvf 1d.tar>$ cd 1d
![Page 24: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/24.jpg)
FEM1D 24
Compile & GO !>$ cd <$E-TOP>/1d>$ cc –O 1d.c (or g95 –O 1d.f)>$ ./a.out
Control Data input.dat
4 NE (Number of Elements)1.0 1.0 1.0 1.0 x (Length of Each Elem.: L) ,Q, A, 100 Number of MAX. Iterations for CG Solver1.e-8 Convergence Criteria for CG Solver
1 2 3 4 51 2 3 4
x=1
x=0 x=1 x=2 x=3 x=4
Element IDNode ID (Global)
![Page 25: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/25.jpg)
FEM1D 25
Results>$ ./a.out
4 iters, RESID= 4.154074e-17
### TEMPERATURE1 0.000000E+00 0.000000E+002 3.500000E+00 3.500000E+003 6.000000E+00 6.000000E+004 7.500000E+00 7.500000E+005 8.000000E+00 8.000000E+00
Computational Analytical
1 2 3 4 51 2 3 4
Element IDNode ID (Global)
x=1
x=0 x=1 x=2 x=3 x=4
![Page 26: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/26.jpg)
FEM1D 26
Element Eqn’s/Accumulation (1/3)• 4 elements, 5 nodes
• [k] and {f} of Element-1:
1111)1(
LAk
1 2 3 4 51 2 3 4
Element IDNode ID (Global)
x=0 x=1 x=2 x=3 x=4
11
2)1( ALQf
• As for Element-4:
1111)4(
LAk
11
2)4( ALQf
![Page 27: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/27.jpg)
FEM1D 27
Element Eqn’s/Accumulation (2/3)• Element-by-Element Accumulation:
4
1
)(
e
ekK
4
1
)(
e
efF
+ + +
+ + +
![Page 28: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/28.jpg)
FEM1D 28
Element Eqn’s/Accumulation (3/3)• Relations to FDM
+1
4
1
)(
e
ekK-1
-1+1 +1
-1-1+1 +1
-1-1+1 +1
-1-1+1
+ + +
1111)(
LAk e
[ ]
+1-1
-1+2-1
-1+2-1
-1+2-1
-1+1
LA
LA
LATTTAL
LTTT
dVL
TTTdVdx
Td
iiiiii
V
iii
V
11211
211
2
2
22
2
Something familiar …FEM: Coefficient Matrices are generally sparse(many ZERO’s)
![Page 29: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/29.jpg)
FEM1D 29
2nd –Order Differentiation in FDM
• Approximate Derivative at×(center of i and i+1)
x x
i-1 i i+1×
xdxd ii
i
1
2/1
x→0: Real Derivative
• 2nd-Order Diff. at i
211
11
2/12/12
2 2xx
xxx
dxd
dxd
dxd iii
iiii
ii
i
![Page 30: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/30.jpg)
FEM1D 30
Element-by-Element Operationvery flexible if each element has different material
property, size, etc.
4
1
)(
e
ekK+1-1
-1+1 +1
-1-1+1
+1-1
-1+1 +1
-1-1+1
+
1111
)(
)()()(
e
eee
LAk
)1(
)1()1(
LA
)2(
)2()2(
LA
+)3(
)3()3(
LA
)4(
)4()4(
LA
![Page 31: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/31.jpg)
FEM1D 31
Element/Global Operations
1 2 3 4 51 2 3 4
1 2e
1 2e
1 2e
1 2e
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
)1(2
)1(1
)1(2
)1(1
)1(22
)1(21
)1(12
)1(11
)1()1()1( }{}{][
ff
kkkk
fk
)2(2
)2(1
)2(2
)2(1
)2(22
)2(21
)2(12
)2(11
)2()2()2( }{}{][
ff
kkkk
fk
)3(2
)3(1
)3(2
)3(1
)3(22
)3(21
)3(12
)3(11
)3()3()3( }{}{][
ff
kkkk
fk
)4(2
)4(1
)4(2
)4(1
)4(22
)4(21
)4(12
)4(11
)4()4()4( }{}{][
ff
kkkk
fk
1 2 3 4 51 2 3 4
5
4
3
2
1
5
4
3
2
1
551
41441
31331
21221
111
}{}]{[
BBBBB
DALAUDAL
AUDALAUDAL
AUDFK Mapping Information needed,
from element-matrixto global-matrix.
Global Node ID
Local Node ID
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
![Page 32: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/32.jpg)
FEM1D 32
Accumulation to Global/overall Matrix
1
1
2 3
4 5 6
7 8 9
2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
}{}]{[
FFFFFFFFFFFFFFFF
DXXXXDXXXX
XDXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXDX
XXXXDXXXXD
FK
Around the FEM in 3 minutes
![Page 33: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/33.jpg)
FEM1D 33
• 1D-code for Static Linear-Elastic Problems by Galerkin FEM
• Sparse Linear Solver– Conjugate Gradient Method– Preconditioning
• Storage of Sparse Matrices
• Program
![Page 34: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/34.jpg)
FEM1D 34
Large-Scale Linear Equations in Scientific Applications
• Solving large-scale linear equations Ax=b is the most important and expensive part of various types of scientific computing.– for both linear and nonlinear applications
• Various types of methods proposed & developed.– for dense and sparse matrices– classified into direct and iterative methods
• Dense Matrices:密行列: Globally Coupled Problems– BEM, Spectral Methods, MO/MD (gas, liquid)
• Sparse Matrices:疎行列: Locally Defined Problems– FEM, FDM, DEM, MD (solid), BEM w/FMM
![Page 35: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/35.jpg)
35
Direct Method直接法
Gaussian Elimination/LU Factorization. compute A-1 directly.
Good Robust for wide range of applications. Good for both dense and sparse matrices
Bad More expensive than iterative methods (memory, CPU) not scalable
FEM1D
![Page 36: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/36.jpg)
36
Iterative Method反復法
• Stationary Method– SOR, Gauss-Seidel, Jacobi– Generally slow, impractical
• Non-Stationary Method– With restriction/optimization conditions– Krylov-Subspace– CG: Conjugate Gradient– BiCGSTAB: Bi-Conjugate Gradient Stabilized– GMRES: Generalized Minimal Residual
FEM1D
![Page 37: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/37.jpg)
37
Iterative Method (cont.)Good
Less expensive than direct methods, especially in memory. Suitable for parallel and vector computing.
Bad Convergence strongly depends on problems, boundary
conditions (condition number etc.) Preconditioning is required : Key Technology for
Parallel FEM
FEM1D
![Page 38: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/38.jpg)
38
Conjugate Gradient Method共役勾配法
• Conjugate Gradient: CG– Most popular “non-stationary” iterative method
• for Symmetric Positive Definite (SPD) Matrices– 対称正定– {x}T[A]{x}>0 for arbitrary {x}– All of diagonal components, eigenvaules and leading
principal minors > 0 (主小行列式・首座行列式)– Matrices of Galerkin-based FEM: heat conduction, Poisson,
static linear elastic problems • Algorithm
– “Steepest Descent Method”– x(i)= x(i-1) + i p(i)
• x(i):solution,p(i):search direction,i: coefficient– Solution {x} minimizes {x-y}T[A]{x-y}, where {y} is exact
solution.
nnnnnn
n
n
n
n
aaaaa
aaaaaaaaaaaaaaaaaaaa
4321
444434241
334333231
224232221
114131211
det
nnnnnn
n
n
n
n
aaaaa
aaaaaaaaaaaaaaaaaaaa
4321
444434241
334333231
224232221
114131211
det
FEM1D
![Page 39: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/39.jpg)
39
Procedures of Conjugate GradientCompute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
• Mat-Vec. Multiplication• Dot Products• DAXPY (Double
Precision: a{X} + {Y})
x(i) : Vectori : Scalar
FEM1D
![Page 40: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/40.jpg)
40
Procedures of Conjugate Gradient
• Mat-Vec. Multiplication• Dot Products• DAXPY
x(i) : Vectori : Scalar
Compute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
FEM1D
![Page 41: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/41.jpg)
41
Procedures of Conjugate Gradient
• Mat-Vec. Multiplication• Dot Products• DAXPY
x(i) : Vectori : Scalar
Compute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
FEM1D
![Page 42: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/42.jpg)
42
Procedures of Conjugate Gradient
• Mat-Vec. Multiplication• Dot Products• DAXPY
• Double• {y}= a{x} + {y}
x(i) : Vectori : Scalar
Compute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
FEM1D
![Page 43: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/43.jpg)
43
Procedures of Conjugate GradientCompute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
x(i) : Vectori : Scalar
FEM1D
![Page 44: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/44.jpg)
44
Algorithm of CG Method (1/5)
bybxAxxAyyAyxAxx
AyyAyxAxyAxxyxAyx T
,,2,,,2,,,,,
yxAyx T
Solution x minimizes the following equation if y is the exact solution (Ay=b)
Const.
bxAxxxf ,,21
Therefore, the solution x minimizes the following f(x):
AhhbAxhxfhxf ,21, Arbitrary vector h
FEM1D
![Page 45: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/45.jpg)
45
bxAxxxf ,,21
AhhbAxhxfhxf ,21, Arbitrary vector h
AhhbAxhxf
AhhbhAxhbxAxx
bhbxAhhAhxAxhAxx
bhbxAhhxAxhx
bhxhxAhxhxf
,21,
,21,,,,
21
,,,21,
21,
21,
21
,,,21,
21
,)(,21
FEM1D
![Page 46: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/46.jpg)
46
Algorithm of CG Method (2/5)
)()()1( kk
kk pxx
CG method minimizes f(x) at each iteration. Assume that approximate solution: x(0), and search direction vector p(k) is defined at k-th iteration.
)()()()()(2)()( ,,21 kkk
kkk
kk
kk xfAxbpApppxf
Minimization of f(x(k+1)) is done as follows:
)()(
)()(
)()(
)()()()(
,,
,,0 kk
kk
kk
kk
kk
kk
k
Apprp
AppAxbppxf
)()( kk Axbr residual vector
FEM1D
![Page 47: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/47.jpg)
47
Algorithm of CG Method (3/5)
)()()1( kk
kk Aprr
Residual vector at (k+1)-th iteration:
)0()0()()1()1( , prprp kk
kk
Search direction vector p is defined by the following recurrence formula:
It’s lucky if we can get exact solution y at (k+1)-th iteration:)1(
1)1(
k
kk pxy
)()()1()()1(
)()()1()1( ,k
kkkkk
kkkk
ApAxAxrrAxbrAxbr
FEM1D
![Page 48: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/48.jpg)
48
Algorithm of CG Method (4/5)BTW, we have the following (convenient) orthogonality relation:
Thus, following relation is obtained:
0,0,, )()1()1(1
)()1()(
kkkk
kkk ApppApxyAp
0,,,
,,,,,
)()()()()()()(
)()()()()()(
)1()()1()()1()(
kkk
kkkk
kk
kk
kkkk
kk
kkkkkk
ApprpAprp
ApAxbppxAbpAxbpAxAypxyAp
)()(
)()(
,,
kk
kk
k Apprp
0, )1()( kk xyAp
FEM1D
![Page 49: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/49.jpg)
49
Algorithm of CG Method (5/5)
)()(
)()1(
)()()()1()()()1()()1(
,,
0,,,,
kk
kk
k
kkk
kkkkk
kkk
AppApr
AppAprApprApp
Following “conjugate” relationship is obtained for arbitrary (i,j):
0, )()1( kk App p(k) is “conjugate” for matrix A
In N-dimensional space, only N sets of orthogonal and linearly independent residual vector r(k). This means CG method converges after N iterations if number of unknowns is N. Actually, round-off error sometimes affects convergence.
jiApp ji 0, )()(
)()()()()()( ,,,0, kkkkji rrrpjirr
Following relationships are also obtained for p(k) and r(k):
FEM1D
![Page 50: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/50.jpg)
50
Proof (1/2) kirp ki ,,1,0,0, )1()(
k
ij
jj
ik pxx1
)()1()1(
k
ij
jj
ik
ij
jj
i
k
ij
jj
ikk
AprApAxb
pxAbAxbr
1
)()1(
1
)()1(
1
)()1()1()1(
0,,
,,
1
)()()1()(
1
)()1()()1()(
k
ij
jj
iii
k
ij
jj
iiki
Apprp
Aprprp
=0 =0
0, )1()( kk xyAp
0,
,,,
)1()(
)1()(
)1()(
)1()(
kk
kk
kk
kk
rpAxbp
AxAypxyAp
FEM1D
![Page 51: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/51.jpg)
51
Proof (2/2)
)1()()1()()1()1(
1
)1()1(1
)()1()(
,,,
,,0
kikiki
i
kii
iki
rrrrrp
rprrp
jirr ji 0, )()(
)()()()( ,, kkkk rrrp
)()()()()()1(
1
)()1(1
)()()(
,,,
,,kkkkkk
k
kkk
kkk
rrrrrp
rprrp
FEM1D
![Page 52: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/52.jpg)
52
k,k
k
kk
k
kkkkk
kk
kk
kk
kk
k
rrrrrApr
rrrr
AppApr
)1()1()1()()1()()1(
)()(
)1()1(
)()(
)()1(
,,,
,,
,,
Usually, we use simpler definitions of k,k as follows:
)()()()(
)()(
)()(
)()(
)()(
)()(
)()(
,,,,
,,
,,
kkkk
kk
kk
kk
kk
kk
kk
k
rrrpApprr
Apprp
AppAxbp
FEM1D
![Page 53: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/53.jpg)
53
Procedures of Conjugate GradientCompute r(0)= b-[A]x(0)
for i= 1, 2, …z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
x(i) : Vectori : Scalar
FEM1D
![Page 54: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/54.jpg)
54
Preconditioning for Iterative Solvers Convergence rate of iterative solvers strongly depends
on the spectral properties (eigenvalue distribution) of the coefficient matrix A. Eigenvalue distribution is small, eigenvalues are close to 1 In "ill-conditioned" problems, "condition number" (ratio of
max/min eigenvalue if A is symmetric) is large. A preconditioner M (whose properties are similar to
those of A)transforms the linear system into one with more favorable spectral properties In "ill-conditioned" problems, "condition number" (ratio of
max/min eigenvalue if A is symmetric) is large. M transforms original equation Ax=b into A'x=b' where
A'=M-1A, b'=M-1b If M~A, M-1A is close to identity matrix. If M-1=A-1, this is the best preconditioner (a.k.a. Gaussian
Elimination)
FEM1D
![Page 55: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/55.jpg)
55
Preconditioned CG Solver
x
Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
FEM1D
![Page 56: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/56.jpg)
56
ILU(0), IC(0)• Widely used Preconditioners for Sparse Matrices
– Incomplete LU Factorization– Incomplete Cholesky Factorization (for Symmetric
Matrices)
• Incomplete Direct Method– Even if original matrix is sparse, inverse matrix is not
necessarily sparse.– fill-in– ILU(0)/IC(0) without fill-in have same non-zero pattern
with the original (sparse) matrices
FEM1D
![Page 57: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/57.jpg)
57
Diagonal Scaling, Point-Jacobi
N
N
DD
DD
M
0...00000.........00000...0
1
2
1
• solve [M]z(i-1)= r(i-1) is very easy.• Provides fast convergence for simple problems.• 1d.f, 1d.c
FEM1D
![Page 58: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/58.jpg)
58
• More detailed discussions on preconditioning will be provided in “Multicore Programming”.
FEM1D
![Page 59: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/59.jpg)
FEM1D 59
• 1D-code for Static Linear-Elastic Problems by Galerkin FEM
• Sparse Linear Solver– Conjugate Gradient Method– Preconditioning
• Storage of Sparse Matrices
• Program
![Page 60: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/60.jpg)
60
Coef. Matrix derived from FEM• Sparse Matrix
– Many “0”’s• Storing all components
(e.g. A(i,j)) is not efficient for sparse matrices– A(i,j) is suitable for dense
matrices
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
FFFFFFFFFFFFFFFF
DXXXXDXXXX
XDXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXDX
XXXXDXXXXD
• Number of non-zero off-diagonal components is O(100) in FEM – If number of unknowns is 108 :
• A(i,j): O(1016) words• Actual Non-zero Components:O(1010) words
• Only (really) non-zero off-diag. components should be stored on memory
FEM1D
![Page 61: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/61.jpg)
61
Variables/Arrays in 1d.f, 1d.crelated to coefficient matrix
name type size descriptionN
NPLU
I
I
-
-
# Unknowns
# Non-Zero Off-Diagonal ComponentsDiag(:) R N Diagonal Components
U(:) R N Unknown Vector
Rhs(:) R N RHS Vector
Index(:) I0:NN+1
Off-Diagonal Components (Number of Non-Zero Off-Diagonals at Each ROW)
Item(:) I NPLU Off-Diagonal Components (Corresponding Column ID)
AMat(:) R NPLU Off-Diagonal Components (Value)
Only non-zero components are stored accordingto “Compressed Row Storage”.
FEM1D
![Page 62: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/62.jpg)
62
Mat-Vec. Multiplication for Sparse MatrixCompressed Row Storage (CRS)
Diag (i) Diagonal Components (REAL, i=1~N)Index(i) Number of Non-Zero Off-Diagonals at Each ROW (INT, i=0~N)Item(k) Off-Diagonal Components (Corresponding Column ID)
(INT, k=1, index(N))AMat(k) Off-Diagonal Components (Value)
( REAL, k=1, index(N) )
{Y}= [A]{X}
do i= 1, NY(i)= Diag(i)*X(i)do k= Index(i-1)+1, Index(i)
Y(i)= Y(i) + Amat(k)*X(Item(k))enddo
enddo
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
FFFFFFFFFFFFFFFF
DXXXXDXXXX
XDXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXXXDXXXX
XXXXDXXXXXXXDXX
XXDXXXXXDX
XXXXDXXXXD
FEM1D
![Page 63: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/63.jpg)
63
CRS or CSR ? for Compressed Row Storage
• “CRS” in France– Compagnie Républicaine de Sécurité
• Republic Security Company of France
• French scientists may feel uncomfortable when we use “CRS” in technical papers and/or presentations.
• In Japan and USA, “CRS” is very general for abbreviation of “Compressed Row Storage”, but they usually use “CSR” in Europe (especially in France).
FEM1D
![Page 64: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/64.jpg)
64
Mat-Vec. Multiplication for Sparse MatrixCompressed Row Storage (CRS)
{Q}=[A]{P}
for(i=0;i<N;i++){W[Q][i] = Diag[i] * W[P][i]; for(k=Index[i];k<Index[i+1];k++){
W[Q][i] += AMat[k]*W[P][Item[k]];}
}
FEM1D
![Page 65: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/65.jpg)
65
Mat-Vec. Multiplication for Dense MatrixVery Easy, Straightforward
NNNNNN
NNNNNN
NN
NN
aaaaaaaa
aaaaaaaa
,1,2,1,
,11,12,11,1
,21,22221
,11,11211
...
.........
...
N
N
N
N
yy
yy
xx
xx
1
2
1
1
2
1
{Y}= [A]{X}
do j= 1, NY(j)= 0.d0do i= 1, N
Y(j)= Y(j) + A(i,j)*X(i)enddo
enddo
FEM1D
![Page 66: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/66.jpg)
FEM1D 66
Compressed Row Storage (CRS)
3.5101.306.93.15.901.131.234.1005.24.60
05.94.12005.60003.405.1104.105.91.3007.25.28.901.4001.305.107.5001.907.305.206.33.4
0002.3004.21.11
2
3
4
5
6
7
8
1 2 3 4 5 6 7 8
![Page 67: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/67.jpg)
FEM1D 67Compressed Row Storage (CRS): Fortran
1
12.4②
3.2⑤
4.3①
2.5④
3.7⑥
9.1⑧
1.5⑤
3.1⑦
4.1②
2.5⑤
2.7⑥
3.1①
9.5②
10.4③
4.3⑦
6.5③
9.5⑦
6.4②
2.5③
1.4⑥
13.1⑧
9.5②
1.3③
9.6④
3.1⑥
2
3
4
5
6
7
8
2 3 4 5 6 7 8N= 8
対角成分Diag(1)= 1.1Diag(2)= 3.6Diag(3)= 5.7Diag(4)= 9.8 Diag(5)= 11.5 Diag(6)= 12.4Diag(7)= 23.1 Diag(8)= 51.3
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
![Page 68: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/68.jpg)
FEM1D 68
Compressed Row Storage (CRS)
1
12.4②
3.2⑤
4.3①
2.5④
3.7⑥
9.1⑧
1.5⑤
3.1⑦
4.1②
2.5⑤
2.7⑥
3.1①
9.5②
10.4③
4.3⑦
6.5③
9.5⑦
6.4②
2.5③
1.4⑥
13.1⑧
9.5②
1.3③
9.6④
3.1⑥
2
3
4
5
6
7
8
2 3 4 5 6 7 81.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
![Page 69: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/69.jpg)
FEM1D 69
Compressed Row Storage (CRS)
1
2
3
4
5
6
7
8
2.4②
3.2⑤
4.3①
2.5④
3.7⑥
9.1⑧
1.5⑤
3.1⑦
4.1②
2.5⑤
2.7⑥
3.1①
9.5②
10.4③
4.3⑦
6.5③
9.5⑦
6.4②
2.5③
1.4⑥
13.1⑧
9.5②
1.3③
9.6④
3.1⑥
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
2 index(1)= 2
4 index(2)= 6
2 index(3)= 8
3 index(4)= 11
4 index(5)= 15
2 index(6)= 17
4 index(7)= 21
4 index(8)= 25
index(0)= 0
NPLU= 25(=index(N))
index(i-1)+1th~index(i) th
Non-Zero Off-Diag. Components corresponding to i-th row
# Non-ZeroOff-Diag.
![Page 70: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/70.jpg)
FEM1D 70
Compressed Row Storage (CRS)
1
2
3
4
5
6
7
8
2.4②,1
3.2⑤,2
4.3①,3
2.5④,4
3.7⑥,5
9.1⑧,6
1.5⑤,7
3.1⑦,8
4.1②,9
2.5⑤,10
2.7⑥,11
3.1①,12
9.5②,13
10.4③,14
4.3⑦,15
6.5③,16
9.5⑦,17
6.4②,18
2.5③,19
1.4⑥,20
13.1⑧,21
9.5②,22
1.3③,23
9.6④,24
3.1⑥,25
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
2 index(1)= 2
4 index(2)= 6
2 index(3)= 8
3 index(4)= 11
4 index(5)= 15
2 index(6)= 17
4 index(7)= 21
4 index(8)= 25
index(0)= 0
NPLU= 25(=index(N))
index(i-1)+1th~index(i) th
Non-Zero Off-Diag. Components corresponding to i-th row
# Non-ZeroOff-Diag.
![Page 71: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/71.jpg)
FEM1D 71
Compressed Row Storage (CRS)
1
2
3
4
5
6
7
8
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
Example: item( 7)= 5, AMAT( 7)= 1.5item(19)= 3, AMAT(19)= 2.5
2.4②,1
3.2⑤,2
4.3①,3
2.5④,4
3.7⑥,5
9.1⑧,6
1.5⑤,7
3.1⑦,8
4.1②,9
2.5⑤,10
2.7⑥,11
3.1①,12
9.5②,13
10.4③,14
4.3⑦,15
6.5③,16
9.5⑦,17
6.4②,18
2.5③,19
1.4⑥,20
13.1⑧,21
9.5②,22
1.3③,23
9.6④,24
3.1⑥,25
![Page 72: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/72.jpg)
Compressed Row Storage (CRS)
1
2
3
4
5
6
7
8
{Y}= [A]{X}
do i= 1, NY(i)= D(i)*X(i)do k= index(i-1)+1, index(i)
Y(i)= Y(i) + AMAT(k)*X(item(k))enddo
enddo
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
2.4②,1
3.2⑤,2
4.3①,3
2.5④,4
3.7⑥,5
9.1⑧,6
1.5⑤,7
3.1⑦,8
4.1②,9
2.5⑤,10
2.7⑥,11
3.1①,12
9.5②,13
10.4③,14
4.3⑦,15
6.5③,16
9.5⑦,17
6.4②,18
2.5③,19
1.4⑥,20
13.1⑧,21
9.5②,22
1.3③,23
9.6④,24
3.1⑥,25
72FEM1D
Diag (i) Diagonal Components (REAL, i=1~N)Index(i) Number of Non-Zero Off-Diagonals at
Each ROW (INT, i=0~N)Item(k) Off-Diagonal Components
(Corresponding Column ID)(INT, k=1, index(N))
AMat(k) Off-Diagonal Components (Value)( REAL, k=1, index(N) )
![Page 73: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/73.jpg)
FEM1D 73
• 1D-code for Static Linear-Elastic Problems by Galerkin FEM
• Sparse Linear Solver– Conjugate Gradient Method– Preconditioning
• Storage of Sparse Matrices
• Program
![Page 74: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/74.jpg)
FEM1D 74
Finite Element Procedures• Initialization
– Control Data– Node, Connectivity of Elements (N: Node#, NE: Elem#)– Initialization of Arrays (Global/Element Matrices)– Element-Global Matrix Mapping (Index, Item)
• Generation of Matrix– Element-by-Element Operations (do icel= 1, NE)
• Element matrices• Accumulation to global matrix
– Boundary Conditions• Linear Solver
– Conjugate Gradient Method
![Page 75: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/75.jpg)
FEM1D 75
Program: 1d.f (1/6)variables and arrays
!C!C 1D Steady-State Heat Transfer!C FEM with Piece-wise Linear Elements!C CG (Conjugate Gradient) Method!C!C d/dx(CdT/dx) + Q = 0!C T=0@x=0!C
program heat1Dimplicit REAL*8 (A-H,O-Z)
integer :: N, NPLU, ITERmaxinteger :: R, Z, P, Q, DD
real(kind=8) :: dX, RESID, EPSreal(kind=8) :: AREA, QV, CONDreal(kind=8), dimension(:), allocatable :: PHI, RHS, Xreal(kind=8), dimension(: ), allocatable :: DIAG, AMATreal(kind=8), dimension(:,:), allocatable :: W
real(kind=8), dimension(2,2) :: KMAT, EMAT
integer, dimension(:), allocatable :: ICELNODinteger, dimension(:), allocatable :: INDEX, ITEM
![Page 76: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/76.jpg)
FEM1D 76
Variable/Arrays (1/2)
Q
Name Type Size I/O Definition
NE I I # Element
N I O # Node
NPLU I O # Non-Zero Off-Diag. Components
IterMax I I MAX Iteration Number for CG
errno I O ERROR flag
R, Z, Q, P, DD
I O Name of Vectors in CG
dX R I Length of Each Element
Resid R O Residual for CG
Eps R I Convergence Criteria for CG
Area R I Sectional Area of Element
QV R I Heat Generation Rate/Volume/Time
COND R I Thermal Conductivity
![Page 77: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/77.jpg)
FEM1D 77
Variable/Arrays (2/2)Name Type Size I/O Definition
X R N O Location of Each NodePHI R N O Temperature of Each NodeRhs R N O RHS VectorDiag R N O Diagonal ComponentsW R (N,4) O Work Array for CGAmat R NPLU O Off-Diagonal Components (Value)
Index I 0:N O Number of Non-Zero Off-Diagonals at Each ROW
Item I NPLU O Off-Diagonal Components (Corresponding Column ID)
Icelnod I 2*NE O Node ID for Each ElementKmat R (2,2) O Element Matrix [k]Emat R (2,2) O Element Matrix
![Page 78: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/78.jpg)
FEM1D 78
Program: 1d.f (2/6) Initialization, Allocation of Arrays
!C!C +-------+!C | INIT. |!C +-------+!C===
open (11, file='input.dat', status='unknown')read (11,*) NEread (11,*) dX, QV, AREA, CONDread (11,*) ITERmaxread (11,*) EPSclose (11)
N= NE + 1allocate (PHI(N), DIAG(N), AMAT(2*N-2), RHS(N))allocate (ICELNOD(2*NE), X(N))allocate (INDEX(0:N), ITEM(2*N-2), W(N,4))
PHI = 0.d0AMAT= 0.d0DIAG= 0.d0RHS= 0.d0X= 0.d0
Control Data input.dat
4 NE (Number of Elements)1.0 1.0 1.0 1.0 x (Length of Each Elem.: L) ,Q, A, 100 Number of MAX. Iterations for CG Solver1.e-8 Convergence Criteria for CG Solver
1 2 3 4 51 2 3 4
NE: # ElementN : # Node (NE+1)
![Page 79: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/79.jpg)
!C!C +-------+!C | INIT. |!C +-------+!C===
open (11, file='input.dat', status='unknown')read (11,*) NEread (11,*) dX, QV, AREA, CONDread (11,*) ITERmaxread (11,*) EPSclose (11)
N= NE + 1allocate (PHI(N), DIAG(N), AMAT(2*N-2), RHS(N))allocate (ICELNOD(2*NE), X(N))allocate (INDEX(0:N), ITEM(2*N-2), W(N,4))
PHI = 0.d0AMAT= 0.d0DIAG= 0.d0RHS= 0.d0X= 0.d0
FEM1D 79
Program: 1d.f (2/6) Initialization, Allocation of Arrays
Amat: Non-Zero Off-Diag. Comp.Item: Corresponding Column ID
![Page 80: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/80.jpg)
FEM1D 80
Element/Global Operations
1 2 3 4 51 2 3 4
1 2e
1 2e
1 2e
1 2e
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
)1(2
)1(1
)1(2
)1(1
)1(22
)1(21
)1(12
)1(11
)1()1()1( }{}{][
ff
kkkk
fk
)2(2
)2(1
)2(2
)2(1
)2(22
)2(21
)2(12
)2(11
)2()2()2( }{}{][
ff
kkkk
fk
)3(2
)3(1
)3(2
)3(1
)3(22
)3(21
)3(12
)3(11
)3()3()3( }{}{][
ff
kkkk
fk
)4(2
)4(1
)4(2
)4(1
)4(22
)4(21
)4(12
)4(11
)4()4()4( }{}{][
ff
kkkk
fk
1 2 3 4 51 2 3 4
5
4
3
2
1
5
4
3
2
1
551
41441
31331
21221
111
}{}]{[
BBBBB
DALAUDAL
AUDALAUDAL
AUDFK
Number of non-zero off-diag. components is 2 for each node. This number is 1 at boundary nodes).
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
0
dVNXdSN
dVdxNd
dxNdE
V
T
S
T
T
V
Global Node ID
Local Node ID
![Page 81: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/81.jpg)
FEM1D 81
Attention: In C program, node and element ID’s start from 0.
1 2 3 4 51 2 3 4
0 1 2 3 40 1 2 3
0 1e
0 1e
0 1e
0 1e
![Page 82: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/82.jpg)
FEM1D 82
Program: 1d.f (2/6) Initialization, Allocation of Array
!C!C +-------+!C | INIT. |!C +-------+!C===
open (11, file='input.dat', status='unknown')read (11,*) NEread (11,*) dX, QV, AREA, CONDread (11,*) ITERmaxread (11,*) EPSclose (11)
N= NE + 1allocate (PHI(N), DIAG(N), AMAT(2*N-2), RHS(N))allocate (ICELNOD(2*NE), X(N))allocate (INDEX(0:N), ITEM(2*N-2), W(N,4))
PHI = 0.d0AMAT= 0.d0DIAG= 0.d0RHS= 0.d0X= 0.d0
icel
Icelnod[2*icel]=icel
Icelnod[2*icel+1]=icel+1
Amat: Non-Zero Off-Diag. Comp.Item: Corresponding Column ID
Number of non-zero off-diag. components is 2 for each node. This number is 1 at boundary nodes).
Total Number of Non-Zero Off-Diag. Components:2*(N-2)+1+1= 2*N-2
![Page 83: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/83.jpg)
FEM1D 83
Program: 1d.f (3/6) Initialization, Allocation of Arrays (cont.)
do i= 1, NX(i)= dfloat(i-1)*dX
enddo
do icel= 1, NEICELNOD(2*icel-1)= icelICELNOD(2*icel )= icel + 1
enddo
KMAT(1,1)= +1.d0KMAT(1,2)= -1.d0KMAT(2,1)= -1.d0KMAT(2,2)= +1.d0
X: X-coordinate component of each node
![Page 84: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/84.jpg)
FEM1D 84
Program: 1d.f (3/6) Initialization, Allocation of Arrays (cont.)
do i= 1, NX(i)= dfloat(i-1)*dX
enddo
do icel= 1, NEICELNOD(2*icel-1)= icelICELNOD(2*icel )= icel + 1
enddo
KMAT(1,1)= +1.d0KMAT(1,2)= -1.d0KMAT(2,1)= -1.d0KMAT(2,2)= +1.d0
icel
Icelnod(2*icel-1)=icel
Icelnod(2*icel)=icel+1
![Page 85: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/85.jpg)
FEM1D 85
Program: 1d.f (3/6) Initialization, Allocation of Arrays (cont.)
do i= 1, NX(i)= dfloat(i-1)*dX
enddo
do icel= 1, NEICELNOD(2*icel-1)= icelICELNOD(2*icel )= icel + 1
enddo
KMAT(1,1)= +1.d0KMAT(1,2)= -1.d0KMAT(2,1)= -1.d0KMAT(2,2)= +1.d0
11
11)(
LAdV
dxNd
dxNdk
T
V
e
[Kmat]
![Page 86: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/86.jpg)
FEM1D 86
Program: 1d.f (4/6) Global Matrix: Column ID for Non-Zero Off-Diag’s
!C!C +--------------+!C | CONNECTIVITY |!C +--------------+!C===
INDEX = 2
INDEX(0)= 0INDEX(1)= 1INDEX(N)= 1
do i= 1, NINDEX(i)= INDEX(i) + INDEX(i-1)
enddo
NPLU= INDEX(N)
do i= 1, NjS= INDEX(i-1)if (i.eq.1) then
ITEM(jS+1)= i+1else if
& (i.eq.N) thenITEM(jS+1)= i-1
elseITEM(jS+1)= i-1ITEM(jS+2)= i+1
endifenddo
!C===
Number of non-zero off-diag. components is 2 for each node. This number is 1 at boundary nodes).
Total Number of Non-Zero Off-Diag. Components:2*(N-2)+1+1= 2*N-2= NPLU= Index[N]
1
2
3
4
5
6
7
8
2.4②
3.2⑤
4.3①
2.5④
3.7⑥
9.1⑧
1.5⑤
3.1⑦
4.1②
2.5⑤
2.7⑥
3.1①
9.5②
10.4③
4.3⑦
6.5③
9.5⑦
6.4②
2.5③
1.4⑥
13.1⑧
9.5②
1.3③
9.6④
3.1⑥
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
2 index(1)= 2
4 index(2)= 6
2 index(3)= 8
3 index(4)= 11
4 index(5)= 15
2 index(6)= 17
4 index(7)= 21
4 index(8)= 25
index(0)= 0
index(i-1)+1th~index(i) th
Non-Zero Off-Diag. Components corresponding to i-th row
# Non-ZeroOff-Diag.
![Page 87: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/87.jpg)
!C!C +--------------+!C | CONNECTIVITY |!C +--------------+!C===
INDEX = 2
INDEX(0)= 0INDEX(1)= 1INDEX(N)= 1
do i= 1, NINDEX(i)= INDEX(i) + INDEX(i-1)
enddo
NPLU= INDEX(N)
do i= 1, NjS= INDEX(i-1)if (i.eq.1) then
ITEM(jS+1)= i+1else if
& (i.eq.N) thenITEM(jS+1)= i-1
elseITEM(jS+1)= i-1ITEM(jS+2)= i+1
endifenddo
!C===
FEM1D 87
Program: 1d.f (4/6) Global Matrix: Column ID for Non-Zero Off-Diag’s
ii-1 i+1i-1 i
1
2
3
4
5
6
7
8
2.4②
3.2⑤
4.3①
2.5④
3.7⑥
9.1⑧
1.5⑤
3.1⑦
4.1②
2.5⑤
2.7⑥
3.1①
9.5②
10.4③
4.3⑦
6.5③
9.5⑦
6.4②
2.5③
1.4⑥
13.1⑧
9.5②
1.3③
9.6④
3.1⑥
1.1①
3.6②
5.7③
9.8④
11.5⑤
12.4⑥
23.1⑦
51.3⑧
2 index(1)= 2
4 index(2)= 6
2 index(3)= 8
3 index(4)= 11
4 index(5)= 15
2 index(6)= 17
4 index(7)= 21
4 index(8)= 25
index(0)= 0
index(i-1)+1th~index(i) th
Non-Zero Off-Diag. Components corresponding to i-th row
# Non-ZeroOff-Diag.
![Page 88: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/88.jpg)
FEM1D 88
Program: 1d.f (5/6) Element Matrix ~ Global Matrix
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
in2in1icel
![Page 89: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/89.jpg)
FEM1D 89
Program: 1d.f (5/6) Element Matrix ~ Global Matrix
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
in2in1icel
KmatLA
LAkEmat e
1111)(
![Page 90: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/90.jpg)
FEM1D 90
Program: 1d.f (5/6) Element Matrix ~ Global Matrix
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
in2in1icel
1111)(
LEAkEmat e
![Page 91: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/91.jpg)
FEM1D 91
Program: 1d.f (5/6) Element Matrix ~ Global Matrix
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
in2in1icel
1111)(
LAkEmat e
ii-1 i+1INDEX(i-1)+1 INDEX(i-1)+2
k1
k2
Non-zero Off-Diag. at i-th row:Index(i-1)+1, Index(i-1)+2
![Page 92: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/92.jpg)
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
General Elements: k1 “in2” as a off-diag. component of “in1”
in2in1icel
1111)(
LAkEmat e
in1i-1 in2
k1
INDEX(i-1)+1 INDEX(i-1)+2
FEM1D 92
Non-zero Off-Diag. at i-th row:Index(i-1)+1, Index(i-1)+2
![Page 93: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/93.jpg)
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
General Elements: k2 “in1” as a off-diag. component of “in2”
in2in1icel
1111)(
LAkEmat e
k2
in2in1 i+1INDEX(i-1)+1 INDEX(i-1)+2
FEM1D 93
Non-zero Off-Diag. at i-th row:Index(i-1)+1, Index(i-1)+2
![Page 94: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/94.jpg)
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
0-th Element: k1 “in2” as a off-diag. component of “in1”
in2in1Icel=1
1111)(
LAkEmat e
in1 in2
k1
INDEX(i-1)+1
FEM1D 94
Non-zero Off-Diag. at i-th row:Index(i-1)+1 only
![Page 95: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/95.jpg)
FEM1D 95
Program: 1d.f (5/6)RHS: Heat Generation Term
!C +-----------------+!C | MATRIX ASSEMBLE |!C +-----------------+!C===
do icel= 1, NEin1= ICELNOD(2*icel-1)in2= ICELNOD(2*icel )X1 = X(in1)X2 = X(in2)DL = dabs(X2-X1)
cK= AREA*COND/DLEMAT(1,1)= Ck*KMAT(1,1)EMAT(1,2)= Ck*KMAT(1,2)EMAT(2,1)= Ck*KMAT(2,1)EMAT(2,2)= Ck*KMAT(2,2)
DIAG(in1)= DIAG(in1) + EMAT(1,1)DIAG(in2)= DIAG(in2) + EMAT(2,2)
if (icel.eq.1) thenk1= INDEX(in1-1) + 1
elsek1= INDEX(in1-1) + 2
endifk2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)AMAT(k2)= AMAT(k2) + EMAT(2,1)
QN= 0.50d0*QV*AREA*DLRHS(in1)= RHS(in1) + QNRHS(in2)= RHS(in2) + QN
enddo!C===
in2in1icel
1
12/
/1
0
ALQdxLx
LxAQdVNQ
L
V
T
![Page 96: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/96.jpg)
FEM1D 96
Program: 1d.f (6/6) Dirichlet B.C. @ X=0
!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= 0.d0
do k= 1, NPLUif (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo!C===
![Page 97: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/97.jpg)
• Uniform: Sectional Area: A, Thermal Conductivity: • Heat Generation Rate/Volume/Time [QL-3T-1]• Boundary Conditions
– x=0 : T= 0 (Fixed Temperature)
– x=xmax: (Insulated)
FEM1D 97
1D Steady State Heat Conduction
x=0 (xmin) x= xmax
Q
0
xT
heat generation/volume0
Q
xT
x
Q
![Page 98: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/98.jpg)
• Uniform: Sectional Area: A, Thermal Conductivity: • Heat Generation Rate/Volume/Time [QL-3T-1]• Boundary Conditions
– x=0 : T= 0 (Fixed Temperature)
– x=xmax: (Insulated)
FEM1D 98
(Linear) Equation at x=0T1= 0 (or T0 = 0)
x=0 (xmin) x= xmax
Q
0
xT
heat generation/volume0
Q
xT
x
Q
![Page 99: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/99.jpg)
FEM1D 99
!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= 0.d0
do k= 1, NPLUif (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo!C===
Program: 1d.f (6/6) Dirichlet B.C. @ X=0
T1=0
Diagonal Component=1RHS=0Off-Diagonal Components= 0.
![Page 100: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/100.jpg)
!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= 0.d0
do k= 1, NPLUif (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo!C===
FEM1D 100
Program: 1d.f (6/6) Dirichlet B.C. @ X=0
Erase !
T1=0
Diagonal Component=1RHS=0Off-Diagonal Components= 0.
![Page 101: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/101.jpg)
!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= 0.d0
do k= 1, NPLUif (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo!C===
FEM1D 101
Program: 1d.f (6/6) Dirichlet B.C. @ X=0
Elimination and Erase
Column components of boundary nodes (Dirichlet B.C.) are moved to RHS and eliminated for keeping symmetrical feature of the matrix (in this case just erase off-diagonal components)
T1=0
Diagonal Component=1RHS=0Off-Diagonal Components= 0.
![Page 102: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/102.jpg)
FEM1D 102
if T1≠ 0!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= PHImin
do i= 1, Ndo k= INDEX(i-1)+1, INDEX(i)
if (ITEM(k).eq.1) thenRHS (i)= RHS(i) – AMAT(k)*PHIminAMAT(k)= 0.d0
endifenddo
enddo!C===
jkItem
jIndex
jIndexkkjj RhsAmatDiag
][
1]1[
][
Column components of boundary nodes (Dirichlet B.C.) are moved to RHS and eliminated for keeping symmetrical feature of the matrix.
![Page 103: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/103.jpg)
FEM1D 103
if T1≠ 0!C!C +---------------------+!C | BOUNDARY CONDITIONS |!C +---------------------+!C===
!C!C-- X=Xmin
i= 1jS= INDEX(i-1)
AMAT(jS+1)= 0.d0DIAG(i)= 1.d0RHS (i)= PHImin
do i= 1, Ndo k= INDEX(i-1)+1, INDEX(i)
if (ITEM(k).eq.1) thenRHS (i)= RHS(i) – AMAT(k)*PHIminAMAT(k)= 0.d0
endifenddo
enddo!C===
0][min
][
][
1]1[
],[
skj
kItemkj
kItem
jIndex
kkjIndexkkjj
kItemwhereAmatRhs
AmatRhs
AmatDiag
s
ss
s
Column components of boundary nodes (Dirichlet B.C.) are moved to RHS and eliminated for keeping symmetrical feature of the matrix.
![Page 104: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/104.jpg)
FEM1D 104
Secondary B.C. (Insulated)
0@0 xTmax@0 xx
xT
0
Q
xT
x
x=0 (xmin) x= xmax
QHeat Gen. Rate
dxdTqAqAqdSNq
LxS
T
,
10
Surface Flux
max@0 xxxT
According to insulated B.C.,is satisfied. No contribution by this term. Insulated B.C. is automatically satisfied without explicit operations-> Natural B.C.
0q
![Page 105: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/105.jpg)
FEM1D 105
Preconditioned CG Solver
Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
N
N
DD
DD
M
0...00000.........00000...0
1
2
1
![Page 106: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/106.jpg)
FEM1D 106
Diagonal Scaling, Point-Jacobi
N
N
DD
DD
M
0...00000.........00000...0
1
2
1
• solve [M]z(i-1)= r(i-1) is very easy.• Provides fast convergence for simple problems.• 1d.f, 1d.c
![Page 107: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/107.jpg)
FEM1D 107
CG Solver (1/6)!C!C +---------------+!C | CG iterations |!C +---------------+!C===
R = 1Z = 2Q = 2P = 3DD= 4
do i= 1, NW(i,DD)= 1.0D0 / DIAG(i)
enddo
Reciprocal numbers (逆数)of diagonal components are stored in W(i,DD).Computational cost for division is usually expensive.
![Page 108: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/108.jpg)
!C!C +---------------+!C | CG iterations |!C +---------------+!C===
R = 1Z = 2Q = 2P = 3DD= 4
do i= 1, NW(i,DD)= 1.0D0 / DIAG(i)
enddo
FEM1D 108
CG Solver (1/6)
W(i,1)= W(i,R) ⇒ {r}W(i,2)= W(i,Z) ⇒ {z}W(i,2)= W(i,Q) ⇒ {q}W(i,3)= W(i,P) ⇒ {p}W(i,4)= W(i,DD) ⇒ 1/{D}
Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
![Page 109: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/109.jpg)
FEM1D 109
CG Solver (2/6)!C!C-- {r0}= {b} - [A]{xini} |
!C 初期残差do i= 1, NW(i,R) = DIAG(i)*PHI(i)do j= INDEX(i-1)+1, INDEX(i)
W(i,R) = W(i,R) + AMAT(j)*PHI(ITEM(j))enddo
enddo
BNRM2= 0.0D0do i= 1, NBNRM2 = BNRM2 + RHS(i) **2W(i,R)= RHS(i) - W(i,R)
enddo
Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
BNRM2=|b|2
for convergence criteria of CG solvers
![Page 110: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/110.jpg)
FEM1D 110
CG Solver (3/6)Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
do iter= 1, ITERmax
!C!C-- {z}= [Minv]{r}
do i= 1, NW(i,Z)= W(i,DD) * W(i,R)
enddo
!C!C-- RHO= {r}{z}
RHO= 0.d0do i= 1, NRHO= RHO + W(i,R)*W(i,Z)
enddo
![Page 111: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/111.jpg)
FEM1D 111
CG Solver (4/6)Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
!C!C-- {p} = {z} if ITER=1!C BETA= RHO / RHO1 otherwise
if ( iter.eq.1 ) thendo i= 1, N
W(i,P)= W(i,Z)enddoelseBETA= RHO / RHO1do i= 1, N
W(i,P)= W(i,Z) + BETA*W(i,P)enddo
endif
!C!C-- {q}= [A]{p}
do i= 1, NW(i,Q) = DIAG(i)*W(i,P)do j= INDEX(i-1)+1, INDEX(i)
W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P)enddo
enddo
![Page 112: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/112.jpg)
FEM1D 112
CG Solver (5/6)!C!C-- ALPHA= RHO / {p}{q}
C1= 0.d0do i= 1, NC1= C1 + W(i,P)*W(i,Q)
enddoALPHA= RHO / C1
!C!C-- {x}= {x} + ALPHA*{p}!C {r}= {r} - ALPHA*{q}
do i= 1, NPHI(i)= PHI(i) + ALPHA * W(i,P)W(i,R)= W(i,R) - ALPHA * W(i,Q)
enddo
Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
![Page 113: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/113.jpg)
FEM1D 113
CG Solver (6/6)Compute r(0)= b-[A]x(0)
for i= 1, 2, …solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)if i=1p(1)= z(0)
elsei-1= i-1/i-2p(i)= z(i-1) + i-1 p(i-1)
endifq(i)= [A]p(i)
i = i-1/p(i)q(i)x(i)= x(i-1) + ip(i)r(i)= r(i-1) - iq(i)check convergence |r|
end
DNRM2 = 0.0do i= 1, N
DNRM2= DNRM2 + W(i,R)**2enddo
RESID= dsqrt(DNRM2/BNRM2)
if ( RESID.le.EPS) goto 900RHO1 = RHO i-2
enddo900 continue
EpsBNorm2DNorm2Resid
bbAx
br
Control Data input.dat
4 NE (Number of Elements)1.0 1.0 1.0 1.0 x (Length of Each Elem.: L) ,Q, A, 100 Number of MAX. Iterations for CG Solver1.e-8 Convergence Criteria for CG Solver
![Page 114: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/114.jpg)
FEM1D 114
Finite Element Procedures• Initialization
– Control Data– Node, Connectivity of Elements (N: Node#, NE: Elem#)– Initialization of Arrays (Global/Element Matrices)– Element-Global Matrix Mapping (Index, Item)
• Generation of Matrix– Element-by-Element Operations (do icel= 1, NE)
• Element matrices• Accumulation to global matrix
– Boundary Conditions• Linear Solver
– Conjugate Gradient Method
![Page 115: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/115.jpg)
FEM1D 115
Remedies for Higher Accuracy• Finer MeshesNE=8, dX=12.5
8 iters, RESID= 2.822910E-16 U(N)= 1.953586E-01
### DISPLACEMENT1 0.000000E+00 -0.000000E+002 1.101928E-02 1.103160E-023 2.348034E-02 2.351048E-024 3.781726E-02 3.787457E-025 5.469490E-02 5.479659E-026 7.520772E-02 7.538926E-027 1.013515E-01 1.016991E-018 1.373875E-01 1.381746E-019 1.953586E-01 1.980421E-01
NE=20, dX=5
20 iters, RESID= 5.707508E-15 U(N)= 1.975734E-01
### DISPLACEMENT1 0.000000E+00 -0.000000E+002 4.259851E-03 4.260561E-033 8.719160E-03 8.720685E-034 1.339752E-02 1.339999E-02
……17 1.145876E-01 1.146641E-0118 1.295689E-01 1.296764E-0119 1.473466E-01 1.475060E-0120 1.692046E-01 1.694607E-0121 1.975734E-01 1.980421E-01
2211
loglog AAxAEAFu
1 2 3 4 51 2 3 4
![Page 116: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/116.jpg)
FEM1D 116
Remedies for Higher Accuracy• Finer Meshes• Higher Order Shape/Interpolation Function(高次補間関数・形状関数)
– Higher-Order Element(高次要素)
– Linear-Element, 1st-Order Element: Lower Order(低次要素)
• Formulation which assures continuity of n-th order derivatives– Cn Continuity(Cn連続性)
![Page 117: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/117.jpg)
FEM1D 117
Remedies for Higher Accuracy• Finer Meshes• Higher Order Shape/Interpolation Function(高次補間関数・形状関数)
– Higher-Order Element(高次要素)
– Linear-Element, 1st-Order Element: Lower Order(低次要素)
• Formulation which assures continuity of n-th order derivatives– Cn Continuity(Cn連続性)
• Linear Elements– Piecewise Linear– C0 Continuity
• Only dependent variables are continuous at element boundary
![Page 118: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/118.jpg)
118
Example: 1D Heat Transfer (1/2)
• Temp. Thermal Fins• Circular Sectional Area,
r=1cm
• Boundary Condition– x=0 : Fixed Temperature– x=7.5 : Insulated
• Convective Heat Transfer on Cylindrical Surface– q= h (T-T0)– q:Heat Flux
• Heat Flow/Unit Surface Area/sec.
Convective Heat Transfer on Cylindrical Surface
CTS 150
KcmWhCT 20 /10.0,0
KcmW /00.4
cm50.7
銅
CTS 150
KcmWhCT 20 /10.0,0
KcmW /00.4
cm50.7
銅Cupper
FEM1D
![Page 119: 1D-FEM in Fortran: Steady State Heat Conductionnkl.cc.u-tokyo.ac.jp/13e/02-FEM/FEM1D-F.pdf1D-FEM in Fortran: Steady State Heat Conduction Kengo Nakajima Information Technology Center](https://reader030.vdocuments.us/reader030/viewer/2022040212/5e8e7bdcdb1a7d25dd06ba0b/html5/thumbnails/119.jpg)
119
Example: 1D Heat Transfer (2/2)
0
50
100
150
0.00 2.00 4.00 6.00 8.00
X
deg-
C
### RESULTS (linear interpolation)ID X FEM. ANALYTICAL1 0.00000 150.00000 150.00000 ERR(%): 0.000002 1.87500 102.62226 103.00165 ERR(%): 0.252923 3.75000 73.82803 74.37583 ERR(%): 0.365204 5.62500 58.40306 59.01653 ERR(%): 0.408985 7.50000 53.55410 54.18409 ERR(%): 0.41999
### RESULTS (linear interpolation)ID X FEM. ANALYTICAL1 0.00000 150.00000 150.00000 ERR(%): 0.000002 0.93750 123.71561 123.77127 ERR(%): 0.037113 1.87500 102.90805 103.00165 ERR(%): 0.062404 2.81250 86.65618 86.77507 ERR(%): 0.079265 3.75000 74.24055 74.37583 ERR(%): 0.090196 4.68750 65.11151 65.25705 ERR(%): 0.097037 5.62500 58.86492 59.01653 ERR(%): 0.101078 6.56250 55.22426 55.37903 ERR(%): 0.103179 7.50000 54.02836 54.18409 ERR(%): 0.10382
### RESULTS (quadratic interpolation)ID X FEM. ANALYTICAL1 0.00000 150.00000 150.00000 ERR(%): 0.000002 1.87500 102.98743 103.00165 ERR(%): 0.009483 3.75000 74.40203 74.37583 ERR(%): 0.017474 5.62500 59.02737 59.01653 ERR(%): 0.007225 7.50000 54.21426 54.18409 ERR(%): 0.02011
Quadratic interpolation provides more accurate solution, especially if X is close to 7.50cm.
0
max
0
cosh
cosh)( T
AhPX
xA
hP
TTxT S
Exact Solution
FEM1D