OpenFoamのサンプル確認(パラメータやキーワードの覚書)です。
バージョン : Windows版(OpenFOAM-v2106-windows-mingw.exe)
次ページ:メッシュの置き換え
ベース
チュートリアルフォルダ:チュートリアル場所(windows)
引用元
<チュートリアルフォルダ>\multiphase\interFoam\RAS\floatingObject
結果図

気相、液相のモデルになります。
出力間隔を10倍にして実行。writeInterval 0.01;
作業
基本的な流れはT703 OpenFoam tipsと同じです。(または作業)
//チュートリアルからサンプルをコピーしておきます。// //0.origから0へ(.org削除) //コマンド:メッシュ作成 blockMesh //コマンド実行 topoSet subsetMesh -overwrite c0 -patch floatingObject setFields //計算実行// interFoam //ParaView用VTK変換// foamToVTK
モデル
設定値の抜粋まとめ
全体構造
//初期フォルダ・ファイル構成 floatingObject ├ 0.orig │ ├ alpha.water │ ├ epsilon │ ├ k │ ├ nut │ ├ p_rgh │ ├ pointDisplacement │ └ U ├ constant │ ├ dynamicMeshDict │ ├ dynamicMeshDict.sixDoF │ ├ g │ ├ transportProperties :物性値 │ └ turbulenceProperties ├ system │ ├ blockMeshDict :ブロックメッシュ定義 │ ├ controlDict :解析ジョブ設定 │ ├ decomposeParDict :未使用(win) │ ├ fvSchemes :ソルバー設定 │ ├ fvSolution :ソルバー設定 │ ├ setFieldsDict │ └ topoSetDict ├ Allclean └ Allrun
0.orig
設定確認 alpha.water
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
stationaryWalls
{
type zeroGradient;
}
atmosphere
{
type inletOutlet;
inletValue uniform 0;
value uniform 0;
}
floatingObject
{
type zeroGradient;
}
}
epsilon
dimensions [0 2 -3 0 0 0 0];
internalField uniform 0.1;
boundaryField
{
stationaryWalls
{
type epsilonWallFunction;
value uniform 0.1;
}
atmosphere
{
type inletOutlet;
inletValue uniform 0.1;
value uniform 0.1;
}
floatingObject
{
type epsilonWallFunction;
value uniform 0.1;
}
}
k
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.1;
boundaryField
{
stationaryWalls
{
type kqRWallFunction;
value uniform 0.1;
}
atmosphere
{
type inletOutlet;
inletValue uniform 0.1;
value uniform 0.1;
}
floatingObject
{
type kqRWallFunction;
value uniform 0.1;
}
}
nut
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
stationaryWalls
{
type nutkWallFunction;
value uniform 0;
}
atmosphere
{
type calculated;
value uniform 0;
}
floatingObject
{
type nutkWallFunction;
value uniform 0;
}
}
p_rgh
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
stationaryWalls
{
type fixedFluxPressure;
}
atmosphere
{
type totalPressure;
p0 uniform 0;
}
floatingObject
{
type fixedFluxPressure;
}
}
pointDisplacement
dimensions [0 1 0 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
stationaryWalls
{
type fixedValue;
value uniform (0 0 0);
}
atmosphere
{
type fixedValue;
value uniform (0 0 0);
}
floatingObject
{
type calculated;
value uniform (0 0 0);
}
}
U
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
stationaryWalls
{
type noSlip;
}
atmosphere
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
floatingObject
{
type movingWallVelocity;
value uniform (0 0 0);
}
}
constant
dynamicMeshDict
dynamicFvMesh dynamicMotionSolverFvMesh;
motionSolverLibs (rigidBodyMeshMotion);
motionSolver rigidBodyMotion;
rigidBodyMotionCoeffs
{
report on;
solver
{
type Newmark;
}
accelerationRelaxation 0.7;
bodies
{
floatingObject
{
type cuboid;
parent root;
// Cuboid dimensions
Lx 0.3;
Ly 0.2;
Lz 0.5;
// Density of the cuboid
rho 500;
// Cuboid mass
mass #eval{ $rho*$Lx*$Ly*$Lz };
L ($Lx $Ly $Lz);
centreOfMass (0 0 0.25);
transform (1 0 0 0 1 0 0 0 1) (0.5 0.45 0.1);
joint
{
type composite;
joints
(
{
type Py;
}
{
type Ry;
}
);
}
patches (floatingObject);
innerDistance 0.05;
outerDistance 0.35;
}
}
}
dynamicMeshDict.sixDoF
dynamicFvMesh dynamicMotionSolverFvMesh;
motionSolverLibs (sixDoFRigidBodyMotion);
motionSolver sixDoFRigidBodyMotion;
sixDoFRigidBodyMotionCoeffs
{
patches (floatingObject);
innerDistance 0.05;
outerDistance 0.35;
centreOfMass (0.5 0.45 0.35);
// Cuboid dimensions
Lx 0.3;
Ly 0.2;
Lz 0.5;
// Density of the solid
rhoSolid 500;
// Cuboid mass
mass #eval{ $rhoSolid*$Lx*$Ly*$Lz };
// Cuboid moment of inertia about the centre of mass
momentOfInertia #codeStream
{
codeInclude
#{
#include "diagTensor.H"
#};
code
#{
scalar sqrLx = sqr($Lx);
scalar sqrLy = sqr($Ly);
scalar sqrLz = sqr($Lz);
os <<
$mass
*diagTensor(sqrLy + sqrLz, sqrLx + sqrLz, sqrLx + sqrLy)/12.0;
#};
};
report on;
accelerationRelaxation 0.7;
//accelerationDamping 0;
solver
{
type Newmark;
}
constraints
{
// fixedPoint
// {
// sixDoFRigidBodyMotionConstraint point;
// centreOfRotation (0.5 0.45 0.1);
// }
fixedLine
{
sixDoFRigidBodyMotionConstraint line;
centreOfRotation (0.5 0.45 0.1);
direction (0 1 0);
}
fixedAxis
{
sixDoFRigidBodyMotionConstraint axis;
axis (0 1 0);
}
}
}
g
dimensions [0 1 -2 0 0 0 0]; value (0 0 -9.81);
設定確認 transportProperties
phases (water air);
water
{
transportModel Newtonian;
nu 1e-06;
rho 998.2;
}
air
{
transportModel Newtonian;
nu 1.48e-05;
rho 1;
}
sigma 0;
turbulenceProperties
simulationType RAS;
RAS
{
RASModel kEpsilon;
turbulence on;
printCoeffs on;
}
system
設定確認 blockMeshDict
scale 1;
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 1)
(1 0 1)
(1 1 1)
(0 1 1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 30) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
stationaryWalls
{
type wall;
faces
(
(0 3 2 1)
(2 6 5 1)
(1 5 4 0)
(3 7 6 2)
(0 4 7 3)
);
}
atmosphere
{
type patch;
faces
(
(4 5 6 7)
);
}
floatingObject
{
type wall;
faces ();
}
);
mergePatchPairs
(
);
設定確認 controlDict
application interFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 6; deltaT 0.01; writeControl adjustable; writeInterval 0.1; purgeWrite 0; writeFormat ascii; writePrecision 12; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 1; maxAlphaCo 1; maxDeltaT 1;
decomposeParDict
numberOfSubdomains 8; method scotch;
設定確認 fvSchemes
ddtSchemes
{
default CrankNicolson 0.5;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
設定確認 fvSolution
solvers
{
"alpha.water.*"
{
nAlphaCorr 3;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 5;
alphaApplyPrevCorr yes;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
}
"pcorr.*"
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-5;
relTol 0;
smoother DICGaussSeidel;
cacheAgglomeration no;
}
tolerance 1e-05;
relTol 0;
maxIter 100;
}
p_rgh
{
solver GAMG;
tolerance 1e-8;
relTol 0.01;
smoother DIC;
}
p_rghFinal
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-8;
relTol 0;
nVcycles 2;
smoother DICGaussSeidel;
nPreSweeps 2;
}
tolerance 1e-8;
relTol 0;
maxIter 20;
}
"(U|k|epsilon)"
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-6;
relTol 0.1;
nSweeps 1;
}
"(U|k|epsilon)Final"
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-6;
relTol 0;
nSweeps 1;
}
}
PIMPLE
{
momentumPredictor no;
nOuterCorrectors 3;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
correctPhi yes;
moveMeshOuterCorrectors yes;
}
relaxationFactors
{
equations
{
".*" 1;
}
}
設定確認 setFieldsDict
defaultFieldValues
(
volScalarFieldValue alpha.water 0
);
regions
(
boxToCell
{
box (-100 -100 -100) (100 100 0.5368);
fieldValues ( volScalarFieldValue alpha.water 1 );
}
boxToCell
{
box (0.7 0.8 -100) (100 100 0.65);
fieldValues ( volScalarFieldValue alpha.water 1 );
}
);
topoSetDict
actions
(
{
name c0;
type cellSet;
action new;
source boxToCell;
box (0.35 0.35 0.1) (0.65 0.55 0.6);
}
{
name c0;
type cellSet;
action invert;
}
);
その他
次ページ以降
コメント