非圧縮性流体ソルバーにおける温度計算

2020年12月29日

はじめに

function object の energyTransport を用いて、非圧縮性流体ソルバーにて温度計算を行う方法について。

使用バージョン

OpenFOAM v2012

energyTransport

v1712 から、function object にエネルギー方程式を追加するための energyTransport が追加されている。たとえば、interFoam (damBreak ケースなど) で温度計算を行うには、次のように設定する。

system/controlDict

functions
{
    energyTransport
    {
        type            energyTransport;
        libs            ("libsolverFunctionObjects.so");

        enabled         true;
        writeControl    outputTime;
        writeInterval   1;

        field           T;

        rho             rho;
        phi             rhoPhi;

        write           true;

        phaseThermos
        {
            alpha.water
            {
                Cp          4200;
                kappa       0.6;
            }
            alpha.air
            {
                Cp          1e3;
                kappa       0.0243;
            }
        }
    }
}

単相流の場合は、Cp、kappa を rho などと同じ並びに記述すればよい。

energyTransport は、エンタルピーではなく温度 (field で指定した変数) について解く。

interFoam の例

interFoam の damBreak ケースで energyTransport を用いるには、たとえば以下のようにすればよい。

  • まず、上記 function object の設定を controlDict に記述する。
  • 温度 T を解くので、0/T を用意する。
  • system/fvSchemes に T の対流項の設定を追加。
    divSchemes
    {
        ...
        div(phi,T) Gauss vanLeer;
    }
    
  • system/fvSolution に T のソルバーの設定と緩和係数の設定を追加。
    solvers
    {
       ...
        T
        {
            solver          PBiCGStab;
            preconditioner  DILU;
            tolerance       1e-06;
            relTol          0.05;
        } 
    }
    
    relaxationFactors
    {
        equations
        {
            T    0.5;
            ".*" 1;
        }
    }
    
  • setFields で water の部分に高温を指定すると結果がわかりやすい。system/setFieldsDict に以下のように設定すればよい。
  • defaultFieldValues
    (
        volScalarFieldValue alpha.water 0
        volScalarFieldValue T 300
    );
    
    regions
    (
        boxToCell
        {
            box (0 0 -1) (0.1461 0.292 1);
            fieldValues
            (
                volScalarFieldValue alpha.water 1
                volScalarFieldValue T 500
            );
        }
    );