CIP法

CIP法（CIPほう、）とは、矢部孝らによって提案された、双曲型偏微分方程式を解く高次精度差分法の一つである。CIP法は高精度差分スキームであるので、機械工学、流体、電磁気、弾性体力学などの分野で広く数値解析に使用されている。

 概要


CIP法では3次関数を補間関数として使用することで、双曲型問題に対して分散エラーが少ない、数値拡散が小さい、局所的な高精度補間ができる、等間隔格子を使う必要がないなどの利点が得られる。

右図で、左上の絵は移流の様子を表している。
これを格子点上の値として計算機に記憶させると右上の絵のようになる。
ここで、線形補間を行うと左下の絵のようになり、本当の波形であるピンク色の破線とはかなり開きが出てくる。
これが数値拡散であり、次の段階ではこの数値拡散によるなまりがさらに数値拡散を進展させることになる。
対して、右下の絵は傾きを考慮して補間を行っており、数値拡散が少ないことが分かる。

「CIP」とはもともとの略であったが、研究がすすむにつれて3次多項式以外の補間関数を用いる手法へと発展した。
これにより、開発者の矢部孝は「CIP法」という名称の意味を考え直し、CIP法の本質が3次多項式を用いることにあるのではなく、元の方程式から導かれるいろいろな拘束条件をプロファイル(波の形状)に反映させることこそが本質であるとして現在の名称に変更した。よってとのどちらも正式名称ということになる
CFD最前線 p.209参照
https://w.atwiki.jp/mynote/?page=CIP%20Memo。

 1次元移流方程式でのCIP解法 

CIP法は1次元移流方程式を高精度に解く解法である。1次元移流方程式は次式で与えられる。

ここで、cは移流速度である。

CIP法では、格子点の値についても同時に移流計算を行うことが特徴である。
空間微分値に対する移流方程式は、上の移流方程式を空間に関して微分することで得られ、以下のようになる。

時刻における値とその微分値が格子点上の点、(点は点の上流点、つまり移流速度
ならである)において既知とすると、この2点間のプロファイル(つまり形状)は以下のように3次多項式で表される。
ここで、上付き添字は時刻を、下付き添字は格子点番号をあらわす。

このようにプロファイルの補間関数を3次関数で表現することがたる所以である。
ここで、係数、は、

のようになる。
ただし、移流速度のとき、であり、移流速度のとき、である。

適合条件式により、、、、が成り立つので、上式において係数、が求まる。

このように、格子点上の点において微分値も与えられるので、格子間のプロファイルを3次多項式で補間することができ、精度の高い計算が可能となる。

対象とする問題は移流方程式であるので、次の時刻での値と微分値は、この2点間のプロファイルをだけ移動することで得られる。
つまり、として次式のようになる。

 多次元問題でのCIP解法 

CIP法は多次元問題での移流方程式についても適用可能である。例として、2次元での移流方程式を考えてみるが、一般に次元での移流方程式にも適用できることを断っておく。

さて、2次元移流方程式は以下のように表せる。

ここで、は変数ベクトル、は係数マトリクスである。

2次元移流方程式にCIP法を適用する方法として、2元3次の多項式を補間関数として使う方法(A型CIP法)や方向分離解法により1次元移流方程式に落とし込んで計算する方法(M型CIP法)などが考えられる。

 A型CIP法 

A型CIP法では、2次元移流方程式を解くにあたり、2元3次の多項式を補間関数として用いる。
つまり、軸、軸からなる平面空間において、補間関数は以下のようになる。

ここでも、点と点はそれぞれ、点と点の上流点である。
また、は係数であり、1次元での場合と同様に適合条件式より
格子点、、の値と微分値、格子点での値を用いて求められる。

A型CIP法では、点において値の連続性しか要求していない。
しかし、他の3点、、では
値と微分値の連続性も保証している。
このため、求めようとしている点に対して対角線上にあり最も遠い点のプロファイルが
不正確であるために、このプロファイルを持ってくるような大きな時間ステップをとってはならない。

 方向分離解法 

方向分離解法は一般に多次元問題を1次元問題に帰着させるために行われる。

 M型CIP法 

A型CIP法では補間関数の係数の数が多く、これを解析に適用しようとすると格子点上で覚えさせる値の数が多くなり、計算を行う上で合理的でない。

M型CIP法では、多次元の移流方程式に方向分離を行うことで幾つかの1次元移流方程式に帰着させ、1次元のCIPスキームで計算を行う。
方向分離解法を適用することで、上の2次元移流方程式をつぎのように分解できる。

このように方向分離を行うと、方向へ分離した式を解くことによって時刻の値から中間の値が得られ、方向へ分離した式を解くことによって中間の値から時刻の値が得られる。

M型CIP法で方向への移流計算を行うとき、ベクトルと方向の空間微分値については1節の1次元CIPスキームを使って解くことが出来るが、方向の空間微分値については更なる空間微分値を計算していないのでCIP法を使って求めることは出来ない。
よって方向の空間微分値を求めるためには線形補間を行うことで、移流計算を行う。

 C型CIP法 

M型CIP法では2階の空間微分値を計算していなかったので、空間微分値を計算する際は線形補間を行っていた。
この方法ではある程度の精度は保証されるが、格子間隔を広くとった場合などには方向の線形補間の影響が大きく出て、CIP法によるうまみを生かしきれなくなってしまう。

そこで、格子点上の2階空間微分値を覚え、方向にもCIP計算を行おうというのがC型CIP法である。

脚注

 参考文献 

 矢部孝、尾形陽一、滝沢研二：「CIP法とJavaによるCGシミュレーション」、森北出版、ISBN 978-4-627-91911-2、(2007年2月17日）。

 日本応用数理学会「応用数理」、Vol.18, No.2 (2008), (CIP法特集号）。 
 肖鋒、小野寺直幸、伊井仁志：「計算流体力学：CIPマルチモーメント法による手法」、コロナ社、ISBN 978-4-339-04597-0（2009年3月26日）。
 日本建築学会 (編)：「はじめての音響数値シミュレーションプログラミングガイド」（第6章：CIP(constrained interpolation profile)法）、コロナ社、ISBN 978-4-339-00838-8（2012年11月30日）。

 関連項目 
 移流
 差分法
 移流方程式
 方向分離解法

Category:応用力学