u

講義予定(案)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
( 9/ 2) 数値シミュレーションの手続き (テキスト第1章)
( 9/ 9) 偏微分方程式と解析解 (テキスト第2章)
( 9/16) 休講
( 9/30) 差分方程式とそのスキーム (テキスト第3章) +変換 (テキスト第4章)
(10/ 7) 計算 (テキスト第5章)+連立一次方程式の解法(テキスト第6章)
(10/21) 流れ関数‐ポテンシャルによる解法(テキスト第7章)
(10/28) 流速‐圧力を用いた解法 (テキスト第7章)
(11/ 4) 熱流体解析と多相流解析
(11/11) 乱流の数値解析 by 金子暁子先生
(11/18) 数値解析の実際 by 渡辺正先生(JAEA)
(11/25) (予備日)
変換 ー変化する方程式の定性的性質ー
工学への応用
(開発、設計、性能評価)
変換
(差分近似)
(離散化)
仮説
(定式化)
物理現象
(熱流体挙動)
数学モデル
(偏微分方程式)
数値計算
計算モデル
(差分方程式)
適合性
適切性
安定性
Laxの同等定理
厳密解
収束性
差分解
代数方程式
数値解
有限差分方程式とそのスキーム
空間(x,y)と時・空間(x,t)の離散化
Δx
Δx
終端値
j+1
n+1
Δy
j
j-1
y
Δt
n
n-1
t
i-1
境界点
i
i+1
内点
x
0
i-1
i
i+1
初期値
x
差分法における空間の記述
Δx
連続的な空間(x,y)を等間隔に
x方向にΔx
y方向にΔy
j+1
で分割。
j
x方向にi番目、
y方向にj番目
おける変数を
u(iΔx,jΔy)
j-1
y
ui , j
と記述する。
Δy
i-1
境界点
i
i+1
内点
x
差分法における時空間の記述
連続的な時・空間(x,t)を等間隔に
Δx
空間をΔx、
終端値
時間をΔt
で分割。
x方向にi番目、
n番目の時間
における変数
u(iΔx,nΔt)を
n
i
u
と記述する。
n+1
Δt
n
n-1
t
0
i-1
i
i+1
初期値
x
空間の前進差分近似(1/2)
ui+1,jを点(i,j)においてxについてTaylor展開し
ui +1, j
3
1 ∂ 2u
1
u
∂u
∂
3
2
x
x
= ui , j +
Δx +
Δ
+
Δ
+L
3
2
2 ∂x i , j
6 ∂x i , j
∂x i , j
∂u / ∂x i , j について解く
ui + 1 , j − ui , j 1 ∂ 2 u
∂u
2
Δ
x
+
O
Δ
x
−
=
Δx
2 ∂x 2 i , j
∂x i , j
( )
=
ui + 1 , j − ui , j
Δx
+ O (Δx )
空間の前進差分近似(2/2)
これは、導関数 ∂u / ∂x を表現する差分商 Δu / Δx の1つが
∂u Δu ui +1, j − ui , j
≈
=
+ O (Δx )
∂x Δ x
Δx
であることを示している。これを空間の前進差分近似
(forward space difference)という。
Taylor展開の打ち切りの状況から、この式は空間について
「1次の正確度を持つ」という。
空間の後退差分近似(1/2)
ui-1,jを点(i,j)においてxについてTaylor展開
ui −1, j
3
∂
∂u
1 ∂ 2u
1
u
2
3
Δ
−
Δ
+L
= ui , j −
Δx +
x
x
2
3
∂x i , j
2 ∂x i , j
6 ∂x i , j
∂u / ∂x i , j について解く
∂u
∂x
=
i, j
=
ui , j − ui −1, j
Δx
ui , j − ui −1, j
Δx
1 ∂ 2u
+
2 ∂x 2
+ O (Δx )
( )
Δx + O Δx 2
i, j
空間の後退差分近似(2/2)
これは、導関数 ∂u / ∂x を表現する差分商 Δu / Δx の1つが
∂u Δu ui , j − ui − 1 , j
≈
=
+ O (Δx )
∂x Δ x
Δx
であることを示している。これを空間の後退差分近似
(backward space difference)という。
Taylor展開の打ち切りの状況から、この式は空間について
1次の正確度を持つ。
空間の中心差分近似(1/2)
ui+1,j 、ui-1,jを点(i,j)においてxについてTaylor展開
∂u
1 ∂ 2u
1 ∂ 3u
2
3
= ui , j +
Δx +
Δ
+
Δ
+L
x
x
2
3
∂x i , j
2 ∂x i , j
6 ∂x i , j
ui +1, j
ui −1, j
∂u
1 ∂ 2u
1 ∂ 3u
2
= ui , j −
Δx +
Δx −
Δx 3 + L
2
3
∂x i , j
2 ∂x i , j
6 ∂x i , j
上式から下式を差し引く
ui +1, j − ui −1, j
1 ∂ 3u
∂u
3
Δ
+L
x
Δx + 2 ⋅
= 2⋅
6 ∂x 3 i , j
∂x i , j
∂u / ∂x i , j について解く
∂u
∂x
=
i, j
ui + 1, j − ui −1, j
2Δx
( )
+ O Δx 2
空間の中心差分近似(2/2)
これは、導関数 ∂u / ∂x を表現する差分商 Δu / Δx の1つが
( )
∂u Δu ui + 1, j − ui −1, j
≈
=
+ O Δx 2
∂x Δ x
2Δx
であることを示している。これを空間の中心差分近似
(centered space difference)という。
Taylor展開の打ち切りの状況から、この式は空間について
2次の正確度を持つ。
2階の導関数の差分商(1/2)
ui+1,j 、ui-1,jを点(i,j)においてxについてTaylor展開
ui +1, j
∂u
1 ∂ 2u
1 ∂ 3u
2
= ui , j +
Δx +
Δx +
Δx 3 + L
2
3
∂x i , j
2 ∂x i , j
6 ∂x i , j
ui −1, j
∂u
1 ∂ 2u
1 ∂ 3u
2
3
= ui , j −
Δx +
Δ
−
Δ
+L
x
x
2
3
∂x i , j
2 ∂x i , j
6 ∂x i , j
上式と下式を足し合わせる
ui +1, j + ui −1, j
∂ 2 u / ∂x 2
∂ 2u
∂x
i, j
について解く
i,j
=
2
∂ 2u
= 2ui , j + 2 Δx 2 + L
∂x i , j
ui + 1, j − 2ui , j + ui −1, j
Δx
2
( )
+ O Δx 2
2階の導関数の差分商(2/2)
これは、導関数 ∂u / ∂x を表現する差分商 Δu / Δx の1つが
( )
Δu ui + 1, j − 2ui , j + ui −1, j
2
O
x
≈
=
+
Δ
∂x 2 Δ x
Δx 2
∂ 2u
であることを示している。これを空間の中心差分近似
(centered space difference)という。
Taylor展開の打ち切りの状況から、この式は空間について
2次の正確度を持つ。
空間の差分商(1/2)
ui , j の時空間の点(i,j)における空間についての差分商
∂u uin+1 − uin
=
+ O (Δx )
Δx
∂x
(前進差分近似)
∂u uin − uin−1
+ O (Δx )
=
Δx
∂x
(後退差分近似)
( )
∂u uin+ 1 − uin−1
=
+ O Δx 2
2Δx
∂x
∂ 2u
∂x
2
=
uin+ 1 − 2uin + uin−1
Δx
2
(中心差分近似)
( )
+ O Δx 2
時空間の差分商(2/2)
u in の時空間の点(i,n)における時間についての差分商
∂u uin+1 − uin
=
+ O (Δt )
∂t
Δt
(前進差分近似)
∂u uin − uin −1
=
+ O (Δt )
∂t
Δt
(後退差分近似)
( )
∂u uin + 1 − uin −1
=
+ O Δt 2
2 Δt
∂t
∂ 2u
∂t
2
=
uin + 1 − 2uin + uin −1
Δt
2
(中心差分近似)
( )
+ O Δt 2
波動方程式(双曲型)の差分スキーム
波動方程式の有限差分スキーム
波動方程式
2
∂ 2u
2 ∂ u
−c
=0
2
2
∂t
∂x
差分方程式(中心差分)
n
n
n
uin +1 − 2uin + uin −1
2 ui + 1 − 2ui + ui −1
2
2
−
c
+
O
Δ
t
+
O
Δ
x
=0
2
2
Δt
Δx
( ) ( )
uin+1 について解く。
Δt
λ =c
u = − u + λ u + 2(1 − λ )u + λ u
Δx
→ CFL(Courant-Friedrichs-Lewy)スキーム
λ:CFL数(CFL number)
n+1
i
n −1
i
2
n
i +1
2
n
i
2
n
i −1
波動方程式の差分スキームのプログラム例
uin+1についての差分方程式
(
)
uin+1 = − uin −1 + λ2 uin+1 + 2 1 − λ2 uin + λ2 uin−1
Δt
λ =c
Δx
uin+1 を求めるためのプログラム (BASIC)
1490
1500
1510
1520
*CFL
FOR I=2 TO IM1
U(I)=-U2(I)+L2*U1(I+1)+2*(1-L2)*U1(I)+L2*U1(I-1)
NEXT I:RETURN
対流方程式の(陽)差分スキーム
対流方程式:
∂u
∂u
=0
+c
∂x
∂t
差分方程式:
uin+1 − uin
uin+1 − uin−1
+c
+ O (Δt ) + O Δx 2 = 0
Δt
2Δx
( )
uin+1 について解く。
uin + 1
=
uin
(
C n
−
ui + 1 − uin−1
2
)
Δt
C=c
Δx
→ FTCS(Forward-Time Centered Space)スキーム
C:Courant数(Courant number)
クーラン(Courant)条件
„
„
速度をcとすると、微小時間⊿t に進む距離は、c ・⊿tと
なる。物理的には、この距離が、差分した微小区間⊿xを
超えると計算が発散してしまう。そのためには、
cΔt < Δx
でなければならない。すなわち、以下の条件を、Courant
条件といい、計算結果の安定性に影響を与えものとであ
る。
cΔt
<1
cΔt
Δx
Δx
対流方程式の差分スキーム(その1)
(FTCSスキーム)
Δx
uin+1 についての差分方程式
uin + 1 = uin −
(
C n
ui + 1 − uin−1
2
)
Δt
C=c
Δx
n+1
Δt
n
t
n-1
FTCSスキームによるプログラム例
i-1
1620 *FTCS
1630 FOR I=2 TO IM1
1640 TP1=-.5*CDTDX*(UN(I+1)-UN(I-1))
1660 U(I)=UN(I)+TP1:NEXT I:RETURN
i
i+1
x
対流方程式の差分スキーム(その2)
蛙とび法(Leap frog scheme)
Δx
蛙とび法による差分方程式
uin + 1
=
uin −1
−C
(
uin+ 1
− uin−1
)
n+1
Δt
n
n-1
t 0
蛙とび法によるプログラム例
1670 *LPFRG
1680 FOR I=2 TO IM1
1690 TP1=-CDTDX*(UN(I+1)-UN(I-1))
1710 U(I)=U2(I)+TP1:NEXT I:RETURN
i-1
i i+1
x
対流方程式の差分スキーム(その3)
風上差分(Upwind scheme)
Δx
風上差分法による差分方程式
(
− C (u
uin + 1 = uin − C uin − uin− 1
n+ 1
i
u
=u
n
i
n
i+1
−u
n
i
)
)
C≥0
Δt
n
C≤0
風上差分法によるプログラム例
1570
1580
1590
1610
n+1
n-1
t
0
*UPWND
FOR I=2 TO IM1
TP1=-CDTDX*(UN(I)-UN(I-1))
U(I)=UN(I)+TP1:NEXT I:RETURN
i-1
i i+1
C≥0
x
対流方程式の陰解法(Implicit scheme) (1/3)
„
„
„
対流方程式:
∂u
∂u
=0
+c
∂t
∂x
対流方程式を時刻n+1において、時間:後退差分近似、
空間:中心差分近似すると、次のような差分方程式が得
られる。
uin+ 1 − uin
uin++11 − uin−+11
= −c
Δt
2 Δx
n+ 1
uin++11 、 uin + 1 、 ui − 1 を変数値として差分スキームを求
めると、
1 n+ 1
1 n+ 1
n+ 1
αui + 1 + ui − αui − 1 = uin
2
2
対流方程式の陰解法(Implicit scheme) (2/3)
„
„
0 ≤ x ≤ 1 の区間をi分割した場合を考えると: t
i=1のとき
−
„
i=2のとき
−
„
α
2
α
i=3のとき
−
„
i=iのとき
−
„
2
u0n + 1 + u1n + 1 +
u1n + 1 + u2n + 1 +
α
2
α
2
α
2
α
u2n + 1 + u3n + 1 +
uin−+11 + uin + 1 +
2
2
n+1
n
u3n + 1 = u2n
2
α
Δt
u2n + 1 = u1n
α
u4n + 1 = u3n
uin++11 = −
以上の連立方程式を行列で表すと、
Δx
α
0
1
…
α⎞
⎛
uin−+11 + ⎜ 1 + ⎟ uin + 1 = uin
2
2⎠
⎝
i-1
i
x
対流方程式の陰解法(Implicit scheme) (3/3)
„
差分方程式の行列式:
α
⎡
⎢ 1
⎢ α
⎢−
⎢ 2
⎢ 0
⎢
⎢
⎢ M
⎢
⎢ M
⎢
⎢
⎢ 0
⎣
„
2
1
−
α
2
O
0
α
L
2
O
1
O
O
O
O −
L
L
α
2
0
L
O
α
2
1
−
α
2
⎤
0⎥
⎡ n α n+ 1 ⎤
⎥ n+ 1
u + u
M ⎥ ⎡ u1 ⎤ ⎢ 1 2 0 ⎥
⎥
n
⎥ ⎢ u n+ 1 ⎥ ⎢
u
2
2
⎢
⎥ ⎢
⎥
M ⎥⎥ ⎢ M ⎥ ⎢
⎥
M
⎥
⎥⎢ M ⎥ = ⎢
M
⎥ ⎢
⎥
0 ⎥⎢
n
1
n
+
⎥
⎥ ⎢ ui − 2 ⎥ ⎢
ui − 1
α ⎥ ⎢ n+ 1 ⎥ ⎢
⎥
α
n
n+ 1
u
⎢
⎥
2 ⎥ ⎣ i − 1 ⎦ ⎢ ui − ui ⎥
2
⎣
⎦
⎥
1⎥
⎦
境界条件
∂uin
=0
∂x
を利用して決定する
以上の行列の式を解くことによって、各時刻における変位が求まる。
Fi+1/2
最新の空間差分スキーム
- QUICK -
i+1
セルiで積分
1次元対流方程式
∂φ
∂ (uφ )
=−
∂t
i
φ
∂x
n+ 1
i
= φ − Δt
n
i
Fi n+ 1 2 − Fi n− 1 2
Vi
Fi n+ 1 2 = uin+ 1 2φin+ 1 2 S i + 1 2
セル境界の物理量 uin−+11/ 2 を境界の前後を挟む2つのセルと
風上側に1つ離れたセルの値を用いて2次の多項式で内挿
⎧1
⎪ (− φ i − 1 + 6φ i + 3φ i + 1 ) u ≥ 0
⎪8
⎪ 1 (− φ + 6φ + 3φ ) u < 0
i+2
i+1
i
⎪⎩ 8
φi + 1 2 = ⎨
差分式:
φ
n+ 1
i
3φi + 1 + 3φi − 7 φi − 1 + φi − 2
⎧ n
tu
φ
Δ
−
⎪⎪ i
8 Δx
=⎨
⎪φ n + Δtu 3φi − 1 + 3φi − 7 φi + 1 + φi + 2
⎪⎩ i
8 Δx
u≥0
u<0
最新の空間差分スキーム
- QUICKEST -
Fi+1/2
i
i+1
uin−+11/ 2
セル境界の物理量
を境界の前後を挟む2つのセルと
風上側に2つ離れたセルの値を用いて2次の多項式で内挿
2
c
c
n
n
n
n
⎧ φ − (2φ i +1 + 3φ i − 6φ i −1 + φ i − 2 ) + (φ in+1 − 2φ in + φ in−1 )
⎪
6
2
⎪
c3 n
⎪
− (φ i +1 − 3φ in + 3φ in−1 − φ in− 2 ) c ≥ 0
6
⎪
=⎨
c
c2 n
n
n
n
n
n
⎪ φ i + (2φ i −1 + 3φ i − 6φ i +1 + φ i + 2 ) + (φ i −1 − 2φ in + φ in+1 )
6
2
⎪
3
⎪
c
+ (φ in−1 − 3φ in + 3φ in+1 − φ in+ 2 ) c < 0
⎪
6
⎩
n
i
φ in +1
差分式:
φi + 1 2
⎧1
⎪⎪ (φ i + φ i + 1 ) −
2
=⎨
⎪ 1 (φ + φ ) −
i+1
⎪⎩ 2 i
c
1 − c2
(φi + 1 − φi ) −
(φi + 1 − 2φi + φi − 1 )
2
6
c
1 − c2
(φi + 1 − φi ) −
(φi + 2 − 2φi + 1 + φi )
2
6
最新の空間差分スキーム
- TVD (Total Variation Diminishing) (1/2)セル境界で物理量を内挿する際、数値振動が発生する場所には1次精度の
風上差分を、それ以外では高次精度の差分スキームを用いる。
φin+ 1 2
(
)
⎧ n 1 +
n
n
φ
ψ
φ
φ
u≥0
+
−
i
i
1
2
i
i
−
−1
⎪⎪
2
=⎨
⎪φ n − 1 ψ − φ n − φ n
u<0
i+1
⎪⎩ i + 1 2 i + 3 2 i + 2
(
)
ここで、ψはリミッターで近傍のφの分布によって値を変化させる
n
n
−
φ
φ
+
i
+
1
i
ψ i+− 1 2 = ψ i+− 1 2 (ri+− 1 2 ) ただし ri − 1 2 = n
φi − φin− 1
ψ i−+ 3 2 = ψ i−+ 3 2 (ri−+ 3 2 )
φin+ 1 − φin
−
ri + 3 2 = n
φi + 2 − φin+ 1
TVD条件を満たす代表的なリミッターには、以下のminmod関数がある
ψ i+− 1 2 = min mod (1 , ri+− 1 2 )
⎧x
⎪
min mod ( x , y ) = ⎨ y
⎪0
⎩
x ≤ y and xy ≥ 0
x > y and xy ≥ 0
xy < 0
最新の空間差分スキーム
- TVD (Total Variation Diminishing) (2/2)φin+ 1 2
(
)
⎧ n 1 +
n
n
u≥0
φ
ψ
φ
φ
+
−
i −1
ψ i+− 1 2 = ψ i+− 1 2 ri+− 1 2
⎪⎪ i 2 i − 1 2 i
=⎨
ψ i−+ 3 2 = ψ i−+ 3 2 ri−+ 3 2
⎪φ n − 1 ψ − φ n − φ n
u<0
i+1
⎪⎩ i + 1 2 i + 3 2 i + 2
(
(
(
)
ψ i+− 1 2 = min mod (1 , ri+− 1 2 )
⎧x
⎪
min mod ( x , y ) = ⎨ y
⎪0
⎩
⎧1
⎪
minmod (1, r ) = ⎨r
⎪0
⎩
)
)
+
i −1 2
φin+ 1 − φin
= n
φi − φin− 1
−
i+3 2
φin+ 1 − φin
= n
φi + 2 − φin+ 1
r
r
x ≤ y and xy ≥ 0
x > y and xy ≥ 0
xy < 0
1≤r
0≤r <1
r <0
これにより、3種類の差分スキームを状況に応じて使い分けることができる。
・ 1<rの場合: 変数の勾配が風下方向の増加 → 2次風上差分を適用
・ 0<r<1の場合:変数の勾配が風下方向に減少 → 2次中心差分を適用
・ r<0の場合: 変数の勾配が逆転 → 1次風上差分を適用
最新の空間差分スキーム
- CIP (Cubic-interpolated pseudo particle) 物理量の空間1階微分を変数として持ち、その移流方程式を同時に解く。
∂φ
∂φ
= −u
∂t
∂x
∂ ⎛ ∂φ ⎞
∂ ⎛ ∂φ ⎞
⎜
⎟ = −u ⎜
⎟
∂ t ⎝ ∂x ⎠
∂x ⎝ ∂x ⎠
さらに、φの空間分布を3次の補間式で近似する。
φ ( x ) = a0 + a1 x + a 2 x 2 + a 3 x 3
この補間式の4つの係数は、位置iと位置i-1での変数と空間微分値によって、
次式によって決定する
n
a0 = φ i
⎛ ∂φ ⎞
⎟
⎝ ∂x ⎠ i
φin+ 1 = φin − Δtu⎜
a1 = (φ , x )i
[2(φ , x ) + (φ , x ) ] − 3 [φ
=
i
i −1
i − φi − 1 ]
a2
Δx 2
Δx
[(φ , x )i + (φ , x )i −1 ] − 2 [φi − φi −1 ]
a3 =
Δx 2
Δx 3
n+ 1
⎛ ∂φ ⎞
⎜
⎟
⎝ ∂x ⎠ i
⎧ ⎡ ⎛ ∂φ ⎞ n ⎛ ∂φ ⎞ n ⎤
⎪ ⎢ 2⎜
⎟ +⎜
⎟ ⎥
n
∂
∂
x
x
⎝
⎠
⎝
⎠ i − 1 ⎥⎦
⎪
φin − φin− 1
∂
φ
⎢
i
⎞
⎛
⎣
=⎜
−3
⎟ − Δtu 2 ⎨
Δ
x
Δx 2
⎝ ∂x ⎠ i
⎪
⎪
⎩
[
⎫
⎪
⎪
⎬
⎪
⎪
⎭
]
熱伝導方程式(放物型)の差分スキーム
熱伝導方程式の陽解法(Explicit scheme)
熱伝導方程式
∂u
∂ 2u
=α 2
∂t
∂x
差分方程式
( )
uin + 1 − uin
uin+ 1 − 2uin + uin−1
2
(
)
=α
+
Δ
+
Δ
O
t
O
x
Δt
Δx 2
uin+1 について解くと、以下のFTCSスキームが得られる。
Δt
n+1
n
n
n
n
d =α
ui = ui + d ui + 1 − 2ui + ui −1
Δx 2
FTCSスキーム
d:拡散数(diffusion number)
(
)
熱伝導方程式の陽解法
Δx
差分方程式
(
uin + 1 = uin + d uin+ 1 − 2uin + uin−1
Δt
d =α
Δx 2
陽解法によるプログラム例
1590
1600
1610
1620
)
n+1
Δt
n
n-1
t
0
i-1
i i+1
*FTCS
FOR I=2 TO IM1
U(I)=UN(I)+D*(UN(I+1)-2*UN(I)+UN(I-1))
NEXT I:RETURN
x
熱伝導方程式の陰解法 (Implicit scheme)
熱伝導方程式:
∂u
∂ 2u
=α 2
∂t
∂x
時間に後退差分近似、空間に中心差分近似
した差分方程式:
( )
uin + 1 − uin
uin++11 − 2uin + 1 + uin−+11
2
(
)
O
t
O
x
=α
+
Δ
+
Δ
Δt
Δx 2
uin−+11 , uin+1 , uin++11 を変数値として差分スキームを求める。
n+1
i −1
− du
+ (1 + 2d )u
n+1
i
n+1
i +1
− du
=u
n
i
Δt
d =α
Δx 2
熱伝導方程式の陰解法
差分方程式:
− duin−+11 + (1 + 2d )uin+1 − duin++11 = uin
(例) i=1~5を考える。i=1, i=5を
境界条件を満足する境界点と
し、i=2, 3, 4を内点とする。
(1 + 2d )u2n+1 − du3n+1 = u2n + du1n+1
− du2n+1 + (1 + 2d )u3n +1 − du4n +1 = u3n
− du3n+1 + (1 + 2d )u4n+1 = u4n + du5n+1
N元連立一次方程式
境界
tn
n+1
n
i
1
2
3
4
5
熱伝導方程式の陰解法
三重対角行列
⎛ (1 + 2d )
⎜
⎜
⎜
⎝
−d
−d
(1 + 2d )
0
−d
n
n+1
n+1
⎛
⎞
⎛
⎞
+
u
du
u
0 ⎞⎜ 2 ⎟ ⎜ 2
1
⎟
⎟ n+1
⎟
− d ⎟⎜ u3 ⎟ = ⎜ u3n
(1 + 2d )⎟⎠⎜⎜⎝ u4n+1 ⎟⎟⎠ ⎜⎜⎝ u4n + du5n+1 ⎟⎟⎠
陰解法によるプログラム例(行列の設定)
2020
2030
2040
2050
2060
*SPMTRX
FOR I=1 TO IBAR
A(I,I)=1+2*BETA:NEXT I
FOR I=1 TO IBAR-1:A(I,I+1)=-BETA:NEXT I
FOR I=1 TO IBAR-1:A(I+1,I)=-BETA:NEXT I:RETURN
熱伝導方程式の陰解法
陰解法によるプログラム例(三重対角行列の解法)
1580
1590
1591
1600
1610
1620
1630
1640
1650
1660
1670
1680
1690
1700
1710
'*Gauss-Jordan eliminator
*GSSJOD
' *forward elimination
FOR K=1 TO IBAR
D1(K)=1/A(K,K)
FOR I=1 TO IBAR
IF I=K THEN GOTO 1700
M(I,K)=A(I,K)*D1(K)
FOR J=K+1 TO JBAR
A(I,J)=A(I,J)-M(I,K)*A(K,J)
NEXT J
B(I)=B(I)-M(I,K)*B(K)
A(I,K)=0
NEXT I
NEXT K
1720
1730
1740
1760
'*back substitution
FOR I=1 TO IBAR
U(I)=B(I)*D1(I)
NEXT I
歴史的な経緯 - 初期の差分法
Richardson(1881-1953) の方法
„
„
„
差分の考え方は1860年代、既にあった。しかしながら、
放物型方程式に対して初めて差分法を適用したのは、
Richardon(1881-1953)で、1910年のことである。
Richardon は1次元熱伝導方程式対して、時間と空間微分
に中心差分を用いることにより、以下の差分式を導いた。
∂u
∂ 2u
=α 2
∂t
∂x
uin + 1 − uin − 1
uin− 1 − 2 uin + uin+ 1
=α
2 Δt
Δx 2
n+ 1
i
u
„
„
n− 1
i
=u
(
+d u
n
i −1
− 2u + u
n
i
n
i+1
1
uin +1
d
-2d
uin−1
)
d =α
Δt
Δx 2
d
uin+1
uin
1
uin −1
残念ながら、このスキームは、拡散数dの値によらず不安定となるため、正しい解
が得られないスキームであった。
近年、このRichardonスキームは不安定なスキームの代表例として扱われることが
あるが、初めて実用的な計算に差分法を適用しようとした試みとして高く評価され
るものである。
Richardsonの夢
„
„
„
„
リチャードソンは気象学に興味を持ち、微分方程式を離散
化して数値的に解くという現在使われている気象予測の原
型ともいえる数値予報システムを提案した。
そのために、大戦中に集めたデータを用いた計算を実際に
行ったが、計算をすべて手で行ったためわずか6時間の予
報に2ヶ月かかり、しかも数値の処理に問題があったため、
予報は失敗に終わった。
1922年に著書の中で彼は、64,000人の計算者を巨大な
ホールに集めて指揮者の元で整然と計算を行えば実際の
天候の変化と同じくらいの速さで予報が行えると見積もっ
た。この構想は「リチャードソンの夢」と呼ばれた。
またリチャードソンは乱気流に関する実験も数多く行ってい
る。乱流に関する無次元数「リチャードソン数」は彼の名前
にちなんでいる。
デュフォール・フランケル法(DF法)
„
„
Richardson法は、拡散数に関わらず不安定な差分スキームであったが、
DufortとFrankelは、1953年、空間の2階微分に対する差分表示を時間平
均値とする差分スキームを導いた。
このスキームは、拡散方程式に対するLeapfrog法(あるいはPyramid法)とも
呼ばれているが、対流方程式に対するLeapfrog法と異なり、安定なスキー
ムとなっている。 (→ 安定解析により証明)
uin− 1 − 2 uin + uin+ 1
∂ 2u
=α
∂x 2
Δx 2
uin +1
uin + 1 + uin − 1
u =
2
n
i
uin+1
uin−1
(
)
uin+ 1 − uin − 1
uin− 1 − uin+ 1 + uin− 1 + uin+ 1
=α
2
2 Δt
Δx 2
uin+ 1 =
[ (
)
1
2 d uin− 1 + uin+ 1 + (1 − 2 d )uin− 1
1 + 2d
uin −1
]
d =α
Δt
Δx 2
アダムス・バシュフォース法(AB法)
⎡ uin− 1 − 2 uin + uin+ 1
uin + 1 − uin
uin−−11 − 2 uin− 1 + uin+−11 ⎤
= α ⎢β
+ (1− β )
⎥
2
2
Δt
Δ
x
Δ
x
⎣
⎦
3
β=
2
3
1
n+ 1
n
n
n
ui = dui − 1 + (1 − 2 d )ui + dui + 1 − duin−−11 + (1 − 2 d )uin − 1 + duin+−11
2
2
{
} {
}
n+1
Δt
d =α
Δx 2
n
n-1
i-1
i
i+1
クランク・ニコルソン法(CN法) ← 陰解法
„
„
CN法は、空間微分に対してnとn-1の2つの時間レベルの算術平均を
取っている。
得られる漸化式は、各種の行列演算を用いて解かれる。
∂u
∂ 2u
=α 2
∂t
∂x
f =
n
n
i −1
u
uin − uin− 1 1 n
=
f + f n− 1
2
Δt
{
n
− 2u + u
Δx
n
i
2
n
i+1
}
n-1
i-1
i
i+1
− duin− 1 + 2(1 + d )uin− 1 − duin+ 1 = duin−−11 + 2(1 − d )uin− 1 + duin+−11 d = α
Δt
Δx 2
Poisson方程式(楕円型)の差分スキーム
(1/6)中心差分スキームの適用
Poisson方程式
∂ 2u ∂ 2u
+ 2 = −g
2
∂y
∂x
空間に中心差分近似を用いた差分方程式
ui +1, j − 2ui , j + ui −1, j
Δx
2
+
ui , j +1 − 2ui , j + ui , j −1
Δy
2
= − gi , j
Δx=Δyとする。
− ui +1, j − ui −1, j + 4ui , j − ui , j +1 − ui , j −1 = Δx 2 g i , j
(2/6) Natural ordering
Natural ordering:
u1,1, u1,2,……, u3,3をu1, u2, ……, u9と番号を付け直す
y
y
21
22
23
24
7
8
9
4
5
6
1
2
3
11
12
13
25
(4,0) (4,1) (4,2) (4,3) (4,4)
17
(3,0) (3,1) (3,2) (3,3) (3,4)
16
(2,0) (2,1) (2,2) (2,3) (2,4)
15
(1,0) (1,1) (1,2) (1,3) (1,4)
(0,0) (0,1) (0,2) (0,3) (0,4)
x
10
20
19
18
14
x
(3/6)行列式
Natural ordering によって差分式は以下のように
表すことができる
−1
⎛ 4 −1
⎞⎛ u1 ⎞ ⎛ Δx 2 g1 + u11 + u15 ⎞ ⎛ b1 ⎞
⎟ ⎜ ⎟
⎜
⎟⎜ ⎟ ⎜ 2
u
−1
⎟ ⎜ b2 ⎟
⎜−1 4 −1
⎟⎜ 2 ⎟ ⎜ Δx g 2 + u12
⎜
⎟⎜ u ⎟ ⎜ Δ x 2 g + u + u ⎟ ⎜ b ⎟
−1 4
−1
3
13
18 ⎟
⎜ 3⎟
⎜
⎟⎜ 3 ⎟ ⎜
⎟ ⎜ b4 ⎟
4 −1
−1
⎜−1
⎟⎜ u4 ⎟ ⎜ Δx 2 g 4 + u16
⎟ ⎜ ⎟
⎜
⎟⎜ u ⎟ = ⎜ 2
1
1
4
1
1
−
−
−
−
x
g
Δ
5
⎟ ≡ ⎜ b5 ⎟
⎜
⎟⎜ 5 ⎟ ⎜
⎟ ⎜ b6 ⎟
⎜
−1
−1 4
− 1 ⎟⎜ u6 ⎟ ⎜ Δx 2 g6 + u19
⎟ ⎜ ⎟
⎜
⎟⎜ ⎟ ⎜ 2
4 −1
−1
⎜
⎟⎜ u7 ⎟ ⎜ Δx g7 + u17 + u22 ⎟ ⎜ b7 ⎟
⎟ ⎜b ⎟
⎜
−1
− 1 4 − 1 ⎟⎜ u8 ⎟ ⎜ Δx 2 g8 + u23
⎟ ⎜⎜ 8 ⎟⎟
⎟⎟⎜⎜ ⎟⎟ ⎜⎜ 2
⎜⎜
−1
− 1 4 ⎠⎝ u9 ⎠ ⎝ Δx g9 + u20 + u24 ⎟⎠ ⎝ b9 ⎠
⎝
(4/6) 行列式の要素 ~ 三重対角行列
U1 = (u1
u2
B1 = (b1 b2
u3 ) T , U 2 = (u4
b3 ) T ,
B2 = (b4
u5
b5
u6 ) T , U 3 = (u7
b6 ) T ,
B3 = (b7
u8
b8
u9 ) T
b9 ) T
以上の置き換えによって、行列式は、以下の形に書き換わる
⎛ A11
⎜
⎜ A21
⎜
⎝
ここで
A12
A22
A32
⎞⎛ U 1 ⎞ ⎛ B1 ⎞
⎟⎜ ⎟ ⎜ ⎟
A23 ⎟⎜ U 2 ⎟ = ⎜ B2 ⎟
A33 ⎟⎠⎜⎝ U 3 ⎟⎠ ⎜⎝ B3 ⎟⎠
⎛ 4 −1
⎞
⎜
⎟
1
4
1
Aii = ⎜ −
− ⎟
⎜
⎟
1
4
−
⎝
⎠
⎛−1
⎞
⎜
⎟
−1
Aij = A ji = ⎜
⎟
⎜
⎟
1
−
⎝
⎠
(i = 1,2,3)
(i , j = 1,2,3 : i ≠ j )
(5/6) ブロック三重対角行列の解法
係数行列の設定:
A行列の設定:
1710
1720
1740
1750
1760
1770
1780
1790
1800
1810
1820
'*specification of A
1830 FOR J0=1 TO JBAR-1
*MTRX
1840 FOR I=1 TO IBAR:FOR J=1 TO JBAR
FOR I=1 TO IBAR:AII(I,I)=4:NEXT I
1850 IP=I+JBAR*J0: JP=J+JBAR*(J0-1)
FOR I=2 TO IBAR:AII(I,I-1)=-1:NEXT I
1860 A(IP,JP)=AIJ(I,J):NEXT J:NEXT I
FOR I=1 TO IBAR-1:AII(I,I+1)=-1:NEXT I 1870 NEXT J0
FOR I=1 TO IBAR:AIJ(I,I)=-1:NEXT I
1880 FOR J0=1 TO JBAR-1
FOR J0=1 TO JBAR
1890 FOR I=1 TO IBAR:FOR J=1 TO JBAR
FOR I=1 TO IBAR:FOR J=1 TO JBAR
1900 IP=I+JBAR*(J0-1):JP=J+JBAR*J0
IP=I+JBAR*(J0-1):JP=J+JBAR*(J0-1)
1910 A(IP,JP)=AIJ(I,J):NEXT J:NEXT I
A(IP,JP)=AII(I,J):NEXT J:NEXT I
1920 NEXT J0:RETURN
NEXT J0
b行列の設定:
1940
1950
1960
1970
'*specification of b
*RHS
FOR I=1 TO IJBAR:B(I)=G0*DXDY:NEXT I:RETURN
'FOR I=IBAR TO IJBAR STEP IBAR:B(I)=U0:NEXT I:RETURN
(6/6)ブロック三重対角行列の解法
ガウスの消去法による行列の解法
1440
1450
1470
1480
1490
1500
1510
1520
1530
1540
1550
1560
1580
1590
'*Gaussian eliminator for A*u=b
*GAUSS
FOR K=1 TO IJBAR
D1(K)=1/A(K,K)
FOR I=K+1 TO IJBAR
M(I,K)=A(I,K)*D1(K)
FOR J=K+1 TO IJBAR
A(I,J)=A(I,J)-M(I,K)*A(K,J)
NEXT J
B(I)=B(I)-M(I,K)*B(K)
A(I,K)=0
NEXT I
NEXT K
D1(IJBAR)=1/A(IJBAR,IJBAR)
1600
1610
1620
1630
1640
1650
1660
1690
'*backward substitution
U(IJBAR)=B(IJBAR)*D1(IJBAR)
FOR I= 2 TO IJBAR
IR1=IJBAR-I+1
SUM=0:FOR J=IR1+1 TO IJBAR
SUM=SUM+A(IR1,J)*U(J):NEXT J
U(IR1)=(B(IR1)-SUM)/A(IR1,IR1)
NEXT I
5点差分スキーム
(Five-term recurrence scheme)
Δx=Δyとした場合のPoisson方程式の差分近似式
− ui +1, j − ui −1, j + 4ui , j − ui , j +1 − ui , j −1 = Δx 2 g i , j
ui,jについて整理すると、
ui , j =
(
1
ui + 1, j + ui −1, j + ui , j + 1 + ui , j −1 + Δx 2 gi , j
4
)
変数、ui+1,j, ui-1,j, ui,j+1, ui,j-1 が既知の場合、ui,j の値が
求まることを示している。
表計算ソフトによる熱伝導解析(1/2)
100
51.07237
31.6532
18.33154
9.599884
4.507474
1.896977
0.716155
0.227735
0
100
64.4262
39.86327
22.32332
11.13954
4.936661
1.953679
0.697562
0.213375
0
100
66.64282
39.9896
21.16744
9.804685
3.986152
1.448326
0.483257
0.142508
0
100
65.19423
36.95083
17.95006
7.44554
2.683597
0.878807
0.27722
0.079438
0
100
61.99906
32.13504
13.67962
4.818129
1.479724
0.45038
0.136799
0.038443
0
100
57.19167
25.61034
8.787319
2.370757
0.668902
0.195639
0.058171
0.016165
0
100
80
80-100
60-80
40-60
20-40
0-20
60
40
20
9
7
5
S5
3
0
S9
1
100
0
0
0
0
0
0
0
0
0
S1
100
49.72089
17.04673
3.538683
0.884245
0.241968
0.069671
0.020536
0.00568
0
100
37.43022
4.261682
0.884671
0.221061
0.060492
0.017418
0.005134
0.00142
0
100
0
0
0
0
0
0
0
0
0
表計算ソフトによる熱伝導解析(2/2)
20
20
20
20
20
20
20
20
20
20
20
20.36674
20.76934
21.24008
21.79738
22.41812
22.97566
23.13608
22.29624
20
20
20.69783
21.47087
22.39394
23.53172
24.89976
26.34872
27.27259
26.04895
20
20
20.954
22.02284
23.33364
25.03634
27.30095
30.24724
33.55684
34.62707
20
20
20
21.09569 21.09575
22.33339 22.3335
23.88207 23.88221
25.97965 25.9798
29.02103 29.02117
33.78289 33.78301
42.08071 42.08079
58.90258 58.90262
100
100
加熱部
20
20.95416
22.02314
23.33402
25.03674
27.30133
30.24755
33.55705
34.62718
20
20
20.69803
21.47124
22.39441
23.53221
24.90022
26.3491
27.27286
26.04909
20
100
90
80
70
60
50
40
30
20
S9
S7
S5
10
0
1
2
3
4
5
S3
6
7
8
9
10
S1
90-100
80-90
70-80
60-70
50-60
40-50
30-40
20-30
10-20
0-10
20
20.3669
20.76962
21.24042
21.79775
22.41846
22.97595
23.13628
22.29634
20
20
20
20
20
20
20
20
20
20
20
差分法の特徴
(1/5)微係数を差分商に置き換える
対流方程式の偏微分方程式
∂u
∂u
+c
=0
∂t
∂x
差分方程式
uin+1 − uin
uin − uin−1
+c
=0
Δt
Δx
微係数を差分商に置き換える操作は数学的表現
として、元の方程式の形が大きく崩れないで、差分
方程式に引き継がれる。
(2/5)物理の過程を忠実に再現
対流方程式の差分方程式:
(
)
uin+1 = uin − C uin − uin−1 , C = c
Δt
Δx
初期値問題において、時間の進展を一つ一つのΔtの
増分として現象を追跡している。
Laplace方程式の差分式 (gi,j=0とし、u:物質の濃度)
ui , j =
(
1
ui + 1, j + ui −1, j + ui , j + 1 + ui , j −1
4
)
周囲の4点の平均として、注目している点の濃度が決定され
る。という物理学における拡散の過程までもが理解される。
(3/5)数学的な意味付けが容易
偏微分方程式の従属変数をTaylor展開して差分方程式に変
換したとみなすと、
打切り誤差、境界条件の誤差の評価が容易となり、高次項ま
で考慮した差分法の数学的な意味付けも容易に得られる。
(4/5)汎関数の存在を必要としない
スカラー関数u(x,y)に対するDiirichlet積分は、対象領域をD
として
⎡ ⎛ ∂u ⎞ 2 ⎛ ∂u ⎞ 2 ⎤
I = ∫D ⎢⎜ ⎟ + ⎜⎜ ⎟⎟ ⎥dxdy
⎢⎣⎝ ∂x ⎠ ⎝ ∂y ⎠ ⎥⎦
で定義される。この汎関数を最小とする問題のEularLagrangeの方程式は、次のLaplace方程式である。
∂ 2u
∂ 2u
+c 2 =0
2
∂y
∂x
差分法では、対象としている偏微分方程式についての汎関
数が存在するか否かを気にかける必要がない。
(5/5)検証が容易
差分スキームによる計算アルゴリズムは、物理的直感が働
きやすく、定式化と変換の次にくる計算過程の設計や検証が
容易である。例えば、
(
)
uin+1 = uin − C uin − uin−1 , C = c
Δt
Δx
においてC=1としたとき、次の厳密な差分解
uin+1 = uin−1
が得られる。この場合にはΔtが1つ増加すると、点(i-1,n)の変
数uがxの正方向にΔxだけ移動して点(i,n+1)に進行するとい
う有向性の意味が明確になる。
課題提出予定(案)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
( 9/ 2) 数値シミュレーションの手続き (テキスト第1章)
( 9/ 9) 課題(1)提出
( 9/16) 休講
( 9/30) 課題(2)提出
(10/ 7) 課題(3)提出
(10/21) 課題(4)提出
(10/28) 課題(5)提出
(11/ 4) 課題(6)提出
(11/11) 課題(7)提出
(11/18) (課題by金子暁子先生)の提出
(11/25) (数値解析by渡辺正先生)の提出
提出課題(1)
„
„
„
各自が行ったことのある数値解析(流体解析に限定
しない)について、その対象となった物理、基礎方程
式、境界条件、数値解析手法、解析結果、(もしあ
れば)実験との比較、等に関して、簡潔にレポートに
纏めなさい。
もし、数値解析の経験がない場合には、数値解析
に関して考えるところをレポートに纏めなさい。
提出期限は、次回(9/9)までとする。
提出課題(2)
„
熱伝導方程式
∂ 2ϕ
∂ϕ
=α 2
∂t
∂x
„
(α > 0)
に、次の関数を代入すると、
⎛ 1
⎞
∫ udx ⎟
⎠
⎝ 2α
ϕ = exp⎜ −
„
以下の式が導かれることを示せ。
∂ 2u
∂u
∂u
=α 2
+u
∂x
∂x
∂t
„
提出期限は、次々回(9/30)までとする。
提出課題(3)
„
以下のテンソル表現で記載されているNavierStokes方程式の各項の成分を書き下しなさい。
r
ρ
„
r
Dv
= −∇p − ∇ ⋅ π + ρg
Dt
ただし、 vr = (v x , v y , v z )
r
r
r
r r ∂v r r
Dv ∂v
=
+ ∇ ⋅ (v v ) =
+ v ⋅ ∇v
Dt ∂t
∂t
[
r
rT
∇ ⋅ π = −μ∇ ⋅ ∇v + (∇v )
„
]
提出期限は、次次々回(10/7)までとする。
対流方程式の数値解の挙動
~スキームの選択 ー モデル問題3 -
„
以下の対流方程式を
∂u
∂u
+c
=0
∂t
∂x
„
以下の境界条件と初期条件の下で、
⎧0 ( 0 ≤ x ≤ 1 / 5)
⎪
u( x ,0) = F ( x ) = ⎨1 (1 / 5 ≤ x ≤ 2 / 5)
⎪0 ( 2 / 5 ≤ x ≤ 1)
⎩
„
u(0, t ) = g0
g0 = 0
∂u(1, t )
=0
∂x
以下の各スキームを用いて数値的に解析しなさい。
•
•
•
FTCS
蛙とび法
風上差分
Program: ADVEC
提出課題(4)
„
„
„
前ページに指定する微分方程式を、与えら
れた境界条件の下で、指定する差分スキー
ムを用いて数値的に解析しなさい。
提出期日: 10月21日(木)
提出物は、
・内容の説明したレポート
・プログラムリスト
・解析結果(数値出力、作図結果)
以上の全てを、A4レポート用紙ならびに電
子媒体(CD)の両方により提出すること。
提出課題(5)
以下のPoisson方程式を、中心差分近似を用いた差分方
程式とした上で、
∂ 2u ∂ 2u
+ 2 = −g
2
∂y
∂x
5×5に分割された空間に対して、周囲境界を既知のもの
とするとき得られる9元連立一次方程式を、Natural
orderingによって書き下しなさい。
提出期日:10月28日(木)