4. 現象を支配する方程式(支配方程式)
現象は微分方程式によって記述
微分と積分が計算できれば現象を明らかにできる
支配方程式
場所や時間によって方程式は変わらない
流体の支配方程式
0
i
i
x
u
t
j
ij
ij
iji
xx
p
x
uu
t
u
i
i
i
iji
i
i
i
i
x
q
x
u
x
pu
x
Eu
t
E
(質量保存式)
(エネルギ保存式)
(運動量保存式)
先端GPGPUシミュレーション工学特論4 2015/06/11
5. 移流方程式
流体中の物質の移動を表す方程式
流れている水の中に落ちたインクの移動等
時刻t=0におけるfの分布(初期値)が既知
時間進行に伴い,fがどのように変化するかを計算
時間積分しながらfの分布を求める
0
),(),(
x
txf
u
t
txf
先端GPGPUシミュレーション工学特論5 2015/06/11
0
),,(),,(),,(
y
tyxf
v
x
tyxf
u
t
tyxf u : x方向速度
v : y方向速度
41. 2次元への拡張
x方向1階偏微分
y方向を固定してx方向に偏微分
y方向1階偏微分
x方向を固定してy方向に偏微分
Δx
yΔxxfyΔxxf
x
f
2
),(),(
Δy
ΔyyxfΔyyxf
y
f
2
),(),(
先端GPGPUシミュレーション工学特論41 2015/06/11
42. 時間積分
時間微分項の離散化
時間微分項を前進差分で離散化
右辺のt+tの項を移行
Δt
tyxfΔttyxf
t
f ),,(),,(
先端GPGPUシミュレーション工学特論42 2015/06/11
y
f
v
x
f
u
t
f
t
f
ΔttyxfΔttyxf
),,(),,(
移流方程式を代入
y
tyxf
v
x
tyxf
uΔttyxfΔttyxf
),,(),,(
),,(),,(
44. 離散化された移流方程式
連続系
離散系
t秒後の値
0
),,(
),,(
),,(
),,(
),,(
y
tyxf
tyxv
x
tyxf
tyxu
t
tyxf
0
22
1,1,
,
,1,1
,
,
1
,
Δy
ff
v
Δx
ff
u
Δt
ff n
ji
n
jin
ji
n
ji
n
jin
ji
n
ji
n
ji
Δy
ff
v
Δx
ff
uΔtff
n
ji
n
jin
ji
n
ji
n
jin
ji
n
ji
n
ji
22
1,1,
,
,1,1
,,
1
,
先端GPGPUシミュレーション工学特論44 2015/06/11
62. CPUプログラム
境界条件
fのx, y方向差分
いずれの時刻においても0
境界でf=0を満たすためには差分
が0でなければならない
先端GPGPUシミュレーション工学特論62 2015/06/11
f,d_f_dx,d_f_dy
y
f
v
x
f
uΔtff nn 1
63. CPUプログラム
fの積分
先端GPGPUシミュレーション工学特論63 2015/06/11
Δy
ff
v
Δx
ff
uΔtff
n
ji
n
jin
ji
n
ji
n
jin
ji
n
ji
n
ji
22
1,1,
,
,1,1
,,
1
,
void integrate(double *f,double *d_f_dx,double *d_f_dy,
double *u, double *v,double *f_new){
int i,j,ij;
for(i=0;i<Nx;i++){
for(j=0;j<Ny;j++){
ij = i+Nx*j;
f_new[ij]=f[ij] ‐ dt*(u[ij]*d_f_dx[ij]+v[ij]*d_f_dy[ij]);
}
}
}
72. gnuplotによる結果の表示
2015/06/11先端GPGPUシミュレーション工学特論72
スクリプトanim.gplの内容
set xrange [‐1:1] x軸の表示範囲を‐1~1に固定
set yrange [‐1:1] y軸の表示範囲を‐1~1に固定
set zrange [‐0.2:1.2] z軸の表示範囲を‐0.2~1.2に固定
set ticslevel 0 xy平面とz軸の最小値表示位置の差
set hidden3d 隠線消去をする
set view 45,30 視点をx方向45°,y方向30°に設定
set size 1,0.75 グラフの縦横比を1:0.75
unset contour 2次元等高線は表示しない
set surface 3次元で等値面を表示
unset pm3d カラー表示はしない
以下でファイルを読み込み,3次元表示
splot 'f0.00.txt' using 1:2:3 with line title "t=0.00s"
...
splot 'f1.00.txt' using 1:2:3 with line title "t=1.00s"
74. gnuplotによる結果の表示
2015/06/11先端GPGPUシミュレーション工学特論74
スクリプトanim_color.gplの内容
set xrange [‐1:1] x軸の表示範囲を‐1~1に固定
set yrange [‐1:1] y軸の表示範囲を‐1~1に固定
set zrange [‐0.2:1.2] z軸の表示範囲を‐0.2~1.2に固定
set ticslevel 0 xy平面とz軸の最小値表示位置の差
set hidden3d 隠線消去をする
set view 45,30 視点をx方向45°,y方向30°に設定
set size 1,0.75 グラフの縦横比を1:0.75
unset contour 2次元等高線は表示しない
set surface 3次元で等値面を表示
set pm3d カラー表示する
以下でファイルを読み込み,3次元表示
splot 'f0.00.txt' using 1:2:3 with line title "t=0.00s"
...
splot 'f1.00.txt' using 1:2:3 with line title "t=1.00s"
76. gnuplotによる結果の表示
2015/06/11先端GPGPUシミュレーション工学特論76
スクリプトanim_2d.gplの内容
set xrange [‐1:1] x軸の表示範囲を‐1~1に固定
set yrange [‐1:1] y軸の表示範囲を‐1~1に固定
set zrange [‐0.2:1.2] z軸の表示範囲を‐0.2~1.2に固定
set view 0,0 真上から見下ろす
set size 1,1 グラフの縦横比を1:1
set contour 2次元等高線を表示
unset surface 3次元で等値面を表示しない
unset pm3d カラー表示しない
set cntrparam levels incremental 0,0.1,1
等高線を0から1まで0.1刻みに設定
以下でファイルを読み込み,3次元表示
splot 'f0.00.txt' using 1:2:3 with line title "t=0.00s"
...
splot 'f1.00.txt' using 1:2:3 with line title "t=1.00s"