THX VISITING!

レッスン 特2

Since 24/July/2000.
もろほくナビ賃貸物件検索が登場!
 
 
 
coordinated by kura
HIROSHiSMに戻る。




Fortran ResQ > レッスン概要 > レッスン特2:Fortranの高精度差分法 ソース項を含むCIP法 [上級者への入り口]
 
では、より実用的にやっていきましょう。Extra 1では、実際の流体を計算する場合、必ずしも流れの向きが変わらないとは言い切れないということで、CIP法を一般化しましたが、ここでは、もっと有り得ないことに目を向けてみましょう。今まで1次元移流方程式を解いてきましたが、この方程式が一番有り得ない。実流体の場合、右辺がゼロということは、ほぼ100%有り得ません。摩擦や拡散と言った効果があるからです。じゃあ、今までのは無駄だったのか?大丈夫。使い道大いにありです。その使い方説明します。


分離解法

1次元移流方程式の右辺の値をとりあえずひとまとめに外力項(source項)として G と置きます。

(Ex2.1) ・・・(Ex2.1)

これが新たな基礎式となります。このままの形ではCIP法を適用出来ません。右辺はゼロじゃなきゃ駄目なんです。そこで、(Ex2.1)式を便宜的に以下の様に分離出来ると仮定します。

(Ex2.2 a,b) ・・・(Ex2.2 a, b)

そして、これをどうするかと言うと、f ( t ), f ( t + Δt )をそれぞれ、fn, fn+1、と置くと、(Ex2.1)式でfn→fn+1を求めるのを、いったん(Ex2.2a)式でfnftildaと中間量を求め、(extra.2-2b)式でftileda→fn+1を求める。このように2段階で計算します。これを分離解法と言い、移流を計算する段階をAdvection Phase、それ以外をNon-Advection Phaseと呼びます。イメージとしては、後で図にも示しますが、仮に G が拡散項だったとしたら、まず拡散する部分(Non-Advection)だけ計算して、その後、拡散したものを移流(Advection)させるといった感じです。整理すると次のようになります。

cond

Advection PhaseにはCIP法がそのまま使えます。で、CIP法を使うとなると、 f の空間微分量 fx が必要なので、同様に更新します。

cond

こんな文章と式だけ見てもよく分からないと思うので、図で見てみましょう。イメージが湧きやすいと思います。

fig.Ex2.1
[ 図-Ex2.1 ]

ちなみに、この分離解法という手法は計算上のテクニックです。理論的に分離してよいという根拠はありません。

Non-Advection Phase(非移流項)の計算

では、実際に解いてみましょう。(Extra.2-2a)式より

(Ex2.3) ・・・(Ex2.3)

よって、

(Ex2.4) ・・・(Ex2.4)

となります。計算点を i とすれば、

(Ex2.5) ・・・(Ex2.5)

です。この式でNon-Advection Phaseの f が更新されます。
続いて微分量の更新です。 (Ex2.4)式の両辺を x で微分すると、

(Ex2.6) ・・・(Ex2.6)


G の空間微分を中央差分で表すと、

(Ex2.7) ・・・(Ex2.7)


です。一方、G は(Ex2.3)式で表されるように、

(Ex2.8) ・・・(Ex2.8)

なので、これを(Ex2.7)式に代入して、

(Ex2.9) ・・・(Ex2.9)

となり、この式でNon-Advection Phaseの微分量が更新出来ます。

Advection Phase(移流項)の計算

Advection Phaseの(Ex2.2b)にはこれまでにやってきたCIP法が使えるので、使います。

(Ex2.10) ・・・(Ex2.10)

係数 a, b

(Ex2.11) ・・・(Ex2.11)

続いて微分量です。(Ex2.2b)式の両辺を x で微分すると、

(Ex2.12) ・・・(Ex2.12)

これは、どっかで見た形。そう、(Ex2.1)式と同じ形です。と言うわけで、分離します。

(Ex2.13 a,b) ・・・(Ex2.13a, b)

じゃあ、またCIP法?それはかったるい。CIP法では F の空間微分量を必ず出すので、それを使います。すなわち、(Ex2.13a)式は、

(Ex2.14) ・・・(Ex2.14)

で求め、(Ex2.13b)式は、右辺に中央差分を適用して差分化すると、

(Ex2.15) ・・・(Ex2.15)

これをまとめて、

(Ex2.16) ・・・(Ex2.16)

これで、Advection Phaseの微分量も更新出来ました。

まとめ

以上をまとめると、

fig.Ex2.2
[ 図-Ex2.2 ]

-- f の更新 --
(Ex2.5) ・・・(Ex2.5)
-- f の微分量の更新 --
(Ex2.9) ・・・(Ex2.9)


fig.Ex2.3
[ 図-Ex2.3 ]

-- f の更新 --
(Ex2.10) ・・・(Ex2.10)
ただし、
(Ex2.11) ・・・(Ex2.11)
-- f の微分量の更新 --
(Ex2.14) ・・・(Ex2.14)
(Ex2.16) ・・・(Ex2.16)

問題Ex2-1.

それでは、計算行ってみよう。 source項はとりあえず中央差分のところでやった拡散項とします。これだとただの移流拡散方程式で面白くないので、流れが時間的、空間的に変化するように設定してみましょう。

解説

[ DL ソースコード ]

[ イメージ(クリックすると大きくなります。) ]

movieEx2.1
[ 動-Ex2.1 ]

解説

いまいち空間的な流れの変化が分かりにくいですかね...でも、こんなのどうやって計算結果を検証したら良いんでしょうね?だれかこれを理論的に解いて。
 

 Copyright © 2000-2004 Hiroshi Kurabayashi. All Rights Reserved.アクセス解析