3 次元楕円体の S-W 近似による波動方程式のシ ミュレーション
4
年2
組30
番 松澤 京平2019
年2
月21
日目 次
1
概要3
2 3
次元楕円体を2
次元平面へ変数変換する3 3
楕円盤領域でのShortley-Weller
近似5
3.1 Shortley-Weller
近似とは. . . . 5
3.2
求める領域を差分格子で覆う. . . . 6
3.3
格子点の領域内外の判定. . . . 6
3.4
境界上の不等間隔格子点を取る. . . . 7
3.5
境界の座標の計算. . . . 7
3.6 S-W
近似の差分方程式. . . . 8
3.6.1 r > 0
の場合. . . . 8
3.6.2 r = 0
の場合. . . . 9
3.7
差分スキームの安定性条件,CFL
条件. . . . 9
3.8
丸め誤差への対処. . . . 11
3.9
差分方程式を解くために. . . . 12
4
数値計算13 4.1
楕円領域の焦点. . . . 13
4.2
初期値の設定. . . . 13
4.3
実行結果と考察. . . . 14
A
付録30
A.1 hadouDaentai.c . . . . 30
1 概要
2011
年度桂田研卒業の浜勇樹先輩の「S-W
近似による楕円領域での波動方程式 のシミュレーション」[1]
では、2次元の楕円領域で片方の焦点から発せられた波 がもう片方の焦点に向かって反射し収束する様子のシミュレーションに挑戦をし た。結果として3
次元での計算の必要性を解いて終わっている。そこで2013
年度 桂田研卒業の嵯峨野美希先輩の「楕円体の酒場」[2]
では、3
次元の回転楕円領域 で検証をした。しかし、プログラムの計算時間が長いことにより十分な試行回数 が得られなかった。そこで今回は、
3
次元の波動方程式を、解の対称性を用いて2
次元に変数変換し てシミュレーションを行うことができるかということを試した。計算は2
次元の 波動方程式として扱うため、浜勇樹先輩のプログラムを改良し、波動方程式を解 くことによって再現できるかを試した。2 3 次元楕円体を 2 次元平面へ変数変換する
楕円領域 x2
a2
+
zb22< 1
をz
軸周りの回転してできる回転楕円体領域をΩ
1とする: Ω
1= { (x, y, z); x
2a
2+ y
2a
2+ z
2b
2< 1 }
このとき
Ω
1において以下の波動方程式の初期値境界値問題を与える。
1 c2
∂2u
∂t2
=
∂∂x2u2+
∂∂y2u2+
∂∂z2u2((x, y, z) ∈ Ω
1, t > 0) u(x, y, z, 0) = ϕ
1(x, y, z) ((x, y, z) ∈ Ω
1)
∂u
∂t
(x, y, z, 0) = ψ
1(x, y, z) ((x, y, z) ∈ Ω
1) u(x, y, z, t) = 0 ((x, y, z) ∈ ∂Ω
1, t > 0)
c
は正定数であり、初期値ϕ
1(x, y, z), ψ
1(x, y, z)
は既知関数である。ここで
Ω
は回転楕円体なので、初期値が回転軸について回転対称ならば、波動 方程式の解は対称になる。したがって、ある3
変数関数U(r, z, t)
が存在してu(x, y, z, t) → U( √
x
2+ y
2, z, t)
が成り立つ。r = √
x
2+ y
2から∂r
∂x = x
√ x
2+ y
2= x r
∂
2r
∂x
2= 1
√ x
2+ y
2− x
2( √
x
2+ y
2)
3= 1 r − x
2r
3 したがって∂u
∂x = ∂r
∂x · ∂U
∂r
∂
2u
∂x
2= ∂
∂x ( ∂r
∂x
∂U
∂r )
= ( ∂
∂x
∂r
∂x ) ∂U
∂r + ( ∂
∂x
∂U
∂r ) ∂r
∂x
= ∂
2r
∂x
2∂U
∂r + ( ∂x
∂r )
2∂
2U
∂r
2= 1 r
∂U
∂r − x
2r
3∂U
∂r + x
2r
2∂
2U
∂r
2y
についても同様に計算を行うと∂
2u
∂y
2= 1 r
∂U
∂r − y
2r
3∂U
∂r + y
2r
2∂
2U
∂r
2 したがってこれらの和は、∂
2u
∂x
2+ ∂
2u
∂y
2= 2 r
∂U
∂r − x
2+ y
2r
3∂U
∂r + x
2+ y
2r
2∂
2U
∂r
2= 1 r
∂U
∂r + ∂
2U
∂r
2 したがって1 c
2∂
2U
∂t
2= 1 r
∂U
∂r + ∂
2U
∂r
2+ ∂
2U
∂z
2以上より、領域
Ω
2をΩ
2:= { (r, z);
ra22+
zb22< 1 ∧ r < 0 }
とし、その境界をΓ
1:= { (r, z); r
2+ z
2= 1 ∧ r > 0 }
とすると
1 c2
∂2U
∂t2
=
1r∂U∂r+
∂∂r2U2+
∂∂z2U2((x, y, z) ∈ Ω
2, t > 0) U (r, z, 0) = ϕ
2(r, z) ((r, z ) ∈ Ω
2)
∂U
∂t
(r, z, 0) = ψ
2(r, z ) ((r, z) ∈ Ω
2) U (r, z, t) = 0 ((r, z ) ∈ Γ
1, t > 0)
∂U
∂r
(r, z, t) = 0 ((r, z ) ∈ Γ
2, t > 0)
c
は正定数であり、初期値ϕ
2(x, y, z), ψ
2(x, y, z)
は既知関数である。浜勇樹先輩の「
S-W
近似による楕円領域での波動方程式のシミュレーション」[1]
を参考にし、C 言語を用いてプログラミングを行い、計算結果をGLSC
を用 いて可視化した。3 楕円盤領域での Shortley-Weller 近似
3.1 Shortley-Weller
近似とは通常、差分法は等間隔格子点を用いて行われる。これは領域が直方体の場合に は問題ないが、円盤領域などには合わない。これらの領域で問題を解くには、変 数変換によって領域を長方形に変換することで差分法を適用するのが普通である。
しかし、以下説明する
Shortley-Weller
近似ではそのままの領域に対して差分法を 行うことが出来る。簡単のため1
変数関数f
の場合で説明する。(1) f(x + h) = f (x) + f
′(x)h + 1
2 f
′′(x)h
2+ 1
3! f
(3)(x)h
3+ 1
4! f
(4)(x + θh)h
4(2) f(x − h
′) = f(x) − f
′(x)h
′+ 1
2 f
′′(x)h
′2− 1
3! f
(3)(x)h
′3+ 1
4! f
(4)(x + θ
′h
′)h
′4(1) − (2)
をするとf (x + h) − f(x − h
′) = f
′(x)(h + h
′) + 1
2 f
′′(x)(h
2− h
′2) + 1
3! f
(3)(x)(h
3+ h
′3) + 1
4! f
(4)(x + θh − θ
′h
′)(h
4− h
′4)
ゆえにf
′(x) = f(x + h) − f (x − h
′)
h + h
′+ O(h − h
′) + O
( h
3+ h
′3h + h
′) + O
( h
4+ h
′4h + h
′)
また、
(1)/h + (2)/h
′を整理するとf (x + h) − f (x)
h − f(x) − f (x − h
′)
h
′= 1
2 f
′′(x)(h + h
′) + 1
3! f
(3)(x)(h
2− h
′2) + 1
4! (f
(4)(x + θh)h
3+ f
(4)(x − θh
′)h
′3)
ゆえにf
′′(x) = 2 h + h
′( f (x + h) − f(x)
h − f(x) − f(x − h
′) h
′)
+O(h − h
′)+O
( h
3+ h
′3h + h
′)
となり、この近似を
f
′(x), f
′′(x)
のShortley-Wellwe
近似と呼ぶ。以下では、Shortley- Weller
近似のことをS-W
近似と略記する。3.2
求める領域を差分格子で覆う領域
Ω
2を覆う正方領域(
もしくは長方領域)
の左辺のr
座標をr
min,
右辺のr
座標をr
max,
下辺のz
座標をz
min,
上辺のz
座標をz
max,r
方向の分割数をN
r,z
方向 の分割数をN
z,r
方向の格子点の間隔をh
r,z
方向の格子点の間隔をh
z,
時間の刻み 幅τ > 0
とおく。h
r= r
max− r
minN
rh
z= z
max− z
minN
zが成り立つ。さらに、
r
i,z
jをr
i= r
min+ ih
r(0 ≦ i ≦ N
r) z
j= z
min+ jh
z(0 ≦ j ≦ N
z)
とする。3.3
格子点の領域内外の判定楕円領域
Ω
に対して、関数F
をF (r, z ) = a
2b
2− b
2r
2− a
2z
2で定めると、任意のどこにあるか判断できる。
(1) F (r, z) > 0
のとき
r > 0
のとき領域内部r = 0
のとき境界上r < 0
のとき領域外部(2) F (r, z) = 0
のとき{
r ≧ 0
のとき境界上r < 0
のとき領域外部(3) F (r, z) < 0
のとき領域外部3.4
境界上の不等間隔格子点を取る等間隔の格子点によって分けられた領域内のある格子点
P = (r, z )
に対して、そ の東西南北の等間隔格子点が領域外に出てしまう場合、境界上に新しく不等間隔 格子点を取る。西側、東側、北側、南側の点をそれぞれP
w= (r
w, z), P
e= (r
e, z), P
n= (r, z
n), P
s= (r, z
s)
と置く。新たに出来た左右上下の格子点の間隔をそれぞれh
w= r
w− r = ε
wh
r, h
e= r − r
e= ε
eh
rh
n= z
n− z = ε
nh
z, h
s= z − z
s= ε
sh
z(0 < ε
w, ε
e, ε
n, ε
s≦ 1)
と置く。3.5
境界の座標の計算格子点の間に存在する境界の座標を計算する。楕円領域
Ω
2の境界Γ
1上ではr
2a
2+ z
2b
2= 1 (r > 0)
が満たされ、
r, z
についてそれぞれについて解くとr = ± a
√ 1 − z
2b
2, z = ± b
√ 1 − r
2a
2となる。これによって境界上の
r
座標、z
座標が分かるので、格子点の東南北のど の等間隔格子点が境界外に出るかに合わせて、P
e, P
n, P
sを決める。ただし、境界Γ
2上のr
はr = 0
を満たす。よって西側が境界外に出るときはP
w= (0, z)
となる。3.6 S-W
近似の差分方程式3.6.1 r > 0
の場合 通常の差分方程式では、1
r U
r+ U
rr+ U
zz∼ = 1 r
iU
e− U
w2h
r+ U
w− 2U + U
eh
2r+ U
n− 2U + U
sh
2zS-W
近似では、1
r U
r+U
rr+U
zz∼ = 1 r
iU
e− U
wh
w+ h
e+ 2 h
w+ h
e( U
e− U
h
e− U − U
wh
w)
+ 2
h
n+ h
s( U
n− U
h
n− U − U
sh
s)
と近似する。波動方程式
1
c
2u
tt= 1
r U
r+ U
rr+ U
zz の左辺を2
階の中心差分で近似すると、差分方程式は1 c
2U
i,jn+1− 2U
i,jn+ U
i,jn−1τ
2= 1
r
iU
e− U
wh
w+ h
e+ 2 h
w+ h
e( U
e− U
i,jnh
e− U
i,jn− U
wh
w)
+ 2
h
n+ h
s( U
n− U
i,jnh
n− U
i,jn− U
sh
s)
という形になる。Ui,jn+1について整理すると、
U
i,jn+1= 2U
i,jn− U
i,jn−1+ c
2τ
2r
iU
e− U
wh
w+ h
e+ 2c
2τ
2h
w+ h
e( U
e− U
i,jnh
e− U
i,jn− U
wh
w)
+ 2c
2τ
2h + h
( U
n− U
i,jnh − U
i,jn− U
sh
)
3.6.2 r = 0
の場合r = 0
では、波動方程式の左辺の分母にr
があるため解くことができない。元の 方程式1
c
2w
tt= w
xx+ w
yy+ w
zz について考える。W
i,j,k= w(x
i, y
j, z
k)
としてi = 0, j = 0
を代入し、2
階中心差分近似すると∂
2w
∂x
2(0, 0, z, t) = W
1,0,k− 2W
0,0,k+ W
−1,0,kh
2x+ O(h
2x)
∂
2w
∂y
2(0, 0, z, t) = W
0,1,k− 2W
0,0,k+ W
0,−1,kh
2y+ O(h
2y) h
x= h
y= h
とする。また、解の対称性より∂
2w
∂x
2(0, 0, z, t) + ∂
2w
∂y
2(0, 0, z, t) ∼ = W
1,0,k+ W
−1,0,k+ W
0,1,k+ W
0,−1,k− 4W
0,0,kh
2= 4
h
2(W
1,0,k− W
0,0,k)
次に
h = h
rとし、それぞれの座標をw(x
i, y
j, z
k) = U(r
l, z
k)
を用いて対応させる と、r = 0
での差分方程式は、1 c
2U
l,kn+1− 2U
i,jn+ U
l,kn−1τ
2= 4
h
2r( U
1,kn− U
0,kn)
+ 2
h
n+ h
s( U
n− U
l,knh
n− U
l,kn− U
sh
s)
U
l,kn+1について整理すると、U
l,kn+1= 2U
0,kn− U
0,kn−1+ 4c
2τ
2h
2r( U
1,kn− U
0,kn)
+ 2c
2τ
2h
n+ h
s( U
n− U
l,knh
n− U
l,kn− U
sh
s)
となる。
3.7
差分スキームの安定性条件,CFL
条件Wikipedia[4]
にはCFL
条件(Courant-Friedrichs-Lewy Condition
じょうけん)とは、コンピュータシミュレーションの計算(数値解析)において、「情報が 伝播する速さ」を「実際の現象で波や物理量が伝播する速さ」よりも 早くしなければならないという必要条件のことである。
とある。
今回の波動方程式の場合に当てはめて考えると、等間隔格子を使った差分法の
場合
(
cτ h
r)
2+ ( cτ
h
z)
2≦ 1
となる。これを変形すると、τ ≦
√
h
2rh
2zc
2(h
2r+ h
2z)
というτ
の条件が得られる。次に、
S-W
近似における安定性条件について考える。まず、1
r U
r+U
rr+U
zz∼ = 1 r
U
e− U
wh
w+ h
e+ 2 h
w+ h
e( U
e− U
h
e− U − U
wh
w)
+ 2
h
n+ h
s( U
n− U
h
n− U − U
sh
s)
の右辺に
h
w= ε
wh
r, h
e= ε
eh
r, h
n= ε
nh
z, h
s= ε
sh
zを代入すると1
r U
r+U
rr+U
zz∼ = 1 r
U
e− U
wε
wh
r+ ε
eh
r+ 2 ε
wh
r+ ε
eh
r( U
e− U
ε
eh
r− U − U
wε
wh
r)
+ 2
ε
nh
z+ ε
sh
z( U
n− U
ε
nh
z− U − U
sε
sh
z)
となる。これを変形すると、
1
r U
r+ U
rr+ U
zz∼ = 1 r
U
e− U
wh
r(ε
w+ ε
e) + 2(ε
wU
e+ ε
eU
w)
h
2rε
wε
e(ε
w+ ε
e) + 2(ε
sU
n+ ε
nU
s) h
2zε
sε
n(ε
s+ ε
n)
− 2(ε
wε
eh
2r+ ε
sε
nh
2z) ε
wε
eε
sε
nh
2rh
2zU
となる。ここでU
tt∼ = 1 c
2U
i,jn+1− 2U
i,jn+ U
i,jn−1τ
2より、差分方程式は、
1 c
2U
i,jn+1− 2U
i,jn+ U
i,jn−1τ
2= 1
r
iU
e− U
wh
r(ε
w+ ε
e) + 2(ε
wU
e+ ε
eU
w)
h
2rε
wε
e(ε
w+ ε
e) + 2(ε
sU
n+ ε
nU
s) h
2zε
sε
n(ε
s+ ε
n)
− 2(ε
wε
eh
2r+ ε
sε
nh
2z) ε
wε
eε
sε
nh
2rh
2zU
となる。Un+1について解くと{ } { }
となる。第三項の係数が正になるようにすると、
2 ≧ 2c
2τ
2(ε
wε
eh
2r+ ε
sε
nh
2z) ε
wε
eε
sε
nh
2rh
2z となる。これをτ
について整理すると、τ ≦
√
ε
wε
eε
sε
nh
2rh
2zc
2(ε
wε
eh
2r+ ε
sε
nh
2z)
となる。ε
w= ε
e= ε
n= ε
s= 1
のとき、この式は上に述べた等間隔格子のCFL
条件に 一致しているので、2 次元波動方程式をS-W
近似によって解く場合のCFL
条件 であると考えられる。また、
ε = min { ε
w, ε
e, ε
n, ε
s}
とおく。3.8
丸め誤差への対処格子点が境界上にある場合に、プログラムが丸め誤差のせいで領域の内部だと 判断することがある。よってその対策をプログラムに組み込む必要がある。何の 対策もしなければ、その等間隔格子点上を領域の内部だと勘違いをして
ε
を極端 に小さい値として返す。double
型では、有効数字はだいたい10
−14〜10
−15ぐら いである。この対策としてε
r= 10
−13〜10−14というものを置き、これを用いて点
(x, y)
が領域の内部、外部、境界のどこに位置するのか判断する。(1) F (r, z) > ε
rのとき
r > ε
rのとき領域内部r ≧ ε
rのとき境界上r < ε
rのとき領域外部(2) F (r, z) ≦ ε
rのとき{
r ≧ ε
rのとき境界上r < ε
rのとき領域外部(3) F (r, z) < ε
rのとき領域外部上記のように判断することにする。また、この誤差は、領域の形や
N
r, N
zの大 小によって多少変化する。なので、もしε
がε
rを下回るとき、そのことを出力す るようにプログラムを組み込んでおく。3.9
差分方程式を解くために差分方程式を見ると
n + 1
ステップでの値を求めるために、一段前のn
での値の みならず、もう一段前のn
−1
での値が必要になる。これは、もとの方程式が時刻t
に関して2
階であることに対応している。そのため計算を出発させるためには、n = 0
での値だけでなく、n = 1
での値も必要になる。[3]
を参考に、そのための計 算を行う。r, zを固定した1
変数関数t 7→ U(r, z, t)
のt = 0
におけるテーラー展開 を行う。U (r, z, τ ) ∼ = U(r, z, 0) + τ ∂U
∂t (r, z, 0) + τ
22
∂
2U
∂t
2(r, z, 0)
において、関係式1 c
2∂
2U
∂t
2(r, z, 0) = 1 r
∂U
∂r (r, z, 0) + ∂
2U
∂r
2(r, z, 0) + ∂
2U
∂z
2(r, z, 0) = △ ϕ
2 が成立する。U (r, z, τ) ∼ = U (r, z, 0) + τ ∂U
∂t (r, z, 0) + τ
2c
22
{ 1 r
∂U
∂r (r, z, 0) + ∂
2U
∂r
2(r, z, 0) + ∂
2U
∂z
2(r, z, 0) }
∼ = ϕ
2(r
i, z
j) + τ ψ
2(r
i, z
j)
+ c
2τ
22
{ 1 r
iU
e− U
wh
w+ h
e+ 2
h
w+ h
e( U
e− U
i,j0h
e− U
i,j0− U
wh
w)
+ 2
h
n+ h
s( U
n− U
i,j0h
n− U
i,j0− U
sh
s)}
これを整理すると
U
i,j1= ϕ
2(r
i, z
j) + τ ψ
2(r
i, z
j) + c
2τ
2{ 1 2r
iU
e− U
wh
w+ h
e+ 1 h
w+ h
e( U
e− U
i,j0h
e− U
i,j0− U
wh
w)
+ 1 h
n+ h
s( U
n− U
i.j0h
n− U
i,j0− U
sh
s)}
という式が得られる。r
= 0
のときも同様に計算するとU
0,j1= ϕ
2(0, z
j) + τ ψ
2(0, z
j) + 2c
2τ
2h
2r(U
1,j0− U
0,j0) + c
2τ
2h
n+ h
s( U
n− U
i.j0h
n− U
i,j0− U
sh
s)
という式が得られる。これで数値計算の準備ができた。
4 数値計算
4.1
楕円領域の焦点領域
Ω
2で波動方程式を解くにあたって、(0, z
0)
をa < b
の場合のz
軸上にある 正の値の焦点の座標とする。以下の実験ではa = 3, b = 5
とする。すなわちΩ
2:= { (r, z); r
29 + z
225 < 1 ∧ r > 0 }
とする。z
0= √
b
2− a
2= 4
であり、(0, 4)
は楕円の焦点となる。4.2
初期値の設定検証したいのは、片方の焦点から発せられた波がもう片方の焦点に向かって反 射し収束するのかということである。よって片方の焦点上にピークをもち領域内 のいたるところで0になるような初期値をあたえる。この実験ではこのような初 期値を2種類用意した。
(nfunc=1)
a < b
の場合H(r, z) = Kexp( − M { r
2+ (z − z
0)
2} )
を用意し、ϕ
2(r, z) = {
H(r, z ) − 0.1 (H(r, z) ≧ 0.1) 0 (H(r, z) < 0.1)
とし、ψ
2についてはψ
2(r, z ) = 0
とした。(nfunc=2)
f(p) = {
(p
2− 1)
4(p < 1)
0 (p ≧ 1)
g(x, y) = Kf ( || x ||
0.5 )
を用意する。
g
はx = 0
で最大値K
、|| x || > 0.5
でf(x) = 0
となる。ϕ
2(r, z) = g (r, z − z
0).
とし、
ψ
2についてはψ
2(r, z ) = 0
とした。
K, M
で初期値の波のサイズ(幅、高さ)を変更できる。今回はK = 5, M = 10
とした。4.3
実行結果と考察楕円は平面上の二つの焦点からの距離の和が一定であるという性質を持ってい る。短軸
a = 3
、長軸b = 5
、波の速さc = 1
という条件から片方の焦点から出た 波が境界で反射し、もう片方の焦点へ行くのにかかる時間は10
と予想される。また、格子の分割数と時間の刻み幅を
(1)N
r= N
z= 500, τ = 0.001
(2)N
r= N
z= 1000, τ = 0.0005 (3)N
r= N
z= 2000, τ = 0.00025
(4)a = b = 2, N
r= N
z= 500, τ = 0.002
(5)N
r= N
z= 600, τ = 0.0005
でt = 10
前後の焦点を拡大したプロット と実行した。(6)N
r= N
z= 500, τ = 0.001
とN
r= N
z= 2000, τ = 0.00025
の場合の各時刻での 最大値をプロットした図も作成をした。
以下に考察を述べる。
• (1),(2),(3)
から、t = 10
で反対の焦点に反射していく様子が見て取れた。また
t = 22.5
付近で元の焦点に戻る様子もわかった。これらの挙動にほぼ違いがないことから、ある程度精度の良い計算が行えていると言える。
• (5)
は左の等高線図の緑の長方形の範囲を拡大して右の鳥瞰図にプロットし ている。t= 10
付近で焦点に小さい山ができている様子が検証できた。• t = 20
で元に戻らないことから、1
次元の計算ではないため解はt
に関して 周期関数ではないことがわかった。• 3
次元の計算結果との比較からも、これらの結果は過去の卒業研究と同じよ うな結果になっていることがわかる。• (4)
はa = b
のため球領域での計算結果となっている。a = b = 2
では中心か ら反射して中心に戻るのにt = 4
と考えられるが、t = 4, 8, 12
で中心に山が できてる様子が見て取れた。以下に
(3),(4),(5),(6)
の結果を載せる。(3)
に関しては、比較のために3
次元の 計算結果も載せてある。(3)N
r= N
z= 2000, τ = 0.00025
と3
次元プロット(5)N
r= N
z= 500, τ = 0.001
でt = 10
前後の焦点付近(6)N
r= N
z= 500, τ = 0.001
とN
r= N
z= 2000, τ = 0.00025
の場合の各時刻での 最大値参考