衝撃波管

OpenFOAM 4.x

ケース

$FOAM_TUTORIALS/compressible/rhoCentralFoam/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軸上にサンプリング点を100点を指定し、計算後にサンプリングを行っています。

type sets;
libs ("libsampling.so");

interpolationScheme cellPoint;

setFormat       raw;

sets
(
	line
	{
		type    face;
		axis    x;
		start   (-5 0 0);
		end     (5 0 0);
		nPoints 100;
	}
);

fields          ( p U.component(0) T rho );

メッシュは以下の通りで、X 座標 -5 から 5 までを100分割しています。

メッシュ メッシュ

計算結果は以下の通りです。

流速、圧力は以下の様になります。計算は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.007 秒での圧力(p) 0.007 秒での圧力(p)
0.007 秒での温度(T) 0.007 秒での温度(T)
0.007 秒での密度(rho) 0.007 秒での密度(rho)

実行コマンド

cp -r $FOAM_TUTORIALS/compressible/rhoCentralFoam/shockTube shockTube
cd shockTube

blockMesh
setFields
rhoCentralFoam
postProcess -func sample

paraFoam

gnuplot
gnuplot>plot "postProcessing/sample/0.007/line_p_T_rho.xy" using 1:2 lc rgb "gray" # pressure at 0.007 sec
gnuplot>plot "postProcessing/sample/0.007/line_p_T_rho.xy" using 1:3 lc rgb "gray" # temperature at 0.007 sec
gnuplot>plot "postProcessing/sample/0.007/line_p_T_rho.xy" using 1:4 lc rgb "gray" # density at 0.007 sec

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

計算時間

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

参照