前回、LiggghtsとOpenfoamのカップリングを行う、CFEDEMのチュートリアルの実行を行いました。
今回は実行ファイルの中身を確認したいと思います。
↓チュートリアル実行の記事
カップリングには、LiggghtsとOpenfoamの設定ファイルがそれぞれ必要になりますが、まずはOpenfoam側の設定ファイルの中身を確認していきます。
設定ファイル構成
前回と同じくErgunTestMPIのチュートリアルを対象として中身を確認していきます。
インストール先/CFDEM/CFDEMcoupling-PUBLIC-5.x/tutorials/cfdemSolverPiso/ErgunTestMPI
フォルダーを確認すると以下のような構成になっています
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設定フォルダの中身を詳しく確認していきます。
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(流体の間隙率)をファクターとして計算されるものとなります。
/*--------------------------------*- 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/m3 を設定しています。
/*--------------------------------*- 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粒子の初期速度となります。
/*--------------------------------*- 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は流体の間隙率を指定します。セルに含まれる流体の体積割合を意味します。
チュートリアルでは、初期値として間隙率=1、inlet&outletの間隙率=1を指定しています。
/*--------------------------------*- 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についての設定を行います。
各設定項目について、簡単な説明をコードに記載しています。
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / 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
リスタートファイルの書き込みを制御します。
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / 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側の設定ファイルを確認しました。
まだ調査足りない部分もありますが、詳細わかり次第追記していきます。