衝撃波管

OpenFOAM 4.x

ケース

$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次元で行われていることに注意してください。

0 秒での流速(U) 0 秒での流速(U)
0.003 秒での流速(U) 0.003 秒での流速(U)
0.007 秒での流速(U) 0.007 秒での流速(U)
0 秒での圧力(p) 0 秒での圧力(p)
0.003 秒での圧力(p) 0.003 秒での圧力(p)
0.007 秒での圧力(p) 0.007 秒での圧力(p)

またサンプリングの結果は以下の様になります。

0.003 秒での流速(U) 0.003 秒での流速(U)
0.007 秒での流速(U) 0.007 秒での流速(U)
0.003 秒での圧力(p) 0.003 秒での圧力(p)
0.007 秒での圧力(p) 0.007 秒での圧力(p)

高圧方向から低圧方向へ進行する衝撃波を確認できます。

実行コマンド

cp -r $FOAM_TUTORIALS/compressible/sonicFoam/laminar/shockTube shockTube
cd shockTube

blockMesh
setFields
sonicFoam
postProcess -func sample

paraFoam

gnuplot
gnuplot>plot "postProcessing/sample/0.007/data_T_mag(U)_p.xy" using 1:3 lc rgb "gray" # magnitude of U at 0.007 sec
gnuplot>plot "postProcessing/sample/0.007/data_T_mag(U)_p.xy" using 1:3 lc rgb "gray" # pressure at 0.007 sec

コマンド setFields で初期条件の設定、コマンド postProcess で計算結果からのサンプリングを行っています。

計算時間

1.7秒 ※シングル、Inter(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19GHz

参照