$FOAM_TUTORIALS/compressible/sonicFoam/laminar/shockTube
衝撃波管は圧力の違う流体(主に気体)を隔膜で隔てて封入した管で、瞬間的に隔膜を取り除くことで衝撃波を発生させる実験装置です。
ここでは衝撃管を1次元でモデル化し、高圧側を 100000 Pa、低圧側を 10000 Pa として時刻 0 で隔膜を取り除き、衝撃波の発生する様子を0.007秒分だけ計算します。
乱流モデルは使用しません。
初期条件は以下の様にファイル system/setFieldsDict で指定します。
defaultFieldValues ( volVectorFieldValue U (0 0 0) volScalarFieldValue T 348.432 volScalarFieldValue p 100000 ); regions ( boxToCell { box (0 -1 -1) (5 1 1) ; fieldValues ( volScalarFieldValue T 278.746 volScalarFieldValue p 10000 ) ; } );
また以下の様にファイル constant/sample で X軸上にサンプリング点を1000点を指定し、計算後にサンプリングを行っています。
type sets; libs ("libsampling.so"); interpolationScheme cellPoint; setFormat raw; sets ( data { type uniform; axis x; start (-4.995 0 0); end (4.995 0 0); nPoints 1000; } ); fields (T mag(U) p);
メッシュは以下の通りで、X 座標 -5 から 5 までを1000分割しています。
計算結果は以下の通りです。
流速、圧力は以下の様になります。計算は1次元で行われていることに注意してください。
またサンプリングの結果は以下の様になります。
高圧方向から低圧方向へ進行する衝撃波を確認できます。
コマンド setFields で初期条件の設定、コマンド postProcess で計算結果からのサンプリングを行っています。
1.7秒 ※シングル、Inter(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19GHz