33
流体シミュレーションにおける様々な手法 廣瀬三平 (芝浦工業大学) 2016/6/12 物理現象の演出可能な離散モデルの構築 1 / 33

流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

流体シミュレーションにおける様々な手法

廣瀬三平 (芝浦工業大学)

2016/6/12物理現象の演出可能な離散モデルの構築

1 / 33

Page 2: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

Outline

1. 非圧縮性流体の方程式2. 非圧縮性流体の方程式の離散化3. 格子法4. 粒子法5. PIC/FLIP

2 / 33

Page 3: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

非圧縮性流体の方程式

3 / 33

Page 4: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

非圧縮性流体の方程式

∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

∇ · u = 0

1本目: 非圧縮性流体の運動を記述する Navier-Stokes方程式2本目: 質量保存を表す連続の方程式

t: 時間x: 空間座標

2次元 (x1, x2)

3次元 (x1, x2, x3)

u: 流体の速度p: 圧力ρ: 質量密度ν: 動粘性係数

−(u · ∇)u: 移流項ν∆u: 粘性項

−1

ρ∇p: 圧力項

f : 外力項

物体の流れではなく, 流れを生み出す速度の変化を記述4 / 33

Page 5: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

非圧縮性流体の方程式 (2次元)

∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

∇ · u = 0

u = (u1, u2)

f = (f1, f2)

(a1, a2) · (b1, b2) =2∑

k=1

akbk = a1b1 + a2b2

∇ = (∂

∂x1,

∂x2)

∆ = ∇ · ∇ =

2∑k=1

∂2

∂x2k

=∂2

∂x21

+∂2

∂x22

ならば

∂ui

∂t= −

2∑k=1

uk∂ui

∂xk+ ν

2∑k=1

∂2ui

∂x2k

− 1

ρ

∂p

∂xi+ fi (i = 1, 2)

2∑k=1

∂uk

∂xk= 0

5 / 33

Page 6: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

非圧縮性流体の方程式 (3次元)

∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

∇ · u = 0

u = (u1, u2, u3)

f = (f1, f2, f3)

(a1, a2, a3) · (b1, b2, b3) =3∑

k=1

akbk = a1b1 + a2b2 + a3b3

∇ = (∂

∂x1,

∂x2,

∂x3)

∆ = ∇ · ∇ =

3∑k=1

∂2

∂x2k

=∂2

∂x21

+∂2

∂x22

+∂2

∂x23

ならば

∂ui

∂t= −

3∑k=1

uk∂ui

∂xk+ ν

3∑k=1

∂2ui

∂x2k

− 1

ρ

∂p

∂xi+ fi (i = 1, 2, 3)

3∑k=1

∂uk

∂xk= 0

6 / 33

Page 7: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

移流項∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

∇ · u = 0

流体の流れに沿っての変化を表す流れに沿った視点で見れば静止運動であるので無視できる

ラグランジュ微分 Du

Dt:=

∂u

∂t+ (u · ∇)uを普通の微分と見なせる

格子法: 固定された座標 =⇒ 移流項を考慮する必要あり粒子法: 流れに沿った座標 =⇒ 移流項を考慮する必要なし

∂u

∂t= −(u · ∇)u

流れに沿って変化していく様子を記述初期値を F とした解は

u = F (x− tu)

この解の表示より初期値が x0 で滑らか =⇒ 解は x0 + tuで滑らか初期値が x0 で特異性を持つ =⇒ 解は x0 + tuで特異性を持つ

7 / 33

Page 8: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

粘性項

∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

∇ · u = 0

流体の粘性を表すν が大きいと粘りが強いν が小さいと粘りが弱い

∂u

∂t= ν∆u

拡散方程式と呼ばれ, 物質が広がっていく過程を記述ラプラシン ∆: 周囲と平均化する演算子

平均化 =⇒ 一部が動くとその周りも合わせて動く =⇒ 粘性初期値に特異性があってもすぐに滑らかになる

8 / 33

Page 9: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

圧力項

∂u

∂t= −(u · ∇)u+ ν∆u−1

ρ∇p+ f

∇ · u = 0

流体の互いに押し合う力を表すpはポアソン方程式を解くことにより求める

Navier-Stokes方程式に ∇·をかけると

∂(∇ · u)∂t

= −∇ · (u · ∇)u+ ν∆(∇ · u)− 1

ρ∇ · ∇p+∇ · f .

連続の方程式より

0 = −∇ · (u · ∇)u− 1

ρ∆p+∇ · f

整理すると∆p = ρ {−∇ · (u · ∇)u+∇ · f}

この手法は離散化で重要な役割を果たす

9 / 33

Page 10: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

連続の方程式

∇ · u = 0

ただし

∇ · u =

∂u1

∂x1+

∂u2

∂x2(2次元)

∂u1

∂x1+

∂u2

∂x2+

∂u3

∂x3(3次元)

∂uk

∂xk: ベクトル uの xk 方向の流入, 流出量を記述

正負の符号により xk 方向の流入量, 流出量を表す0ならば xk 方向からの流入量は流出量と等しいこと表す

連続の方程式は流入した分はすべて流出していることを表す連続の方程式 = 質量保存

10 / 33

Page 11: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

非圧縮性流体の方程式の離散化

11 / 33

Page 12: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

時間微分の離散化

∂u

∂t= lim

δt→0

u(t+ δt)− u(t)

δt∼ u(t+ δt)− u(δt)

h: 前進差分

∂u

∂t= lim

δt→0

u(t)− u(t− δt)

δt∼ u(t)− u(t− δt)

δt: 後進差分

∂u

∂t= lim

δt→0

u(t+ δt)− u(t− δt)

2δt∼ u(t+ δt)− u(t− δt)

2δt: 中心差分

後進差分, 中心差分は前の時間での値 u(t− h)が必要であり使いにくい時間微分の離散化には前進差分を使用

∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

=⇒ u+ − u

δt= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

=⇒ u+ = u+ δt

{−(u · ∇)u+ ν∆u− 1

ρ∇p+ f

}

以上より考えるべきは空間に関する微分が含まれている右辺の離散化

12 / 33

Page 13: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

格子法と粒子法の違い

格子法固定された格子 (メッシュ)に情報を持たせる微分方程式の解析によく用いられており, 様々な手法が研究されている誤差の評価についても進んでいる

粒子法固定された格子ではなく, 粒子 (パーティクル)に情報を持たせる移流項を考慮に入れる必要がない流体が2つに千切れるなどの大変形の記述ができる

これらを混ぜた手法も存在

13 / 33

Page 14: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

フラクショナル・ステップ法∂u

∂t= −(u · ∇)u+ ν∆u− 1

ρ∇p+ f

フラクショナル・ステップ法では次のように分解し, 交互に計算を行い時間発展∂u

∂t= −(u · ∇)u+ ν∆u+ f

∂u

∂t= −1

ρ∇p: 圧力

ここではさらに次のように分解したものを考える∂u

∂t= f : 外力

∂u

∂t= −(u · ∇)u: 移流

∂u

∂t= ν∆u: 粘性

∂u

∂t= −1

ρ∇p: 圧力

これを利用し次のように時間発展

u(x, t)外力=⇒ u1(x, t)

移流=⇒ u2(x, t)

粘性=⇒ u3(x, t)

圧力=⇒ u(x, t+ δt)

14 / 33

Page 15: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

格子法

15 / 33

Page 16: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

有限差分法を用いた離散化以下では有限差分法, つまり微分の差分化

∂u

∂t= lim

δt→0

u(t+ δt)− u(t)

δt∼ u(t+ δt)− u(t)

δt

を用いて方程式を離散化 (外力の離散化は単純なので省略)

例∂u

∂t= v

離散化すると∂u

∂t= u =⇒ u(t+ δt)− u(t)

δt= u(t)

=⇒ u(t+ δt) = (1 + δt)u(t)

これより初期値 u(0) = aがわかればu(δt) = (1 + δt)u(0) = (1 + δt)a

u(2δt) = (1 + δt)u(1) = (1 + δt)2a

u(3δt) = (1 + δt)u(2) = (1 + δt)3a

...

と t = δt, 2δt, 3δt, . . .(格子)での値 u(δt), u(2δt), u(3δt), . . .が求められる16 / 33

Page 17: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

移流項の離散化∂u

∂t= −(u · ∇)u

簡単のため 1次元で説明∂u

∂t= −u

∂u

∂x

=⇒ u(x, t+ δt)− u(x, t)

δt= −u(x, t)

u(x+ δx, t)− u(x, t)

δx

=⇒ u(x, t+ δt) = u(x, t)− δt

δxu(x, t) {u(x+ δx, t)− u(x, t)}

現在の時間の値 u(x, t), u(x+ δx, t)より u(x, t+ δt)が決まる

注意上記手法では不安定 (振動, 発散)になる可能性がある別の手法として移流項を粒子の流れとしたセミラグランジュ法

u(x, t+ δt) = u(x− δtu(x, t), t)

が用いられている (Stam, Stable Fluids)

17 / 33

Page 18: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

粘性項の離散化∂u

∂t= ν∆u

簡単のため 1次元で説明

∂u

∂t= ν

∂2u

∂x2

=⇒ u(x, t+ δt)− u(x, t)

δt= ν

u(x+ δx, t)− 2u(x, t) + u(x− δx, t)

δx2

=⇒ u(x, t+ δt) = u(x, t) + νδt

δx2(u(x+ δx, t)− 2u(x, t) + u(x− δx, t))

現在の時間の値 u(x, t), u(x+ δx, t), u(x− δx, t)より u(x, t+ δt)が決まる

注意”求めたい値=既知の量の組み合わせ”である陽解法は不安定になりやすい(半)陰解法は安定になりやすい

u(x, t+ δt)− u(x, t)

δt= ν

u(x+ δx, t+ δt)− 2u(x, t+ δt) + u(x− δx, t+ δt)

δx2

18 / 33

Page 19: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

圧力項の離散化∂u

∂t= −1

ρ∇p

圧力 pの満たす方程式をこの方程式より導出∂u

∂t= −1

ρ∇p

=⇒ u+ − u

δt= −1

ρ∇p (時間微分の離散化)

=⇒ ∇ · u+ −∇ · uδt

= −1

ρ∇ · ∇p (∇·を左からかける)

=⇒ ∆p =ρ

δt∇ · u (=: f) (連続の方程式 ∇ · u+ = 0)

このポアソン方程式を離散化して整理すると連立方程式が得られる

1次元の場合は次であり, 境界値 p(x− δx), p(x+ (N +1)δx)を与えると解けるp(x+ δx)− 2p(x) + p(x− δx) = δx2f(x)

p(x+ 2δx)− 2p(x+ δx) + p(x) = δx2f(x+ δx)

...

p(x+ (N + 1)δx)− 2p(x+Nδx) + p(x+ (N − 1)δx) = δx2f(x+Nδx)19 / 33

Page 20: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

格子法による計算

u(x, t)外力=⇒ u1(x, t)

移流=⇒ u2(x, t)

粘性=⇒ u3(x, t)

圧力=⇒ u(x, t+ δt)

の各ステップで以下を離散化した方程式を用いる∂u

∂t= f : 外力

∂u

∂t= −(u · ∇)u: 移流

∂u

∂t= ν∆u: 粘性

∂u

∂t= −1

ρ∇p: 圧力

以上は簡単のためレギュラー格子を用いたレギュラー格子: 速度と圧力をセルの頂点に配置

他に次のような格子があるコロケート格子: 速度と圧力をセルの中心に配置スタッガード格子: 速度をセルの面, 圧力をセルの中心に配置

20 / 33

Page 21: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

粒子法

21 / 33

Page 22: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

粒子を用いた離散化物理量を持つ粒子 Pi (i = 1, . . . , N)を用いて方程式を離散化

ui: 速度xi: 位置pi: 圧力

速度 uが自身の流れに乗って変化すると∂u

∂t+ (u · ∇)u = 0

粒子の視点で考えた Navier-Stokes方程式はDu

Dt= ν∆u− 1

ρ∇p+ f

ただし Du

Dt:=

∂u

∂t+ (u · ∇)u: ラグランジュ微分

粒子の視点に立った Navier-Stokes方程式の離散化はu+ − u

δt= ν∆u− 1

ρ∇p+ f

以下ではMPS(Moving Particle Semi-implicit)法を用いて離散化22 / 33

Page 23: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

重み関数以下, 煩雑さを避けるため時間の記号は省略

2つの粒子の影響を表す重み関数は

w(r) =

{rer

− 1 (0 < r < re)

0 (r ≥ re)

r は 2つの粒子の距離, re は影響の範囲を表す0 < r < re: 2つの粒子が近くなので影響を与える

r が 0に近い =⇒ 影響は大きいr > re: 2つの粒子が遠くなので影響を与えない

粒子 Pi の周りの粒子の多さを表す粒子数密度を次で定義

ni =∑j ̸=i

w(|xj − xi|)

特に粒子数密度の基準値 nを

n = ”中心”にある粒子の粒子数密度

23 / 33

Page 24: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

微分演算子の離散化∇f の粒子 Pi の位置 x = xi での近似値

⟨∇f⟩i :=d

n

∑j ̸=i

{f(xj)− f(xi)

|xj − xi|2(xj − xi)w(|xj − xi|)

}∆f の粒子 Pi の位置 x = ri での近似値

⟨∆f⟩i :=2d

λn

∑j ̸=i

(f(xj)− f(xi))w(|xj − xi|)

ただしd: 空間の次元λ: ”中心”にある粒子 Pi の周りの粒子との距離の平均値

λ =

∑j ̸=i

|xj − xi|2w(|xj − xi|)∑j ̸=i

w(|xj − xi|)

これを用いて粘性項, 圧縮項を離散化24 / 33

Page 25: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

微分演算子の離散化: 差分法との比較1次元で粒子が x−1 = x− δ,x0 = x,x1 = x+ δxに存在する場合は

n =∑

j=−1,1

w(δx) = 2w(δx), λ =

∑j=−1,1

δx2w(δx)∑j=−1,1

w(δx)= δx2

⟨∇f⟩0 =1

2w(δx)

∑j=−1,1

{f(xj)− f(x0)

δx2(xj − x0)w(δx)

}=

1

2δx2{(f(x− δx)− f(x))(−δx) + (f(x+ δx)− f(x))δx}

=f(x+ δx)− f(x− δx)

2δx∼ ∂f

∂x= ∇f

⟨∆f⟩0 =2

2w(δx)δx2

∑j=−1,1

(f(xj)− f(x0))w(δx)

=1

δx2{(f(x− δx)− f(x)) + (f(x+ δx)− f(x))}

=f(x+ δx)− 2f(x) + f(x− δx)

δx2∼ ∂2f

∂x2= ∆f

25 / 33

Page 26: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

粒子法による計算

ui

xi

外力=⇒

u1i

x1i = xi + δtu1

i

粘性=⇒

u2i

x2i = x1

i + δtu2i

圧力=⇒

ui,+

xi,+ = x2i + δtui,+

の各ステップで以下を離散化した方程式を用いるDu

Dt= f : 外力

Du

Dt= ν∆u: 粘性

Du

Dt= −1

ρ∇p: 圧力

ただし, 圧力 pについては粒子法の場合と同様にポアソン方程式を解いて求める

∆p =ρ

δt∇ · u

速度 ui と同時に位置 xi も更新するので移流項が不要

26 / 33

Page 27: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

SPH法

関数 f(x)の近似として粒子 Pj の質量mj , 密度 ρj を用いて

⟨f(x)⟩ =∑j

mj

ρjf(xj)wh(|x− xj |)

関数 f(x)の微分の近似は wh(|x− xj |)の微分を利用

SPH法圧縮性流体の計算手法陽解法を使用 (ポアソン方程式を解かない)

MPS法非圧縮性流体の計算手法半陰解法を使用 (ポアソン方程式を解く)

以上は様々な拡張があり, ともに圧縮性, 非圧縮性への適用が考えられている

27 / 33

Page 28: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

PIC/FLIP

28 / 33

Page 29: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

格子法, 粒子法の利点格子法: 移流項以外の計算が得意粒子法: 移流項の計算が得意

PIC, FLIP, PIC/FLIP

∂u

∂t= ν∆u− 1

ρ∇p+ f : 格子を用いて計算

∂u

∂t= −(u · ∇)u: 粒子を用いて計算

違いは格子と粒子のデータのやり取り

次において提案PIC (Particle-In-Cell): F. H. Harlow (1955)

FLIP (FLuid-Implicit-Particle): J. U. Brackbill and H. M. Ruppel (1986)

PIC/FLIP: Y. Zhu and R. Bridson (2005)

29 / 33

Page 30: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

PIC

PICのアルゴリズム1. 粒子の速度 up を格子 ug に移す演算子をMp→g とすると

ug = Mp→gup

2. 移流項以外 ∂u

∂t= ν∆u− 1

ρ∇p+ f を格子法で計算し, 格子の速度 ug を

新たな速度 ug,+ に更新3. 格子の速度を粒子に移す演算子をMg→p とすると

uPp,+ = Mg→pug,+

4. 粒子の速度を用い, 粒子を移動

Mp→g, Mg→p は例えば次のような (必ずしも正方ではない)行列Mg→p: 粒子の速度の (重み付き)平均を表す行列Mp→g: 格子の速度の線形補間を表す行列

結果として得られるのは粘度の高い流体Mp→g, Mg→p: (おおよそ)平均を取る演算子 =⇒ 粘度

30 / 33

Page 31: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

FLIP

FLIPのアルゴリズム1. 粒子の速度 up を格子 ug に移す

ug = Mp→gup

2. 移流項以外 ∂u

∂t= ν∆u− 1

ρ∇p+ f を格子法で計算し, 格子の速度 ug を

新たな速度 ug,+ に更新3. 格子の速度の変化量を粒子の速度に加える

uFp,+ =up +Mg→p(ug,+ − ug)

=(I −Mg→pMp→g)up +Mg→pug,+

=up −Mg→pMp→gup + uPp,+

PICでの速度 uPp,+ に

もとの速度 up −平均化した速度Mg→pMp→gup

を追加 (“高周波成分”)

4. 粒子の速度を用い, 粒子を移動

結果として得られるのはノイズが減衰しない流体高周波成分は移流項のみで時間発展その他の項, 特に拡散項の影響がは考えられていない 31 / 33

Page 32: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

PIC/FLIP

PIC/FLIP

PICと FLIPを混ぜ合わせて良い粘度の流体を作成

uPFp,+ =αuP

p,+ + (1− α)uFp,+

=αMg→pug,+ + (1− α) {up +Mg→p(ug,+ − ug)}=(1− α)(I −Mg→pMp→g)up +Mg→pug,+

αとしては動粘性係数 ν で表されるものが用いられる

α =6δt

δx2ν

α = 0: PIC, α = 1: FLIP

32 / 33

Page 33: 流体シミュレーションにおける様々な手法 - 九州大 …粘性項 @u @t = (u ∇)u + ∆u 1 ˆ ∇p + f ∇ u = 0 流体の粘性を表す が大きいと粘りが強い

参考文献

Robert Bridson, Fluid Simulation for Computer Graphics (2nd ed), A KPeters/CRC Press.

Jos Stam, Stable fluids, Proc. ACM SIGGRAPH.

Yongning Zhu and Robert Bridson, Animating sand as a fluid, ACMTrans. Graph. 24.

安東遼一, Chapter 13 ベクタ形式で出力可能な美しいマーブル模様の生成法 (Computer Graphics Gems JP 2012), ボーンデジタル.

安東遼一, Chapter 14 FLIP法による格子&粒子のハイブリッド流体シミュレーション (Computer Graphics Gems JP 2012), ボーンデジタル.

河村哲也, 流体解析の基礎, 朝倉書店.

桑原邦郎, 河村哲也, 流体計算と差分法, 朝倉書店.

越塚誠一, 粒子法 (計算力学レクチャーシリーズ), 丸善出版.

越塚誠一, 柴田和也, 室谷浩平, 粒子法, 丸善出版.

33 / 33