数学とか語学とか楽しいよね

ドイツ語、ロシア語、オランダ語、英語、フランス語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。

【数値計算】流束制限関数とは何だろう?そのアイディア

流束制限関数というのは、数値流体力学において双曲型の方程式を効率良く解くために考案された手法です。以下にそのアイディアを示します。


移流方程式に対して高次精度の差分を使うと衝撃波(解の勾配がきつくなる所)
近辺で数値解が振動してしまう、つまり正しい解を得られなくなってしまう。

一次精度の風上差分を使うと衝撃波近辺でも数値解は振動しないが、
数値拡散が強く衝撃波がなまってしまう。

高次精度の差分と一次精度の風上差分のよいとこどりをした手法を作ろう。

こうしたアイディアのもと考案されたのが流束制限関数(flux limiter)です。例えばminmodとかsuperbeeとか色々な種類のlimiterがあります。流束制限関数を用いて風上差分と高次の差分をつなぎます。衝撃波の近辺では風上差分で、十分解が滑らかな領域では高次の差分に切り替えて計算を行います。

次回は、数値流束の話、minmodとかsuperbeeの具体的な形やその実装を見ていきましょう。