流体解析のあれこれ

流体解析をこよなく愛する有限体積法の信者によるブログ

フリーソフトウェア「AV似非」によるスカラーのコンターとベクトルの可視化

以前紹介したとおり,「ParaView」は有償の可視化ソフトウェアと比較して十分な機能を有し,遜色ないくらい軽快に動作する.「ParaView」を使う前は,ずいぶん前から開発は止まっているが,フリーソフトウェアAV似非」を用いていた.「AV似非」は二次元の構造格子を対象として,x-y平面あるいはr-theta平面上のスカラーのコンターおよびベクトルを可視化することができる.機能は限定的であるが,ちょっとした可視化に重宝する.



MAC系解法とSIMPLE系アルゴリズム(1)

非圧縮性流体を対象とした解析では,圧力の分離解法(いわゆるカップリングスキーム)としてMAC (Marker And Cell)系解法とSIMPLE (Semi-Implicit Method for Pressure-Linked Equations)系アルゴリズムのいずれかが用いられる.今回はMAC系解法とSIMPLE系アルゴリズムのいずれかを選ぶ基準について簡単にまとめる.

クーラン数と拡散数が十分に小さい場合,計算時間の観点からMAC系の解法のなかでもSMAC (Simplified MAC)が最も良いと思われる.SMACでは,Adams-bashforth法やRunge-Kutta法などの陽解法により定式化し,代数的に中間速度を求める.次に,圧力補正値のみ連立方程式を解くことで速度と圧力を求める.外部反復を必要としないことから,全体の計算時間が短くなる.一方,例えば,壁近傍のメッシュが細かく,拡散数が大きくなってしまう場合にはFractional Step法が良いと思われる.Fractional Step法では,運動量保存式中の粘性項のみ陰的に取り扱い,Crank-Nicolson法や完全陰解法などの陰解法により定式化し,連立方程式を解くことで中間速度を求める.次に,圧力補正値の連立方程式を解くことで速度と圧力を求める.中間速度の連立方程式を解く分,SMACよりも計算時間を要するものの,やはり外部反復を必要としないことから,全体の計算時間が短くなる.

一方,クーラン数も拡散数も大きい場合,あるいは時間刻み無限大の定常計算を行う場合,MAC系解法を用いることはできず,SIMPLE系アルゴリズムを用いる必要がある.ア例えば,SIMPLEでは,運動量保存式中の粘性項に加えて,対流項も陰的に取り扱う,陰解法により定式化し,連立方程式を解くことで中間速度を求める.次に,圧力補正値のみ連立方程式を解くことで速度と圧力を求める.ただし,運動量保存式中の非線形な対流項を陰的に取り扱うため,上記手順を反復する外部反復を必要とする.そのため,SIMPLE系アルゴリズムをクーラン数の小さい計算に適用すると外部反復膨大な計算時間を要することになり,不適切であるだけでなく,求めたい時刻まで計算を実施することが不可能になってしまう.

有限体積法におけるMAC系の解法

密度一定の(個人的には密度が圧力によって変化しないと理解している)非圧縮性流体の圧力の分離解法(いわゆるカップリングスキーム)は,アメリカのロスアラモス国立研究所が開発したMAC (Marker And Cell)系解法とイギリスのインペリアルカレッジが開発したSIMPLE (Semi-Implicit Method for Pressure-Linked Equations)系アルゴリズムに大別される.著者の知る限り,MAC系解法には,MAC,SMAC (Simplified MAC),HSMAC (Highly-Simplified MAC),Fractoinal Step法があり,本質的にはほとんど同じである.クーラン数の小さい条件で実施する非定常流れの計算には,計算時間の観点からSIMPLE系アルゴリズムよりもMAC系解法が適しており,なかでもSMACとFractional Step法が広く用いられている.有限差分法におけるMAC系解法について解説している参考書は数多く出版されているものの,有限体積法で用いられるMAC系の解法について詳しく解説している参考書はほとんどない.著者の知る限り唯一,「化学工学プログラミング演習, 4.2 SOLA法(2次元場), pp. 108-117, 培風館 (2000)」でSOLA (HSMAC)法がソースコードを含めて解説されている.有限体積法におけるMAC系解法を勉強したい方には重宝すると思われる.

連続の式と化学種の保存式の不一致

燃焼などの化学反応を伴う流れの計算では,連続の式と化学種の保存式の化学種に関する総和が一致しなければならない.化学種の保存式の非定常項と対流項の化学種の総和はそれぞれ連続の式における非定常項と対流項に帰着し,生成項すなわち化学種の正味の生成速度の総和はゼロとなる.しかしながら,フィックの法則を用いる場合,拡散係数の取り扱いによっては拡散項の総和はゼロにならず,これが連続の式と化学種の保存式の不一致の原因となり,解析精度や反復計算における収束性の悪化を招く.拡散係数が化学種によらず同じ場合には,化学種に関する総和がゼロになるため,拡散項の総和もゼロとなるのに対し,拡散係数が化学種によって異なる場合には,拡散係数の総和はゼロにはならない.なお,Reynolds-Averaged Navier-Stokes (RANS)式の場合,拡散係数が化学種によって異なったとしても,乱流動粘性係数を乱流シュミット数で除すことで評価する乱流拡散係数が拡散係数と比較して十分に大きいため,この問題は生じない.一方,Large Eddy Simulation (LES)の場合,乱流拡散係数が拡散係数が同程度のオーダとなるため,この問題が生じる.本来,多成分系における拡散はFickの法則の拡張ではなく,Stefan-Maxwell (あるいはMaxwell-Stefan)式により記述すべきである.Stefan-Maxwell式については別の機会に紹介する.

乱流流れにおける化学反応速度の推算

一般に,化学反応速度は温度の関数であるアレニウス型の反応速度定数と反応物の濃度の積で表される.燃焼のような化学反応を伴う流れの計算を行う場合,化学種の保存式の右辺にこの化学反応速度が現れる.エネルギーの保存式としてとくべき変数を内部エネルギーやエンタルピーではなく,温度とする場合にもエネルギーの保存式の右辺にもこの化学反応速度が現れる.層流流れは言うまでもなく,乱流流れに対してDirect Numerical Simulation (DNS)を実施する場合には化学反応速度をそのまま求めることができる.一方,Reynolds-Averaged Navier-Stokes (RANS)式に基づく計算やLarge Eddy Simulation (LES)を実施する場合,上記の保存式における化学反応速度を含む各項は時間平均あるいは空間平均される.しかしながら,この化学反応速度を含む項を時間平均あるいは空間平均する方法論が確立されていない.これは特にアレニウス型の反応速度定数が温度に対して非線形に変化するためである.そのため,RANSやLESの式にアレニウス型の反応速度を用いた例が散見されるが,厳密にはこれらはすべて間違いである.

Flamelet-Generated Manifolds methodとFlamelet/Progress-Variable approachの違い

学会などでFlamelet approachの1つであるFlamelet-Generated Manifolds (FGM) methodFlamelet/Progress-Variable (FPV) approachが混同して用いられている場合がある.オリジナルの文献によると,FGMでは予混合火炎を対象に,FPVでは拡散火炎を対象にFlamelet tableを構築している.そのため,予混合火炎を対象に構築したFlamelet tableを用いるFlamalet approachをFGM,拡散火炎を対象に構築したFlamelet tableを用い,混合分率と反応進行変数をパラメータとするFlamelet approachをFPVと呼ぶべきであろう.

CANTERAでunity Lewis number assumption

CANTERAは反応動力学計算で広く用いられているフリーソフトウェアである.CANTERAは燃焼モデルの1つであるFlamelet approachで用いられるFlamelet tableの構築にも用いられている.Flamelet approachの多くではいわゆる"ルイス数1"を仮定する(unity Lewis number assumption)が,CANTERAでunity Lewis numberを指定する方法に関する情報がないため,以下にメモしておく.

CANTERAで対向流拡散火炎を計算するためのPythonのスクリプトで,

のL.31の
f = ct.CounterflowDiffusionFlame(gas, width=width)
下あたりに
f.transport_model = 'UnityLewis'
を追加すればunity Lewis number assumptionで計算することができる.