混相流解析

2011年6月25日

はじめに

OpenFOAM で混相流解析を行う。

使用バージョン

OpenFOAM 2.0.0

混相流解析ソルバー

OpenFOAM には混相流解析用のソルバーがいくつか用意されているが、ここではつぎの 2 つを対象とする。

  • interFoam
  • multiphaseInterFoam

interFoam

参考

$FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak

物性値の設定

物性値はケースの constant/transportProperties の phase1, phase2 でそれぞれ設定する。sigma で表面張力を設定する。

重力の設定

重力はケースの constant/g で設定する。

初期の体積分率の設定

ケースの system/setFieldsDict で、領域を指定して phase1 の体積分率 alpha1 を設定する。setFields を実行することでディレクトリ 0 の中のフィールドデータに設定が反映される。

境界条件の設定

流速の設定はケースの 0/U、体積分率の設定は 0/alpha1、圧力の設定は 0/p でそれぞれ行う。

静的接触角の設定は 0/alpha1 でつぎのように行う。

side-wall
{
         type constantAlphaContactAngle;
         theta0 60; //- Equilibrium contact angle
         limit gradient;
         value uniform 0;
}

動的接触角の設定はつぎようにする。

side-wall
{
         type dynamicAlphaContactAngle;
         theta0 60;  // Equilibrium contact angle
         uTheta 1.2; // Dynamic contact angle velocity scale
         thetaA 90;  // Limiting advancing contact angle
         thetaR 30;  // Limiting receding contact angle
         limit gradient;
         value uniform 0;
}

実行

(ケースのディレクトリに入り)
$ setFields
$ interFoam

multiphaseInterFoam

参考

$FOAM_TUTORIALS/multiphase/multiphaseInterFoam/laminar/damBreak4phase

物性値の設定

物性値はケースの constant/transportProperties で行う。interFoam と違って、3 相以上の設定ができる。チュートリアルのケース (damBreak4phase) では、air が refPhase (参照相?) に指定されている。sigma で相の組み合わせごとの表面張力を設定する。

重力の設定

重力はケースの constant/g で設定する。

初期の体積分率の設定

ケースの system/setFieldsDict で、領域を指定して各相の体積分率を設定する。setFields を実行することでディレクトリ 0 の中のフィールドデータに設定が反映される。

境界条件の設定

流速の設定はケースの 0/U、圧力の設定は 0/p、相の設定は 0/alphas および 0/alpha... (alphawater, alphaair など、相に指定した名前による) で行う。

接触角の設定は、refPhase で設定した相の 0/alpha... ファイルでつぎのように行う。

side-wall
{
    type            alphaContactAngle;
    thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( water oil ) 90 0 0 0 );
    value           uniform 0;
}
thetaProperties で相の組み合わせ分だけ設定する。各パラメタの意味はおそらく interFoam の dynamicAlphaContactAngle に対する theta0, uTheta, thetaA, thetaR (ソースではその順番で書かれているので)。refPhase で指定したもの以外の 0/alpha... の wall は "type zeroGradient" にしておけばよい。

実行

$ setFields
$ multiphaseInterFoam

解析上のヒント

時間刻み幅は自動調整にしたほうがよい。ケースの system/controlDict の adjustTimeStep を yes に設定すれば、時間刻み幅の自動調整が有効になる。

計算に失敗する場合、system/fvSolution の PIMPLE のパラメタ nAlphaCorr, cAlpha などの調整が効くかもしれない。

古い情報