此案例利用OpenFOAM中的simpleFoam求解器计算流体域中包含有运动壁面的流动问题。
注:本算例为OpenFOAM随机文档,案例路径为$FOAM_TUTORIALS\incompressible\simpleFoam\mixerVessel2D
”
计算模型如下图所示。
计算区域以角速度104.72 rad/s旋转,计算区域内的稳态流场。本案例采用simpleFoam
求解器进行计算。simpleFoam是一个稳态湍流求解器。
算例采用二维模型进行计算,计算网格如下图所示。
注:此算例其实也可以使用SRFSimpleFoam进行计算。
”
0文件夹中存放初始值与边界值,由于涉及到k-epsilon湍流模型计算,因此除了p文件与U文件外,还需要包含k文件、epsilon文件及nut文件。
计算区域为密闭容器,可以设置壁面边界为zeroGradient,文件内容如下所示。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * ** * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
rotor
{
type zeroGradient;
}
stator
{
type zeroGradient;
}
"(front|back)"
{
type empty;
}
}
这里可以设置边界rotor为速度为零(静止边界),将stator边界设置为无滑移边界
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
rotor
{
type fixedValue;
value uniform (0 0 0);
}
stator
{
type noSlip;
}
"(front|back)"
{
type empty;
}
}
k文件如下所示。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut;
}
// * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
rotor
{
type nutkWallFunction;
value uniform 0;
}
stator
{
type nutkWallFunction;
value uniform 0;
}
front
{
type empty;
}
back
{
type empty;
}
}
epsilon文件如下所示。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 20;
boundaryField
{
rotor
{
type epsilonWallFunction;
value $internalField;
}
stator
{
type epsilonWallFunction;
value $internalField;
}
front
{
type empty;
}
back
{
type empty;
}
}
nut文件如下所示。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut;
}
// * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
rotor
{
type nutkWallFunction;
value uniform 0;
}
stator
{
type nutkWallFunction;
value uniform 0;
}
front
{
type empty;
}
back
{
type empty;
}
}
constant文件夹中包含三个文件:momentumTransport、transportProperties及MRFProperties。其中momentumTransport文件中指定湍流模型,transportProperties文件中指定材料介质参数,MRFProperties文件中指定计算区域的旋转。
momentumProperties文件中指定了计算采用的湍流模型,文件内容如下所示。本案例采用kEpsilon湍流模型进行计算。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object momentumTransport;
}
// * * * * * * * * * * * * //
simulationType RAS;
RAS
{
RASModel kEpsilon;
turbulence on;
printCoeffs on;
}
transportProperties文件中指定材料介质参数,内容如下所示。这里指定了运动粘度为1e–5 m2/s。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu [0 2 -1 0 0 0 0] 1e-05;
在MRFProperties文件中指定计算区域的旋转速度,文件内容如下所示。这里指定计算区域rotor的旋转轴为z轴,旋转速度为104.72 rad/s。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object MRFProperties;
}
// * * * * * * * * * * * * * //
// 定义方式可参阅头文件IOMRFZoneList.C
MRF1
{
// cellZone关键字指定旋转区域的名称,本算例只有一个名为rotor的区域
cellZone rotor;
// active用于指定区域是否激活
active yes;
// 指定不旋转的区域名称
nonRotatingPatches ();
// 指定旋转原点
origin (0 0 0);
// 指定旋转轴方向
axis (0 0 1);
// 指定旋转角速度
omega 104.72;
}
system文件夹中包括controlDict文件、fvSchemes文件以及fvSolution文件。
controlDict文件中指定了求解计算参数。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * //
application simpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 500;
deltaT 1;
writeControl timeStep;
writeInterval 50;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) bounded Gauss limitedLinearV 1;
div(phi,k) bounded Gauss limitedLinear 1;
div(phi,epsilon) bounded Gauss limitedLinear 1;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * //
solvers
{
p
{
solver GAMG;
tolerance 1e-08;
relTol 0.05;
smoother GaussSeidel;
nCellsInCoarsestLevel 20;
}
U
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-07;
relTol 0.1;
}
k
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-07;
relTol 0.1;
}
epsilon
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-07;
relTol 0.1;
}
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
// 设置亚松弛因子
relaxationFactors
{
fields
{
p 0.3;
}
equations
{
U 0.5;
k 0.5;
epsilon 0.5;
}
}
本案例的网格采用blockMesh生成,原生案例中采用M4脚本编制了blockMeshDict.m4文件,利用以下命令将其转化为blockMeshDict。
m4 < system/blockMeshDict.m4 > system/blockMeshDict
之后再用blockMesh生成网格。
采用命令进行计算。
simpleFoam
paraFoam
速度分布如下图所示。
湍动能分布如下图所示。
---------------------------------------------------------------------------------------------
版权声明:
原创文章,来源CFD之道,本文已经授权,欢迎分享,如需转载请联系作者。