CIP法

提供: testwiki
2025年1月28日 (火) 15:50時点における133.86.227.82 (トーク)による版 (参考文献)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

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

概要

数値拡散が起こる様子

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

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

「CIP」とはもともとテンプレート:Langの略であったが、研究がすすむにつれて3次多項式以外の補間関数を用いる手法へと発展した。 これにより、開発者の矢部孝は「CIP法」という名称の意味を考え直し、CIP法の本質が3次多項式を用いることにあるのではなく、元の方程式から導かれるいろいろな拘束条件をプロファイル(波の形状)に反映させることこそが本質であるとして現在の名称に変更した。よってテンプレート:Langテンプレート:Langのどちらも正式名称ということになる [1] [2]

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

CIP法計算スキームのイメージ

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

ft+cfx=0

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

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

gt+cgx=0

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

Fin(x)=ai(xxi)3+bi(xxi)2+gin(xxi)+fin


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

ai=gin+giupnD2+2(finfiupn)D3
bi=3(fiupnfin)D22gin+giupnD

のようになる。 ただし、移流速度c>0のときD=Δxiup=i1であり、移流速度c<0のときD=Δxiup=i+1である。


適合条件式により、Fin(0)=finFin(0)x=ginFin(D)=fiupnFin(D)x=giupnが成り立つので、上式において係数aibiが求まる。

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

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

fin+1=Fin(ξ)=aiξ3+biξ2+ginξ+fin
gin+1=Fin(ξ)x=3aiξ2+2biξ+gin

多次元問題でのCIP解法

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


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

𝒇t+𝑪1𝒇x1+𝑪2𝒇x2=0

ここで、𝒇は変数ベクトル、𝑪α(α=1,2)は係数マトリクスである。

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

A型CIP法

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

Fi,jn(x1,x2)=C3,0(x1x1iup)3+C2,0(x1x1iup)2+gxi,jn(x1x1iup)+fi,jn
+C0,3(x2x2jup)3+C0,2(x2x2jup)2+gyi,jn(x2x2jup)+C2,1(x1x1iup)2(x2x2jup)+C1,1(x1x1iup)(x2x2jup)+C1,2(x1x1iup)(x2x2jup)2

ここでも、点iupと点jupはそれぞれ、点iと点jの上流点である。 また、Cは係数であり、1次元での場合と同様に適合条件式より 格子点(i,j)(iup,j)(i,jup)の値fnと微分値gn、格子点(iup,jup)での値fiup,jupnを用いて求められる。


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

方向分離解法

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

M型CIP法

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

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

𝒇t+𝑪1𝒇x1=0
𝒇t+𝑪2𝒇x2=0

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


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

𝖬   𝖢𝖨𝖯        (nn+1)σijnσijnxασijnxβ𝖢𝖨𝖯 𝖥𝖣𝖬σij*σij*xασij*xβσij*σij*xβσij*xα𝖢𝖨𝖯 𝖥𝖣𝖬σijn+1σijn+1xβσijn+1xαxα         xβ         

C型CIP法

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


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

𝖢   𝖢𝖨𝖯        (nn+1)σijnσijnxασijnxβ2σijnxαxβ𝖢𝖨𝖯 𝖢𝖨𝖯 σij*σij*xασij*xβ2σij*xαxβσij*σij*xβσij*xα2σij*xαxβ𝖢𝖨𝖯 𝖢𝖨𝖯 σijn+1σijn+1xβσijn+1xα2σijn+1xαxβxα         xβ         

脚注

テンプレート:Reflist

参考文献

  • テンプレート:Cite book
  • 矢部孝、尾形陽一、滝沢研二:「CIP法とJavaによるCGシミュレーション」、森北出版、ISBN 978-4-627-91911-2、(2007年2月17日)。
  • テンプレート:Cite book
  • 日本応用数理学会「応用数理」、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日)。

関連項目