計算領域はであり、の位置で最小値を取る。
密度、運動量、全エネルギーに対する式をそれぞれ得る。(導出は割愛)
準1次元問題として解いているため、各項には断面積が掛けられていることに注意。
密度:
運動量:
右辺の圧力項は断面積変化がなければゼロとなる。
全エネルギー:
ここで、新たに導入した変数は単位体積あたりの全エネルギーではなく単位質量あたりの内部エネルギーであるので注意。 また変数はいずれも無次元化しているが、とについてはいずれもではなくリザーバーでの値とをそれぞれ用いて無次元化していることに注意。
前節での保存量に対して以下の保存変数を導入する。
また、支配方程式中の流束を以下のようにおく。
これらの項は保存量, , で表すことができて、
このように流束はすべて保存変数を使って計算することを考える。 ここまで徹底して保存変数に置き換えるやり方は見たことがなかったので参考になった。
ただし文献 [1] で示されている通り、実際の解法ではは式 (11) の形のまま扱っていて、の関係より圧力の代わりに密度と温度を使って解いている。
前回と同様にMacCormack法を用いる。
ただし何も考えずに実装したら配列の添字の領域外参照が発生したので、少しだけ細工した。(あとでソースコードで示したい)
時間刻みは前回と同様なので省略。
文献 [1] の式 (7.120a)-(7.120f) で与えられる値を用いた。 前回の初期条件よりも手の込んだ分布になっているが、文献いわく
this is in anticipation that the stability behavior of the finite-difference formulation using the conservation form of the governing equation might be slightly more sensitive, and therefore it is useful to start with more improved initial conditions than those given in Sec. 7.3.1 by Eqs. (7.74a) to (7.74c). (p.344)
とのこと。安定性についての言及がもし本当ならばこれは残念。
基本的には前回と同様。
流入境界は亜音速流れなので2変数を固定し1変数を変動させる。 ここで固定しているのは保存変数ではなくて原始変数 (primitive variables)、それも前回と同様に密度と温度になっている。 それに対して、前回と同様に変動させている(=外挿で求めている)のは速度ではなく、保存変数になっている。 外挿した保存変数からは(密度一定なので)速度が求まり、速度が得られればもう一つの保存変数の値も(温度一定なので)求まる。 結果的に(もっとも)筋の良いやり方になっているように見えるけれども、このあたりのどの変数を固定し・どれを動かすべきかの相場観はまだ掴めていない。
流出境界は超音速流れなので3つの保存変数, , を変動させる。これは楽。
前回と同様にマッハ数分布。 JuliaでGIFアニメーションを作れるようになったので動画にしてみる。
100ステップ動かすとだいたい解析解に近づく。 実際にはもう少しステップ数を稼いで収束させたほうが良さそう。
初期条件のところで述べたように、今回は "改善された (improved)" 初期条件が与えられていた。 上のアニメーションからもわかるように、とりわけ亜音速領域 () では少し変動しただけで収束解が得られていて、あまり面白みがない。 懸念された安定性の確認も兼ねて、もっと雑な初期条件を与えてみた。
一応解くことができたので一安心。
ステップ数付近では流入直後の位置でマッハ数がゼロを下回っている。 このステップでの物理量を確認したところ、速度が負の値になっていた。 本来であればノズルフローにおいては(である限り)逆流は起こりえず、非物理的な状態ではあったものの、なんとか持ちこたえてくれた。
準1次元ノズルフローを保存型で解いて、前回の非保存型で解いた場合と同様の解を得ることができた。
今回の保存型の定式化は文献 [1] に準じたものだったけど、しかし普段よく見かける式とは少し異なる部分があった: が内部エネルギーであること、また圧力とエネルギーが参照値で無次元化されていること。 次はこの2点を修正して見慣れた式に置き換えることを試みたい。
[1] | John D. Anderson, "Computational Fluid Dynamics: The Basics With Applications," McGraw-Hill Inc. (1995) |