徒然なる日々を送るソフトウェアデベロッパーの記録(2)

技術上思ったことや感じたことを気ままに記録していくブログです。さくらから移設しました。

CIP法

また書籍紹介です。

CIP法とJavaによるCGシミュレーション

CIP法とJavaによるCGシミュレーション

2011 年頃アマゾンの「欲しいものリスト」に入れたまま
買っていなかった本ですが、ようやく購入することが
出来ました。

結論としては、もっと早く読んでおくべきだった...

移流方程式を精度よく数値計算する方法として CIP 法が
紹介され、応用編として電磁場の拡散や流体方程式
(粘性や外力はないものとするが、圧縮性かつ断熱膨張
は考慮に入れる)の解法が紹介されます。

移流方程式
{\displaystyle
\frac{\partial f}{\partial t}-c\frac{\partial f}{\partial x} = 0
}
は単純な形をしているので、差分化しても簡単に
解けるのだろうと思っていましたが、解法によっては
振動が発生したり、境界でおかしな挙動をしたりします。

CIP 法は三次補間法の一種で、関数値とその微分を連続
させるような方程式で補間パラメータを接続します。

電流や流体方程式の右辺はどうするのかと思いますが、
差分法手式を2つの方程式系に分けます。
{\displaystyle
\frac{f^* - f^n}{\Delta t} = G
}

{\displaystyle
\frac{f^{n+1} - f^*}{\Delta t} - c\frac{\partial f}{\partial x} = 0
}
両者と足し合わせると元の偏微分方程式となります。
f^*は外力があるときの単なる時間発展、f^n
移流方程式ですから、精度よく元の方程式を解くことができます。

二次元の場合の CIP 法の説明が駆け足となっていますが、
これは他の書籍で触れられているためと思われます。
同じ著者による CIP 法のもう少し突っ込んだ解説本が
ありますので、そちらも読んでみたくなりました。