Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Heat Conduction
Kengo Nakajima
Information Technology Center
• Program
FEM1D 3
Keywords
• 1D Steady State Heat Conduction Problems
• Galerkin Method
• Linear Element
• Preconditioned Conjugate Gradient Method
FEM1D 4
heat generation/volume Q
T
Q 0
x x
heat generation/volume Q
T
Q 0
x x
Analytical Solution
heat generation/volume Q T
Q 0
x x
T 0@ x 0 T
0 @ x xmax
x
T Q
T Q x C1 C1 Q xmax , T 0 @ x xmax
1
T Q x 2 C1 x C2 C2 0, T 0 @ x 0
2
1 2 Q xmax
T Qx x
2
FEM1D 7
– Ti Temperature at i
T Ti
– Tj Temperature at j
– Temperature T on each
Tj
element is linear
function of x (Piecewise
Linear): L
x
T 1 2 x Xi Xj
FEM1D 8
– Ti Temperature at i
T Ti
– Tj Temperature at j
– Temperature T on each
Tj
element is linear
function of x (Piecewise
Linear): L
x
T 1 2 x Xi Xj
FEM1D 9
Piecewise Linear
1 2 3 4 5 Global Node ID
1 2 3 4 Element ID
1 2 1 2 1 2 1 2
1 2 3 4
Local Node ID
for each elem.
Gradient of temperature is constant in each
element (might be discontinuous at each “node”)
FEM1D 10
1.0 Ni Nj
x
Xi Xj
FEM1D 13
FEM1D 14
dT d N S S
T N {}, {} q dT
dx dx dx
: Heat flux at element surface[QL-2T-1]
FEM1D 15
obtained by considering
heat generation term Q : x=0 (xmin) x= xmax
d N T d N
dV V
V
dx dx S S
q N dS QN dV 0
T T
S V
q N dS Q N dV 0
T T
V
S V
S S
• Derivatives of Unknowns d N T d N
dV
(Neumann)
V
dx dx
– Naturally satisfied in weak form q N dS Q N dV 0
T T
– Secondary B.C.(第二種境界 S V
条件) dT
where q
– Natural B.C(自然境界条件) dx
FEM1D 18
k
(e) (e)
f
(e)
d N d N
T
k (e)
dV
V
dx dx
f (e)
QN dV q N dS
T T
V S
FEM1D 19
L
1 / L uj
1 / L, 1 / L A dx
0
1/ L
L
2x1 matrix 1x2 matrix
x
A L 1 1 A 1 1 Xi 0 Xj L
L2 1
1
dx
L 1 1
0
x x
N i 1 , N j
A: Sectional Area L L
L: Length
FEM1D 20
x x
N i 1 , N j
L L
N dV Q A
L
1 x / L Q AL 1 Heat Generation
V 0 x / L dx 2 1
T
Q (Volume)
1 : 1
A: Sectional Area
L: Length
FEM1D 21
L
1 x / L AL 1 Heat Generation
V Q N dV Q A0 x / L dx 2 1
T Q
(Volume)
0
q N dS q A x L
dT Surface Heat Flux
q A , q
T
S 1 dx
Global Equations
• Accumulate Element Equations:
K k , F f
: global vector of
This is the final linear equations
(global equations) to be solved.
FEM1D 23
ECCS2012 System
Creating Directory
>$ cd Documents
>$ mkdir 2013summer your favorite name
>$ cd 2013summer
>$ 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
FEM1D 24
Compile & GO !
>$ cd <$E-TOP>/1d
>$ cc –O 1d.c (or g95 –O 1d.f)
>$ ./a.out
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 Solver
1.e-8 Convergence Criteria for CG Solver
x=1
Element ID
1 2 3 4 5
Node ID (Global)
1 2 3 4
x=0 x=1 x=2 x=3 x=4
FEM1D 25
Results
>$ ./a.out
### TEMPERATURE
1 0.000000E+00 0.000000E+00
2 3.500000E+00 3.500000E+00
3 6.000000E+00 6.000000E+00
4 7.500000E+00 7.500000E+00
5 8.000000E+00 8.000000E+00
Computational Analytical
x=1
Element ID
1 2 3 4 5
Node ID (Global)
1 2 3 4
x=0 x=1 x=2 x=3 x=4
FEM1D 26
• As for Element-4:
A 1 1 Q AL 1
k
( 4)
f ( 4)
L 1 1 2 1
FEM1D 27
4
K k (e) + + +
e 1
4
F f (e) + + +
e 1
FEM1D 28
4
+1 -1
A
K k [ ] L
(e) -1 +1 +1 -1
+ -1 +1 + +1 -1 +
e 1 -1 +1 +1 -1
-1 +1
+1 -1 d 2T T 2Ti Ti 1
-1 +2 -1 A 2 dV i 1 dV
2
-1 +2 -1 V
dx V
L
L T 2Ti Ti 1
AL Ti 1 2Ti Ti 1
-1 +2 -1 A
-1 +1
i 1 2
L L
Something familiar …
FEM: Coefficient Matrices are generally sparse
(many ZERO’s)
FEM1D 29
• 2nd-Order Diff. at i
d d i1 i i i1
d 2
2
dx i 1/ 2 dx i1/ 2
x x i 1 2i i 1
dx i x x x2
FEM1D 30
Element-by-Element Operation
very flexible if each element has different material
property, size, etc.
( e ) A( e ) 1 1
k (e)
1 1
L( e )
+1 -1
K k (1) A(1) ( 2) A( 2)
4
(e) -1 +1 +1 -1
(1)
+ -1 +1
e 1 L L( 2 )
(3) A(3) ( 4) A( 4)
+1 -1 ( 3)
+
-1 +1 L +1 -1 L( 4 )
-1 +1
FEM1D 31
Element/Global Operations
1 2 3 4
1 2 3 4 5 Global Node ID
Local Node ID
e e e e
1 2 1 2 1 2 1 2
d N d N
T
d N d N
T
d N d N
T
d N d N
T
E dV E dV E dV E dV
V dx dx V dx dx V dx dx V dx dx
N dS X N dV 0 N dS X N dV 0 N dS X N dV 0 N dS X N dV 0
T T T T T T T T
S V S V S V S V
1 2 3 4
1 2 3 4 5
[ K ]{} {F }
D1 AU11 1 B1
Mapping Information needed,
AL D2 AU 21 B from element-matrix
21 2 2
AL31 D3 AU 31 3 B3 to global-matrix.
AL41 D4 AU 41 4 B4
AL51 D5 5 B5
FEM1D 32
Around the FEM in 3 minutes
Accumulation to
Global/overall Matrix
[K ]{} {F}
13 14 15 16 D X X X 1 F1
X D X X
X X F
7 8 9 2 2
X D X X X X 3 F3
9 10 11 12 X D X X 4 F4
X X D X X X 5 F5
4 5 6
X X X X D X X X X 6 F6
5 6 7 8 X X X X D X X X X F
7 7
X X X D X X 8 F8
1 2 3 X X D X X X F
9 9
1 2 3 4 X X X X D X X X X 10 F10
X X X X D X X X X 11 F11
X X X D X X 12 F12
X X D X 13 F13
X X X X D X 14 F
14
X X X X D X 15 F15
X X X D16 F16
FEM1D 33
• Program
FEM1D 34
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
35
FEM1D
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
36
FEM1D
Bad
Convergence strongly depends on problems, boundary
conditions (condition number etc.)
Preconditioning is required : Key Technology for
Parallel FEM
37
FEM1D 38
1
f x x, Ax x, b
2
1
f x h f x h, Ax b h, Ah Arbitrary vector h
2
1
f x h x h, A( x h) x h, b
2
1 1
x h, Ax x h, Ah x, b h, b
2 2
1 1 1 1
x, Ax h, Ax x, Ah h, Ah x, b h, b
2 2 2 2
1 1
x, Ax x, b h, Ax h, b h, Ah
2 2
1
f x h, Ax b h, Ah
2
FEM1D 46
(k ) (k )
1 2 (k )
2
f x k p k p , Ap ( k ) k p ( k ) , b Ax ( k ) f x ( k )
f x ( k ) k p ( k )
0 k
p ( k ) , b Ax ( k )
p(k ) , r (k )
(k )
k
(k )
p , Ap
(k )
p , Ap ( k )
r ( k ) b Ax ( k ) residual vector
FEM1D 47
Ap (k )
, y x ( k 1) p ( k ) , Ay Ax ( k 1) p ( k ) , b Ax ( k 1)
p (k )
, b A x ( k ) k p ( k ) p ( k ) , b Ax ( k ) k Ap ( k )
p (k )
, r ( k ) k Ap ( k ) p ( k ) , r ( k ) k p ( k ) , Ap ( k ) 0
k
p (k )
, r (k )
p (k )
, Ap ( k )
Thus, following relation is obtained:
Ap (k )
, y x ( k 1) Ap ( k ) , k 1 p ( k 1) 0 p ( k 1) , Ap ( k ) 0
FEM1D 49
r , Ap
( k 1) (k )
k
p , Ap
(k ) (k )
p ( k 1)
, Ap 0 p(k) is “conjugate” for matrix A
(k )
Proof (1/2)
p (i )
, r ( k 1) 0, i 0,1, , k
k
x ( k 1) x ( i 1) j
p
j i 1
( j)
(i 1) k
r ( k 1)
b Ax ( k 1)
b A x j p ( j)
j i 1
k k
b Ax (i 1)
j i 1
j Ap ( j)
r ( i 1)
j
Ap
j i 1
( j)
( i ) ( i 1)
p p , r j Ap
k
(i ) ( k 1) ( j)
,r
j i 1
Ap , y x 0
(k ) ( k 1)
(i ) k
Ap , y x
(k ) ( k 1)
p , r p , j Ap 0
(i ) ( i 1) ( j)
p , Ay Ax
(k )
( k 1)
j i 1 p , b Ax
(k )
( k 1)
p , r (k )
0
( k 1)
=0 =0
FEM1D 51
Proof (2/2)
r (i )
, r ( j ) 0 i j
0 p ( i ) , r ( k 1) r ( i ) i 1 p (i 1) , r ( k 1)
i 1 p ( i 1)
, r ( k 1)
r (i )
, r ( k 1)
r (i )
, r ( k 1)
p (k )
, r ( k ) r ( k ) , r ( k )
p (k )
, r ( k ) r ( k ) k 1 p ( k 1) , r ( k )
k 1 p ( k 1) , r ( k ) r ( k ) , r ( k ) r ( k ) , r ( k )
FEM1D 52
k,k
Usually, we use simpler definitions of k,k as follows:
p , b Ax p
(k )
(k ) (k )
, r (k ) r (k ) , r (k )
(k )
k
p , Ap p
(k ) (k ) (k )
, Ap p , Ap ( k )
(k )
p , r r , r
(k ) (k ) (k ) (k )
r ( k 1)
, Ap (k )
r ( k 1)
, r ( k ) r ( k 1)
r ( k 1)
, r ( k 1)
k k
FEM1D 53
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=1
p(1)= z(0)
else x
i-1= i-1/i-2
p(i)= z(i-1) + i-1 p(i-1)
endif
q(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 56
ILU(0), IC(0)
• Widely used Preconditioners for Sparse Matrices
– Incomplete LU Factorization
– Incomplete Cholesky Factorization (for Symmetric
Matrices)
D1 0 ... 0 0
0 D 0 0
2
M ... ... ...
0 0 DN 1 0
0 0 ... 0 DN
• Program
FEM1D 60
{Y}= [A]{X} D
X
X X X 1 F1
F
D X X X X 2 2
X D X X X X 3 F3
4 F4
do i= 1, N X D X X
X X D X X X 5 F5
X X X X D X X X X 6 F6
Y(i)= Diag(i)*X(i)
X X X
X X
X D X
X D
X X X
X X
F
7 7
8 F8
do k= Index(i-1)+1, Index(i)
X X
X X X
D X
X D X
X X
X X X
F
9 9
10 F10
Y(i)= Y(i) + Amat(k)*X(Item(k))
X X X X D X X X X 11 F11
X X X D X X 12 F12
enddo
X X
X X X
D X
X D X
13 F13
F
14 14
CRS or CSR ?
for Compressed Row Storage
• In Japan and USA, “CRS” is very general for
abbreviation of “Compressed Row Storage”, but they
usually use “CSR” in Europe (especially in France).
• “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.
FEM1D 64
{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 65
{Y}= [A]{X}
do j= 1, N
Y(j)= 0.d0
do i= 1, N
Y(j)= Y(j) + A(i,j)*X(i)
enddo
enddo
FEM1D 66
• Program
FEM1D 74
Variable/Arrays (1/2)
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, I O Name of Vectors in CG
DD
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 Q
COND R I Thermal Conductivity
FEM1D 77
Variable/Arrays (2/2)
Name Type Size I/O Definition
X R N O Location of Each Node
PHI R N O Temperature of Each Node
Rhs R N O RHS Vector
Diag R N O Diagonal Components
W R (N,4) O Work Array for CG
Amat 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 Element
Kmat R (2,2) O Element Matrix [k]
Emat R (2,2) O Element Matrix
FEM1D 78
N= NE + 1
allocate (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.d0
AMAT= 0.d0 Amat: Non-Zero Off-Diag. Comp.
DIAG= 0.d0
RHS= 0.d0 Item: Corresponding Column ID
X= 0.d0
FEM1D 80
Element/Global Operations
1 2 3 4
1 2 3 4 5 Global Node ID
Local Node ID
e e e e
1 2 1 2 1 2 1 2
d N d N
T
d N d N
T
d N d N
T
d N d N
T
E dV E dV E dV E dV
V dx dx V dx dx V dx dx V dx dx
N dS X N dV 0 N dS X N dV 0 N dS X N dV 0 N dS X N dV 0
T T T T T T T T
S V S V S V S V
1 2 3 4
1 2 3 4 5
[ K ]{} {F }
D1 AU11 1 B1 Number of non-zero off-
AL B
21 D2 AU 21 2 2 diag. components is 2 for
AL31 D3 AU 31 3 B3
each node. This number
AL41 D4 AU 41 4 B4
is 1 at boundary nodes).
AL51 D5 5 B5
FEM1D 81
1 2 3 4
1 2 3 4 5
0 1 2 3
0 1 2 3 4
e e e e
0 1 0 1 0 1 0 1
FEM1D 82
General Elements: k1
“in2” as a off-diag. component of “in1”
!C +-----------------+
!C | MATRIX ASSEMBLE |
!C +-----------------+
!C===
do icel= 1, NE
in1= ICELNOD(2*icel-1)
in2= ICELNOD(2*icel )
X1 = X(in1)
X2 = X(in2)
DL = dabs(X2-X1) icel
in1 in2
cK= AREA*COND/DL
EMAT(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) Non-zero Off-Diag. at i-th row:
DIAG(in2)= DIAG(in2) + EMAT(2,2) Index(i-1)+1, Index(i-1)+2
if (icel.eq.1) then
k1= INDEX(in1-1) + 1
else i-1 in1 in2
k1= INDEX(in1-1) + 2
endif INDEX(i-1)+1 INDEX(i-1)+2
k2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)
A 1 1 k1
AMAT(k2)= AMAT(k2) + EMAT(2,1)
Emat k (e)
QN= 0.50d0*QV*AREA*DL L 1 1
RHS(in1)= RHS(in1) + QN
RHS(in2)= RHS(in2) + QN
enddo
!C===
FEM1D 93
General Elements: k2
“in1” as a off-diag. component of “in2”
!C +-----------------+
!C | MATRIX ASSEMBLE |
!C +-----------------+
!C===
do icel= 1, NE
in1= ICELNOD(2*icel-1)
in2= ICELNOD(2*icel )
X1 = X(in1)
X2 = X(in2)
DL = dabs(X2-X1) icel
in1 in2
cK= AREA*COND/DL
EMAT(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) Non-zero Off-Diag. at i-th row:
DIAG(in2)= DIAG(in2) + EMAT(2,2) Index(i-1)+1, Index(i-1)+2
if (icel.eq.1) then
k1= INDEX(in1-1) + 1
else in1 in2 i+1
k1= INDEX(in1-1) + 2
endif INDEX(i-1)+1 INDEX(i-1)+2
k2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)
A 1 1
AMAT(k2)= AMAT(k2) + EMAT(2,1)
Emat k (e)
QN= 0.50d0*QV*AREA*DL L 1 1
RHS(in1)= RHS(in1) + QN
RHS(in2)= RHS(in2) + QN
enddo k2
!C===
FEM1D 94
0-th Element: k1
“in2” as a off-diag. component of “in1”
!C +-----------------+
!C | MATRIX ASSEMBLE |
!C +-----------------+
!C===
do icel= 1, NE
in1= ICELNOD(2*icel-1)
in2= ICELNOD(2*icel )
X1 = X(in1)
X2 = X(in2)
DL = dabs(X2-X1) Icel=1
in1 in2
cK= AREA*COND/DL
EMAT(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)
Non-zero Off-Diag. at i-th row:
DIAG(in2)= DIAG(in2) + EMAT(2,2) Index(i-1)+1 only
if (icel.eq.1) then
k1= INDEX(in1-1) + 1
else in1 in2
k1= INDEX(in1-1) + 2
endif INDEX(i-1)+1
k2= INDEX(in2-1) + 1
AMAT(k1)= AMAT(k1) + EMAT(1,2)
A 1 1 k1
AMAT(k2)= AMAT(k2) + EMAT(2,1)
Emat k
(e)
QN= 0.50d0*QV*AREA*DL L 1 1
RHS(in1)= RHS(in1) + QN
RHS(in2)= RHS(in2) + QN
enddo
!C===
FEM1D 95
!C
!C-- X=Xmin
i= 1
jS= INDEX(i-1)
AMAT(jS+1)= 0.d0
DIAG(i)= 1.d0
RHS (i)= 0.d0
do k= 1, NPLU
if (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo
!C===
FEM1D 97
heat generation/volume Q
T
Q 0
x x
AMAT(jS+1)= 0.d0
DIAG(i)= 1.d0
RHS (i)= 0.d0
do k= 1, NPLU
if (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo
!C===
FEM1D 100
do k= 1, NPLU
if (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo
!C===
FEM1D 101
AMAT(jS+1)= 0.d0
DIAG(i)= 1.d0
RHS (i)= 0.d0
do k= 1, NPLU
if (ITEM(k).eq.1) AMAT(k)= 0.d0
enddo
!C===
if T1≠ 0
!C
!C +---------------------+
!C | BOUNDARY CONDITIONS |
Column components of boundary nodes
!C +---------------------+ (Dirichlet B.C.) are moved to RHS and
!C=== eliminated for keeping symmetrical feature
!C of the matrix.
!C-- X=Xmin
i= 1
Index[ j 1]1
Amat
jS= INDEX(i-1)
Diag j j k Item[ k ] Rhs j
AMAT(jS+1)= 0.d0 k Index[ j ]
DIAG(i)= 1.d0
RHS (i)= PHImin
do i= 1, N
do k= INDEX(i-1)+1, INDEX(i)
if (ITEM(k).eq.1) then
RHS (i)= RHS(i) – AMAT(k)*PHImin
AMAT(k)= 0.d0
endif
enddo
enddo
!C===
FEM1D 103
if T1≠ 0
!C
!C +---------------------+ Index[ j 1]1
!C | BOUNDARY CONDITIONS |
!C +---------------------+
!C===
Diag j j Amat
k Index[ j ], k k s
k Item[ k ]
do i= 1, N
do k= INDEX(i-1)+1, INDEX(i)
if (ITEM(k).eq.1) then
RHS (i)= RHS(i) – AMAT(k)*PHImin
AMAT(k)= 0.d0
endif Column components of boundary nodes
enddo
enddo
(Dirichlet B.C.) are moved to RHS and
!C=== eliminated for keeping symmetrical feature
of the matrix.
FEM1D 104
T 0@ x 0 T
0 @ x xmax
x
0
q N dS q A
dT
q A , q
T
xL Surface Flux
S 1 dx
Preconditioned CG Solver
Compute r(0)= b-[A]x(0)
for i= 1, 2, …
D1 0 ... 0 0
0 D 0 0
solve [M]z(i-1)= r(i-1)
2
i-1= r(i-1) z(i-1)
if i=1
M ... ... ...
p(1)= z(0) 0 0 DN 1 0
else 0 0 ... 0 DN
i-1= i-1/i-2
p(i)= z(i-1) + i-1 p(i-1)
endif
q(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 106
CG Solver (1/6)
!C
!C +---------------+
!C | CG iterations |
!C +---------------+
!C===
R = 1
Reciprocal numbers (逆数)of diagonal
Z = 2 components are stored in W(i,DD).
Q = 2 Computational cost for division is
P = 3
usually expensive.
DD= 4
do i= 1, N
W(i,DD)= 1.0D0 / DIAG(i)
enddo
FEM1D 108
CG Solver (1/6)
!C
!C +---------------+ Compute r(0)= b-[A]x(0)
!C | CG iterations | for i= 1, 2, …
!C +---------------+ solve [M]z(i-1)= r(i-1)
!C===
R = 1
i-1= r(i-1) z(i-1)
Z = 2 if i=1
Q = 2 p(1)= z(0)
P = 3 else
DD= 4
i-1= i-1/i-2
do i= 1, N p(i)= z(i-1) + i-1 p(i-1)
W(i,DD)= 1.0D0 / DIAG(i) endif
enddo
q(i)= [A]p(i)
i = i-1/p(i)q(i)
W(i,1)= W(i,R) ⇒ {r} x(i)= x(i-1) + ip(i)
W(i,2)= W(i,Z) ⇒ {z} r(i)= r(i-1) - iq(i)
check convergence |r|
W(i,2)= W(i,Q) ⇒ {q} end
W(i,3)= W(i,P) ⇒ {p}
W(i,4)= W(i,DD) ⇒ 1/{D}
FEM1D 109
CG Solver (2/6)
!C Compute r(0)= b-[A]x(0)
!C-- {r0}= {b} - [A]{xini} | for i= 1, 2, …
!C 初期残差 solve [M]z(i-1)= r(i-1)
do i= 1, N i-1= r(i-1) z(i-1)
W(i,R) = DIAG(i)*PHI(i) if i=1
do j= INDEX(i-1)+1, INDEX(i)
W(i,R) = W(i,R) + AMAT(j)*PHI(ITEM(j))
p(1)= z(0)
enddo else
enddo i-1= i-1/i-2
p(i)= z(i-1) + i-1 p(i-1)
BNRM2= 0.0D0
do i= 1, N endif
BNRM2 = BNRM2 + RHS(i) **2 q(i)= [A]p(i)
W(i,R)= RHS(i) - W(i,R) i = i-1/p(i)q(i)
enddo
x(i)= x(i-1) + ip(i)
BNRM2=|b|2 r(i)= r(i-1) - iq(i)
for convergence criteria check convergence |r|
of CG solvers end
FEM1D 110
CG Solver (3/6)
do iter= 1, ITERmax Compute r(0)= b-[A]x(0)
for i= 1, 2, …
!C
!C-- {z}= [Minv]{r} solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)
do i= 1, N if i=1
W(i,Z)= W(i,DD) * W(i,R)
enddo
p(1)= z(0)
else
!C i-1= i-1/i-2
!C-- RHO= {r}{z} p(i)= z(i-1) + i-1 p(i-1)
RHO= 0.d0 endif
do i= 1, N q(i)= [A]p(i)
RHO= RHO + W(i,R)*W(i,Z) i = i-1/p(i)q(i)
enddo
x(i)= x(i-1) + ip(i)
r(i)= r(i-1) - iq(i)
check convergence |r|
end
FEM1D 111
CG Solver (4/6)
!C Compute r(0)= b-[A]x(0)
!C-- {p} = {z} if ITER=1 for i= 1, 2, …
!C BETA= RHO / RHO1 otherwise
solve [M]z(i-1)= r(i-1)
if ( iter.eq.1 ) then i-1= r(i-1) z(i-1)
do i= 1, N if i=1
W(i,P)= W(i,Z)
enddo
p(1)= z(0)
else else
BETA= RHO / RHO1 i-1= i-1/i-2
do i= 1, N p(i)= z(i-1) + i-1 p(i-1)
W(i,P)= W(i,Z) + BETA*W(i,P)
enddo endif
endif q(i)= [A]p(i)
i = i-1/p(i)q(i)
!C
!C-- {q}= [A]{p}
x(i)= x(i-1) + ip(i)
r(i)= r(i-1) - iq(i)
do i= 1, N check convergence |r|
W(i,Q) = DIAG(i)*W(i,P) end
do j= INDEX(i-1)+1, INDEX(i)
W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P)
enddo
enddo
FEM1D 112
CG Solver (5/6)
!C Compute r(0)= b-[A]x(0)
!C-- ALPHA= RHO / {p}{q} for i= 1, 2, …
C1= 0.d0 solve [M]z(i-1)= r(i-1)
do i= 1, N i-1= r(i-1) z(i-1)
C1= C1 + W(i,P)*W(i,Q) if i=1
enddo
ALPHA= RHO / C1
p(1)= z(0)
else
!C i-1= i-1/i-2
!C-- {x}= {x} + ALPHA*{p} p(i)= z(i-1) + i-1 p(i-1)
!C {r}= {r} - ALPHA*{q}
endif
do i= 1, N q(i)= [A]p(i)
PHI(i)= PHI(i) + ALPHA * W(i,P) i = i-1/p(i)q(i)
W(i,R)= W(i,R) - ALPHA * W(i,Q)
enddo
x(i)= x(i-1) + ip(i)
r(i)= r(i-1) - iq(i)
check convergence |r|
end
FEM1D 113
CG Solver (6/6)
DNRM2 = 0.0 Compute r(0)= b-[A]x(0)
do i= 1, N for i= 1, 2, …
DNRM2= DNRM2 + W(i,R)**2
enddo solve [M]z(i-1)= r(i-1)
i-1= r(i-1) z(i-1)
RESID= dsqrt(DNRM2/BNRM2) if i=1
if ( RESID.le.EPS) goto 900
p(1)= z(0)
RHO1 = RHO i-2 else
i-1= i-1/i-2
p(i)= z(i-1) + i-1 p(i-1)
enddo
900 continue endif
q(i)= [A]p(i)
i = i-1/p(i)q(i)
DNorm2 r Ax b x(i)= x(i-1) + ip(i)
Resid Eps
BNorm2 b b r(i)= r(i-1) - iq(i)
check convergence |r|
Control Data input.dat end
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 Solver
1.e-8 Convergence Criteria for CG Solver
FEM1D 114
NE=20, dX=5
### DISPLACEMENT
1 0.000000E+00 -0.000000E+00
2 4.259851E-03 4.260561E-03
3 8.719160E-03 8.720685E-03
4 1.339752E-02 1.339999E-02
……
17 1.145876E-01 1.146641E-01
18 1.295689E-01 1.296764E-01
19 1.473466E-01 1.475060E-01
20 1.692046E-01 1.694607E-01
21 1.975734E-01 1.980421E-01
FEM1D 116
• Boundary Condition
7.50cm
– x=0 : Fixed Temperature
TS 150C – x=7.5 : Insulated
• Convective Heat Transfer
on Cylindrical Surface
– q= h (T-T0)
– q:Heat Flux
Convective Heat Transfer on
Cylindrical Surface • Heat Flow/Unit Surface
Area/sec.
FEM1D 119
deg-C
4 5.62500 58.40306 59.01653 ERR(%): 0.40898
5 7.50000 53.55410 54.18409 ERR(%): 0.41999