人気ブログランキング
人気ブログランキング
OPEN FOAMあれこれ指南 PR

OpenFOAM における非圧縮性流体と圧縮性流体の違いと各値の設定方法を紹介

記事内に商品プロモーションを含む場合があります

OpenFOAM は流体シミュレーションのためのオープンソースソフトウェアであり、
非圧縮性流体圧縮性流体 のどちらも計算することができます。
しかし、それぞれのモデルでは設定方法や計算手順が異なるため、正しく設定する必要があります。

本記事では、非圧縮性流体と圧縮性流体の違い、設定ファイルの詳細 について詳しく解説します。

1. 非圧縮性流体と圧縮性流体の違い

OpenFOAM の設定と違い

項目非圧縮性流体(incompressible)圧縮性流体(compressible)
密度と動粘度どちらも一定( = const)変化する
密度と動粘度の指定ファイルconstant/transportProperties密度
constant/thermophysicalProperties
動粘度
constant/transportProperties
密度と動粘度の計算一定値を設定密度:状態方程式
(例: 理想気体 ρ = p / RT
動粘度:温度依存のモデル
(例: Sutherland の式)
圧力方程式p_rgh(動圧)を使用p(全圧)を使用
熱伝導率基本的に不要。
※buoyantBoussinesqSimpleFoamは使用する
kを使用
constant/transportPropertiesで設定
エネルギー
方程式
解かない(速度・圧力のみ)必要(温度・エンタルピーを計算)
熱伝導率が必要。
ソルバーicoFoam, pisoFoam, simpleFoamrhoPimpleFoam, sonicFoam
設定ファイルの違いconstant/transportProperties のみ使用constant/thermophysicalProperties を追加
状態方程式なし(ρは一定)perfectGas, PengRobinsonGas など

2. CFL 数(Co値)と Δt の関係

CFL 数(Courant 数)は、数値計算の安定性を決定する重要な指標です。時間の刻みをコンロトールすることが出来るのです。

C >1・・・不安定(計算が発散するので1以上ににはしない)

C =1・・・ギリギリ安定を保つ

C<<1・・・安定するが、計算コストが増大(計算処理の時間がかかる)

CFL 数を制御するためには、system/controlDictmaxCo を設定します。

adjustTimeStep yes;
maxCo 0.5;

圧縮性流体の場合は、エネルギー方程式も考慮するため maxAlphaCo も設定します。

maxAlphaCo 0.3;

設定ファイルの例:system/controlDict

application     simpleFoam;
startFrom       latestTime;
startTime       0;
endTime         100;
deltaT          0.01;
writeControl    timeStep;
writeInterval   100;
adjustTimeStep  yes;  // Courant 数に応じて Δt を調整
maxCo           0.5;  // 最大 Courant 数

📌 Courant 数との関係

adjustTimeStep yes; を設定すると、CFL 数に応じて Δt が自動調整されます。

maxCo 0.5; にすると、Courant 数が 0.5 を超えないように Δt が制御されます。

3. 密度と動粘度の計算方法

(1) 非圧縮性流体の密度と動粘度

非圧縮性流体では、密度 ρ と動粘度νは一定と仮定され、どちらもconstant/transportProperties に設定します。

水(20℃)の場合

transportModel  Newtonian;

nu              [0 2 -1 0 0 0 0] 1.0e-6;  // 水の動粘性 (m²/s)
rho             1000;                     // 水の密度 (kg/m³)

空気(20℃)が温度圧力が一定とする場合(本当は圧縮流体ですが、非圧縮流体とする場合)

transportModel  Newtonian;

nu              [0 2 -1 0 0 0 0] 1.5e-5;  // 空気の動粘性 (m²/s)
rho             1.2;                      // 空気の密度 (kg/m³)

rho(密度, kg/m³)を 直接指定

nu(動粘性係数, m²/s)も合わせて指定(ν = μ / ρ

(2) 圧縮性流体の密度と動粘度

圧縮性流体では、密度動粘度 は異なるファイルで設定されます。

密度の設定

密度は圧力 p と温度 T の関数として計算され、状態方程式によって決まります。

設定するファイルは、constant/thermophysicalProperties です。

(a) 理想気体の状態方程式

constant/thermophysicalProperties

equationOfState perfectGas;
R 287;
(b) Peng-Robinson 状態方程式(高圧ガス)

constant/thermophysicalProperties

equationOfState PengRobinsonGas;
a 1.36;
b 0.034;

以下補足です。

thermophysicalPropertiesの中にあるmixtureとは何か?

mixture は、流体の種類を定義するためのパラメータで、単一流体 or 混合気体 を決めます。

単一成分の場合

mixture         pureMixture;  // 単一成分流体

複数成分の混合流体(例: 燃焼ガス)の場合

mixture         multiComponentMixture;  // 複数成分の混合流体

動粘度の設定

動粘度 μ温度依存 するため、constant/transportProperties で設定します。

Sutherland の式

Sutherland の式を用いて動粘度 μ(T) を計算します。

計算例(20℃ = 293K のときの動粘度)

➡ この設定により、圧縮性流体の動粘度 μ は温度 T から計算されます!

constant/transportProperties

transportModel  sutherland;

sutherlandCoeffs
{
    As  1.458e-06;  // Sutherland の粘性係数(kg/(m·s·K^0.5))
    Ts  110.4;      // Sutherland の基準温度(K)
}

📌 設定の意味

  • transportModel sutherland; → Sutherland の式を使用して動粘度 μ(T) を計算
  • As = 1.458e-06; → 空気の基準動粘度係数 [kg/(m·s·K^0.5)]
  • Ts = 110.4; → Sutherland の基準温度 [K]

4. エネルギー方程式

非圧縮性流体では密度が一定のため、圧力方程式のみを解きますが、圧縮性流体では密度や温度の影響を考慮するため、エネルギー方程式を解く必要があります。

エネルギー方程式は、圧縮性流体において温度やエンタルピーの計算に使用されます。

OpenFOAM では h(比エンタルピー)を計算する場合、次のように設定します。

thermoType
{
    type            hePsiThermo;
    mixture         pureMixture;
    transport       sutherland;
    thermo          hConst;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleEnthalpy;
}

equationOfState
{
    R               287.0;  // 理想気体定数 [J/(kg·K)]
}

thermodynamics
{
    Cp              1005;   // 定圧比熱 [J/(kg·K)]
    Hf              0;      // 標準エンタルピー(基準値)
}

📌 エネルギー方程式を解く理由

  • 圧縮性流体では温度変化が密度・圧力に影響 するため。
  • 高速流れや熱流体の計算にはエンタルピーが必要 だから。

5.熱伝導率の設定

熱伝導率kは、constant/transportPropertiesで設定します。

設定例:constant/transportProperties

transportModel  sutherland;

sutherlandCoeffs
{
    As  1.458e-06;
    Ts  110.4;
}

thermalConductivity
{
    k  0.025;  // 熱伝導率 [W/(m·K)] k = 0.025; → 空気の熱伝導率
}

6. 圧力の計算と p vs p_rgh の違い

(1) 圧力方程式の計算

圧力ポアソン方程式を解くことで、圧力を更新します。

OpenFOAM では次のように実装されます。

fvScalarMatrix pEqn
(
    fvm::laplacian(rAU, p) == fvc::div(phi)
);
pEqn.solve();

(2) pp_rgh の違い


圧力変数
説明
p全圧(静圧 + 動圧)
p_rgh動圧(流体の運動エネルギーを考慮した圧力)
p_rghは、重力が支配的な流れ(例: 船舶・海洋工学)で使用されることが多い!
ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。
関連記事一覧