LiggghtsとOpenfoaｍのカップリング 実行ファイル解説１

前回、LiggghtsとOpenfoamのカップリングを行う、CFEDEMのチュートリアルの実行を行いました。
今回は実行ファイルの中身を確認したいと思います。

↓チュートリアル実行の記事

https://qiita.com/maumu1119/items/a72de9db17ad8f32334c

カップリングには、LiggghtsとOpenfoamの設定ファイルがそれぞれ必要になりますが、まずはOpenfoam側の設定ファイルの中身を確認していきます。

## 設定ファイル構成
前回と同じくErgunTestMPIのチュートリアルを対象として中身を確認していきます。
~~~保存先ディレクトリ.(環境により読み替えてください)
インストール先/CFDEM/CFDEMcoupling-PUBLIC-5.x/tutorials/cfdemSolverPiso/ErgunTestMPI
~~~
フォルダーを確認すると以下のような構成になっています

~~~sh
ErgunTestMPI/
        ┣  CFD/                     #Openfoam設定フォルダ
        ┃     ┝ 0/                  
        ┃     ┝ constant/           
        ┃     ┝ octave/             
        ┃     ┝ system/             
        ┃     └ steps_0p1s          
        ┃
        ┣  DEM/                     #Liggght用設定フォルダ
        ┃     ┝ post/               
        ┃     ┝ in.liggghts_init    
        ┃     └ in.liggghts_run                
        ┃ 
        ┣  Allrun.sh                #カップリング実行用スクリプトファイル
        ┣  parCFDDEMrun.sh          #CFDソルバーの実行ファイル
        ┗  parDEMrun.sh             #DEMソルバーの実行ファイル)
~~~
さらに、Openfoam設定フォルダの中身を詳しく確認していきます。

~~~sh
CFD/                     
　┝ 0/                               #初期値・境界条件
　│  ├ epsilon                       #乱流エネルギー散逸率
　│  ├ k                             #乱流エネルギー
　│  ├ Ksl                           #流体-固体間の相交換係数
　│  ├ nut                           #乱流動粘性係数
　│  ├ p                             #圧力
　│  ├ rho                           #流体密度
　│  ├ U                             #流体速度
　│  ├ Us                            #固体速度
　│  └ voidfraction                  #間隙率
  ┝ constant/         
　│        ├ couplingProperties      #カップリング計算の基本設定
　│        ├ g                       #重力
　│        ├ liggghtsCommands        #連成計算中のLiggghtsコマンドの実行
　│        ├ RASproperties           #過去バージョンでの乱流モデル設定(不要)
　│        ├ transportProperties     #輸送物性
　│        └ turbulenceProperties    #乱流モデル設定
　┝ octave/                          #検証用グラフプロット
　│      ├ loaddata                  #解析データの読み込み
　│      └ totalPressureDrop         #Ergunの式に基づく圧損算出        
  ┝ system/  
　│      ├ blockMeshDict             
　│      ├ controlDict               
　│      ├ controlDict.foam          #??不要
　│      ├ decomposeParDict          
　│      ├ funkySetFieldsDict        #voidfraction初期値の設定用(使用していないので不要)
　│      ├ fvSchemes                 
　│      └ fvSolution                       
  └ steps_0p1s                       #速度Uの初期値の設定用(使用していないので不要)
~~~

いくつか過去バージョンで使用してしたと思われるものが、残っていますが現在のバージョンでは使用されていないため不要です。
特徴的なものに絞って解説していきます。

#### Ksl
0/Kslは、流体-固体間の相交換係数の初期値を指定します。相交換係数とは流体と固体の相互作用の度合いを表しており、ある流体セルでのvoidfraction(流体の間隙率)をファクターとして計算されるものとなります。
~~~0/Ksl.
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.6                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [1 -3 -1 0 0 0 0];

internalField   uniform 0;

boundaryField
{
    ".*"
    {
        type            zeroGradient;
    }
}
// ************************************************************************* //
~~~

#### rho
0/rhoは流体の密度を指定します。cfdemSolverPisoは非圧縮ソルバーのため初期値で指定した流体の密度は計算中に代わることはありません。このケースでは10kg/m<sup>3</sup> を設定しています。
~~~0/rho.
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.6                                   |
|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      rho;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [1 -3 0 0 0 0 0];

internalField   uniform 10;

boundaryField
{

    wall
    {
        type            zeroGradient;
    }

    inlet
    {
        type            zeroGradient;
    }
    outlet
    {
        type            zeroGradient;
    }
}

// ************************************************************************* //
~~~

#### Us
Usは固体速度の初期値/境界条件を指定します。カップリング時、DEM粒子はCFDの計算の中で固相として扱われますので、ここで指定する値はCFDにおけるDEM粒子の初期速度となります。
~~~0/Us.
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.6                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volVectorField;
    location    "0";
    object      Us;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    ".*"
    {
        type            zeroGradient;
    }
}


// ************************************************************************* //
~~~

#### voidfraction
voidfractionは流体の間隙率を指定します。セルに含まれる流体の体積割合を意味します。
チュートリアルでは、初期値として間隙率＝１、inlet＆outletの間隙率＝１を指定しています。
~~~0/voidfraction.
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.6                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      voidfraction;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 0 0 0 0 0 0];

internalField   uniform 1;

boundaryField
{
    wall
    {
        type            zeroGradient;
    }
    outlet
    {
        type            fixedValue;
        value           uniform 1;
    }
    inlet
    {
        type            fixedValue;
        value           uniform 1;
    }
}


// ************************************************************************* //
~~~

#### constant/couplingProperties
カップリング計算におけるモデル選択やI/Oについての設定を行います。
各設定項目について、簡単な説明をコードに記載しています。

~~~constant/couplingProperties.
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.4                                   |
|   \\  /    A nd           | Web:      http://www.openfoam.org               |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/


FoamFile
{
    version         2.0;
    format          ascii;

    root            "";
    case            "";
    instance        "";
    local           "";

    class           dictionary;
    object          couplingProperties;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//===========================================================================//
// sub-models & settings

modelType "A"; // A or B  #平均化ナビエストークス方程式のモデル(支配方程式のタイプ選択)

couplingInterval 50;　#DEMの50ステップ毎にCFDとのカップリング計算を行う

voidFractionModel divided;//centre;//　#空隙率の計算モデル選択

locateModel engine;//engineIB;// #流体セルとDEM粒子の対応を計算するモデル選択

meshMotionModel noMeshMotion; #メッシュモーション

IOModel basicIO;　#IOタイプ

probeModel off; #プルーブモデル

dataExchangeModel twoWayMPI;　#連成計算の手法　oneway twoway

averagingModel dense;//dilute;// #平均化モデルの選択

clockModel off;//standardClock;//　#解析実時間の算出モデル

smoothingModel off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
　　　　　　　　　　# 空隙率などの連成計算に関わる場の平滑化を行うモデルの選択。
　　　　　　　　　　# 計算の安定化に関わるります。

##以降相互作用計算などのサブモデルの選択
forceModels
(
    //GidaspowDrag
    //BeetstraDrag
    //DiFeliceDrag
    gradPForce
    viscForce
    KochHillDrag
・
・
・続く...
// ************************************************************************* //
~~~

#### constant/liggghtsCommands
計算中に実行するLiggghtsコマンドを指定します。

runLiggghts 
カップリングインターバルを制御するようですが、現在不具合を抱えているようです。
writeLiggghts
リスタートファイルの書き込みを制御します。

~~~constant/liggghtsCommands.
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.4                                   |
|   \\  /    A nd           | Web:      http://www.openfoam.org               |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/


FoamFile
{
    version         2.0;
    format          ascii;

    root            "";
    case            "";
    instance        "";
    local           "";

    class           dictionary;
    object          liggghtsCommands;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

liggghtsCommandModels
(
    runLiggghts
    writeLiggghts
);
// ************************************************************************* //

/*runLiggghtsProps
{
    preNo false;
}*/

writeLiggghtsProps
{
    writeLast off;
    //path "../DEM"; // optional setting
    writeName "post/restart/liggghts.restartCFDEM";
    overwrite on;
}
~~~
今回はOpenfoam側の設定ファイルを確認しました。
まだ調査足りない部分もありますが、詳細わかり次第追記していきます。