マルクスのアメリカ論 - HUSCAP3)_P49-82.pdf50 (238) 経済学研究第19 巻第3号 ーの過程としてあり,したがって社会主義革命は必然、的に世界史的変革で、あ
EFG法による2D Poisson...
Transcript of EFG法による2D Poisson...
2004年度 卒業論文
山形大学工学部情報科学科
小川 昂,河村 喜太郎
EFG法による2D Poisson ソルバー
目次目次目次目次目次
§1 はじめに .......................................................................... 1
§ 2 EFG法 ............................................................................... 2
2.1 基本境界条件を含む弱形式 ........................................................................2
2.2 MLS近似 .......................................................................................................2
2.3 離散化 ............................................................................................................3
2.4 数値積分法 ....................................................................................................4
§3 精度評価 ......................................................................... 9
3.1 重み関数のパラメータ ................................................................................9
3.2 積分点数 ........................................................................................................9
3.3 離散化誤差 ..............................................................................................10
§ 4 ソルバー ......................................................................... 14
§5 結論 ............................................................................... 17
参考文献 .................................................................................... 18
Appendix A 行列Aの計算方法 ............................................. 19
Appendix B 共役勾配法 .......................................................... 21
Appendix C ICCG法 ............................................................... 22
Appendix D 反復法の収束判定子.......................................... 23
- 3 -
§1 はじめに 一般に広く知られている有限要素法[1]や境界要素法は,偏微分方程式の初期値・境界
値問題を解く数値解法である.特に,有限要素法は最も多く使われてきた手法である.しか
しながら,同法ではあらかじめ領域を要素分割しておかなければならない.この要素分割は
主に手作業を伴った計算機による前処理として行われるため,膨大な時間と労力を要する.
また,節点を追加した場合,要素分割をやり直さなければならないことも有限要素法の欠点
である.Element-Free Galerkin Method (EFG法)[2]は上記問題を解決するために考え出され
た手法である.
EFG法は有限要素法とは異なり,要素分割の際に節点との接続情報を必要としないた
め,前処理のデータを簡素化できる.それ故,要素分割に時間がかからず,さらに,節点の
追加が容易である.しかしながら,同法では膨大な回数の数値積分が行われるため,連立一
次方程式を構成するまでに多大な時間を費やしてしまう.
本研究の目的は,重み関数のパラメータと積分点数が数値解の精度に及ぼす影響を調べ
ることである.また,得られた連立一次方程式を高速に解くソルバーの検討も行う.
- 4 -
§ 2 EFG法2.1 基本境界条件を含む弱形式
本研究では,2次元Poisson問題:
を対象とする.ここで,Ωは xy平面上の単一閉曲線 Ωで囲まれる領域であり,ΓD ∪ Γ
N =
Ω,ΓD
∩ ΓN = φを満たす境界 Ωの一部である(Fig. 2.1参照).また,p, , はそれぞれΩ
内 , ΓDおよび Γ
N上で定義された既知関数を表す.さらに,nを境界 Ω上の外向き単位法線
ベクトルとする.
命題(*1)をもとに基本境界条件を含む弱形式を導出する.汎関数を
で定義すれば,命題(*1)は拘束条件(2.2)を伴った汎関数 I[u]の停留値問題と等価になる.さ
らに,Lagrangeの未定係数法を用いて,新たな汎関数を
で定義すれば,同停留値問題は
(2.6)
と等価になる.但し,λは Lagrangeの未定係数である.また,δIは
で表される.以上より,2次元 Poisson問題は命題(*2)に帰着された.
EFG法では命題(*2)を出発点として連立一次方程式を構成する.しかしながら,同命題
を離散化するには形状関数が必要となる.以下では,MLS近似を用いて局所性をもつ形状
関数を求める.
2.2 MLS近似
まず,領域Ω内及び境界 Ω上にN個の節点 x1, x
2, …, x
Nを配置する.次に,点 x
iにお
ける関数 u(xi)の値 u
iを用いて u(x)を
(2.1)
(2.2)
(2.3)
(2.4)
(2.5)
(2.7)
- 5 -
(2.8)
で近似できると仮定する .このとき,pT(x) = [1, x, y, x2, xy, y2]であり,a(x)は
(2.9)
を最小にするように決定される.その結果,形状関数:
(2.10)
を導入すれば,近似関数 uh(x)は
(2.11)
で表される.但し,行列 A(x), ベクトル bj(x),ベクトル uはそれぞれ
(2.12)
(2.13)
(2.14)
で定義される.wi(x)は節点x
iに付随する重み関数であり, とする.ここで,
関数 w(r)を
(2.15)
で定義する.関数w(r)はFig.2.2に示すようにR / cをパラメータとして振る舞いが変化する.
(2.10)から得られた節点と重みから定まる φ1, φ
2, …, φ
NはMLS近似の形状関数と呼ばれ
る.以下では,
(2.16)
の仮定のもとで離散化を行う.
2.3 離散化
前節の(2.16)に加えて,δλ, λを
(2.17)
と仮定すると,u(x), λ(s)を
(2.18)
- 6 -
(2.19)
と表すことができる.但し,N,Mはそれぞれ全節点数,全境界節点数を示し,Nm(s)は一次
内挿関数である.
上記仮定のもとでN次正方行列 Aの第(i, j)要素,N次元ベクトル fの第 i成分,N×M
行列 Bの第(i, m)要素,M次元ベクトル gの第m成分をそれぞれ
(2.20)
(2.21)
(2.22)
(2.23)
で定義すれば,命題(*2)を
(2.24)
(2.25)
に離散化することができる.さらに,(2.24), (2.25)を連立することにより,
(2.26)
が得られる.以上より,2次元 Poisson問題は連立一次方程式(2.26)に帰着された.
2.4 数値積分法
行列A,ベクトルfを構成するには領域を積分する必要がある.ここでは,Gauss-Legendre
積分を用いた領域の数値積分法について述べる.
まず,対象領域を矩形セルΩe(e=1, 2,…, N
c)で分割する(Fig. 2.3 参照).但し,N
cを全
セル数とする.また,第 e番目のセルの面積を S(Ωe)と表す.ここで,
(2.27)
を定義すれば,(2.20)の右辺は
- 7 -
(2.28)
と離散化できる.
全矩形セルにGauss-Legendre積分を適用すれば,(2.28)の右辺は
(2.29)
で表せる.ここで,NGはセルΩ
e内に設置された全積分点数を表す.また,x
k, w
kはそれぞれ
第k番目の積分点の座標と重みを示す.本研究では,各矩形セル内に対して(2Ng−1)次の1次
元Gauss-Legendre積分を2回用いる[3].それ故,各セル内での積分点数は
NG = N
g2 , (2.30)
となる.
(2.29)の右辺を計算して aijを求めれば行列 Aを構成することができる(Appendix A参照
).また,ベクトル fも上記と同様の手順で構成することができる.
- 8 -
Ω
O x
y
ΓD
ΓN
Fig. 2.1. 領域と境界.
- 9 -
0
0.5
1
0 0 .5 1
w(r
)
r / R
D
C
B
A
Fig. 2.2. 関数w(r)の振る舞い.A:R / c = 1.0, B:R / c = 2.5, C:R / c = 5.0, D:R / c = 10.0
- 10 -
Ω
Fig. 2.3. 矩形セルで分割した領域.
- 11 -
§3 精度評価 本節では,重み関数のパラメータと積分点数が精度に及ぼす影響を調べる.精度の尺度
として,相対誤差:
(3.1)
を採用する.但し,uA,u
Nはそれぞれ解析解と数値解を表し,ノルムの定義には最大値ノル
ムを用いる.また,対象領域をΩ = (−1, 1)×(−1, 1)とする.さらに,既知関数として
(3.2)
(3.3)
を採用し,境界条件には全周Dirichlet条件を用いる.
3.1 重み関数のパラメータ
本研究で用いる重み関数は(2.15)より明らかなように,R / c をパラメータとしてもつ.
ここでは,最適なRと R / cを定める.
Rと R / cの相対誤差への依存性をFig. 3.1に示す.同図より,R / cが大きく,かつR
0.5のときに相対誤差が低くなっていることがわかる.したがって,R / cをできるだけ大き
くとり,Rを 0.5程度とするのが望ましい.以下では,R / c = 5.0, R = 0.5に固定する.
3.2 積分点数
ここでは,積分点数が数値解の精度に及ぼす影響を調べる.(2.30)から,領域に対して
与えられる総積分点数は
NT = (nN
g)2 (3.4)
で計算できる.但し, nを
n2 = Nc
(3.5)
とする.積分点数を評価するために,行列Aの最大値ノルムが収束する様子を調べる.(3.4)
と(3.5)から, は nとNgの関数A*(n, N
g)となる.積分点数は nを固定した状態と,N
gを固
定した状態で調べる.また,収束判定を
- 12 -
(3.6)
(3.7)
で行う.但し,(3.6), (3.7)はそれぞれNgを固定,nを固定した状態で積分点数を増加させた
ときの収束判定を示す.また,上式を満たしたNTをN
TOとする.
Fig. 3.2に行列Aの最大値ノルムが収束する様子を示す.同図より,NT
O = 1500付近で
振動していることが分かる.このことから,NT
Oに節点数依存性はなく,振動することを考
慮して NT
2000程度とすれば積分誤差は十分小さくできるといえる.以下では,NT =
2304(Nc = 16, N
g = 12)に固定する.
3.3 離散化誤差
ここでは,EFG法プログラムの離散化誤差を調べる.積分点数を十分与えることにより
積分誤差は小さくできるので,節点数の増加に伴って離散化誤差が顕著に表れるはずであ
る.
相対誤差の節点数依存性を Fig. 3.3に示す.同図から,ε 1 / N0.99で離散化誤差が減少
しており,有限要素法の一次要素と同程度の精度が得られていることがわかる.
- 13 -
Support Radius, RR / c
Rel
ativ
e E
rror
, ε
Rel
ativ
e E
rror
, ε
0.05
0.04
0.03
0.02
0.01
0
0.05
0.04
0.03
0.02
0.01
0
0.27 0.4 0.6 0.8 14
32
1
Support Radius, RR / c
Rel
ativ
e E
rror
, ε
Rel
ativ
e E
rror
, ε
0.05
0.04
0.03
0.02
0.01
0
0.05
0.04
0.03
0.02
0.01
0
0.27 0.4 0.6 0.8 14
32
1
(a)
(b)
Fig. 3.2. 相対誤差のパラメータR, R / cへの依存性(Nc = 16, N
g = 12).(a)N = 256, (b)N =
676.
- 14 -
Fig. 3.2. NT
Oの節点数依存性.
500
1500
2500
102 103
NT
O
Total Number of Nodes, N
- 15 -
10-3
10-2
10-1
102 103
Re
lativ
e E
rro
r, ε
Total Number of Nodes, N
Fig. 3.3. 相対誤差の節点数依存性.
- 16 -
§ 4 ソルバー ここでは,連立一次方程式の解法にGaussの消去法以外に,行列 Aの帯性(Appendix A
参照)を考慮した ICCG法(Appendix B, C参照)と単調版CG法の2つの反復法を採用し,ソ
ルバー毎の計算時間を調べる.
以下では,反復法の収束判定子 εを10−7と10−11として数値実験を行う(Appendix D参照
).まず,Fig. 4.1にGaussの消去法と反復法で連立一次方程式を解くまでに要した CPU時間
の節点数依存性を示す.Gaussの消去法では節点数の増加に伴ってCPU時間がほぼ一定の割
合で増加している.一方,反復法では節点数が103付近で,急激にCPU時間が増加している.
次に,Fig.4.2に残差ノルムの反復回数依存性を示す.同図から,節点数の増加に伴い残
差ノルムの収束が著しく遅くなっていることがわかる.また,単調版CG法の残差ノルムの
方が節点数に大きく依存して収束が遅くなっている.
- 17 -
Fig.4.1. CPU時間の節点数依存性.(a):εCG
=10−7,(b):εCG
= 10−11.但し,:ICCG法,
:単調版CG法,:Gaussの消去法.
10-2
10-1
100
101
102
103
102 103
CP
U T
ime
[s]
Total Number of Nodes, N
10-2
10-1
100
101
102
103
102 103
CP
U T
ime
[s]
Total Number of Nodes, N
(a)
(b)
- 18 -
Fig.4.2. 残差ノルムの反復回数依存性.(a)ICCG 法,(b)単調版CG法.但し,
A:N = 256, B:N = 441, C:N = 529, D:N = 676, E:N = 784.
(b)
(a)
10-11
10-7
10-3
101
0 400 800 1200
Re
sid
ua
l No
rm,
|| r k ||
Iteration Number, k
A B C
D
E
10-11
10-7
10-3
101
0 400 800 1200
Re
sid
ua
l No
rm,
|| r k||
Iteration Number, k
A
B C
D E
- 19 -
§5 結論 本研究では,重み関数のパラメータと積分点数が数値解の精度に及ぼす影響を調べ,さ
らに,Solverの検討を行った.本研究で得られた結論は以下のようになる.
1) 重み関数のパラメータR / cには最適値が存在する.本研究の場合,R / c = 5.0であっ
た.Rの値は計算時間と精度を考慮して 0.5程度が望ましい.
2) 積分誤差は節点数に依存せず,積分点数を多く与えることによって十分小さくなる.
本研究ではNT 2000程度で十分であった.
3) EFG法型連立一次方程式を反復法を用いて解いた場合,Gaussの消去法と比べてCPU
時間が大幅に増大する.それ故,CG法系統の手法を用いる場合,適切な前処理が必要
である.
- 20 -
参考文献[1] 菊地文雄,有限要素法概説[新訂版],サイエンス社, 1999.
[2] T. Belytschko, Y. Y. Lu and L. Gu, "Element-Free Galerkin Methods",
Int. J. Numer. Methods Eng., Vol. 37, pp.229 - 256, 1994.
[3] C. A. Brebbia, J. Dominguez, 詳解 境界要素法,付録A,田中正隆,松本敏郎,
中村正行,オーム社,1993.
[4] 洲之内治男,石渡恵美子(改訂),数値計算[新訂版],第8章,サイエンス社,2004.
[5] 森正武,FORTRAN77 数値計算プログラミング,第 6章,第 7章,岩波書店 , 2002.
- 21 -
Appendix A 行列Aの計算方法 ここでは,行列Aの計算方法と帯幅を見積もる方法について述べる.まず,a
i jを求め
て行列Aを構成するアルゴリズムを以下に示す.
do e = 1, 2, …, Nc :
S(Ωe) , x
1, x
2, …, x
Ng を計算する ,
do k = 1, 2, …, Ng:
を満たす iの集合 i1, i
2, …, i
pを求 める,
を計算する,
if ( ) then
do m = 1, 2, …, p :
do n = m, …, p :
aim in
= aim in
+( ),
end do
end do
end if
end do
end do
do i = 1, 2, …, N :
do j = 1, 2, …, N :
aj i = a
i j
end do
end do
次に,行列Aの半帯幅を見積もる方法を述べる.重み関数の性質から ai jは
(A.1)
のとき常に 0である.このことから,半帯幅を
(A.2)
と定義したとき
- 22 -
(A.3)
をみたす jの集合 j1, j
2, …, j
p*を用いて,半帯幅は
(A.4)
で計算できる.
Appendix Cで述べる ICCG法を用いる場合,(A.4)で計算した帯幅を利用して不完全コ
レスキー分解を効率よく行うことができる.さらに,行列とベクトルの積の演算量を減少さ
せることができる.
- 23 -
Appendix B 共役勾配法 ここでは,連立一次方程式の解法の一つとして,共役勾配法(Conjugate Gradient Method,
CG法)[4]について説明する.
連立一次方程式:
(B.1)
の係数行列Aが正定値対称であれば,同方程式は
(B.2)
の最小化問題と等価になる.CG法は同問題に基づき構成される.まず,任意の初期ベクト
ル x0を定める.次に,探索方向をAに関して共役の関係を満たすように決定し,線上探索
を繰り返すことにより(B.2)の最小値を求めていく.CG法のアルゴリズムを以下に記す.こ
こで,εは収束判定子を示す.
x0:初期ベクトル
do k = 0, 1, …
収束判定:
end do
- 24 -
Appendix C ICCG法 CG法は係数行列が単位行列に近いような連立一次方程式に適用すると,残差ノルムが
速く収束する可能性があることが知られている[5].ここでは,この性質を利用したICCG法
について述べる.
まず,解くべき連立一次方程式:
(C.1)
の係数行列Aを
(C.2)
に不完全コレスキー分解する.次に,(C.2)のDの要素の平方根を対角成分に持つ行列をD1/
2で表すと,(C.1)と同値な連立一次方程式:
(C.3)
を得る.このとき,(C.3)の左辺に現れる行列は
(C.4)
となっている.故に,(C.3)の解法にCG法を用いると高速に解を得ることができる.
本研究では,不完全コレスキー分解の際に
li id
i = 1 (C.5)
という条件を採用し,L, Dの各要素をそれぞれ
(C.6)
(C.7)
で計算している.但し,lk iは行列 Lの第(k, i)要素,d
kは行列Dの第(k, k)要素を示す.また,
ai j
= 0の場合,(C.6)の計算は行わずに強制的に li j = 0とおく.さらに,(C.7)の右辺の括弧
内が零,または非常に小さい値になった場合には計算機イプシロンを代入している.
- 25 -
Appendix D 反復法の収束判定子 反復法とGaussの消去法の計算時間を比べる場合,反復法で得られる解がGaussの消去
法と同程度の精度になるように収束判定子を定める必要がある.ここでは,本研究で用いた
反復法の収束判定子の決定方法について述べる.
まず,Gaussの消去法で得られる解と反復法で得られる解の相対誤差を
(D.1)
で定義する.但し,uG,u
CはそれぞれGaussの消去法で得た数値解と反復法で得た数値解を
表し,ノルムの定義には最大値ノルムを用いる.また,ICCG法と単調版CG法の収束判定
子をそれぞれ εIC
, εmoとする.Fig. D.1に反復法の eの収束判定子依存性を示す.但し,単調
版CG法はN > 676となると ICCG法とGaussの消去法に比べてCPU時間が大幅に増大して
しまうため,256 N 676の範囲で評価した.本研究では eの値が 10−5, 10−9以下になるよ
うな2つの収束判定子を採用する.同図から,この条件を満たすのはどちらの反復法の場合
も収束判定子がそれぞれ10−7, 10−11以下のときであることがわかる.故に,本研究では反復
法の収束判定子の値に 10−7と , 10−11の2つを採用した.
- 26 -
10-15
10-13
10-11
10-9
10-7
10-5
10-16 10-13 10-10 10-7
Re
lativ
e E
rro
r, e
Convergence Determinant, εIC
10-14
10-12
10-10
10-8
10-6
10-4
10-16 10-13 10-10 10-7
Re
lativ
e E
rro
r, e
Convergence Determinant, εmo
Fig. D.1. 解の収束判定子依存性.(a)ICCG法 , (b) 単調版CG法.但し,:N = 256,
: N = 676, :N = 971.
(b)
(a)