吾生有涯 学海无涯
析模有界 知识无界

OpenFOAM|算例 05 mixerVessel

此案例利用OpenFOAM中的simpleFoam求解器计算流体域中包含有运动壁面的流动问题。

注:本算例为OpenFOAM随机文档,案例路径为$FOAM_TUTORIALSincompressiblesimpleFoammixerVessel2D

1 计算模型

计算模型如下图所示。

计算区域以角速度104.72 rad/s旋转,计算区域内的稳态流场。本案例采用simpleFoam求解器进行计算。simpleFoam是一个稳态湍流求解器。

算例采用二维模型进行计算,计算网格如下图所示。

注:此算例其实也可以使用SRFSimpleFoam进行计算。

  • 模型边界包括rotor、stator、back以及front,如下图所示

2 案例结构

2.1 0文件夹

0文件夹中存放初始值与边界值,由于涉及到k-epsilon湍流模型计算,因此除了p文件与U文件外,还需要包含k文件、epsilon文件及nut文件。

  • p文件内容

计算区域为密闭容器,可以设置壁面边界为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;
}
}
  • U文件

这里可以设置边界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文件

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文件

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文件

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;
}
}

2.2 constant文件夹

constant文件夹中包含三个文件:momentumTransport、transportProperties及MRFProperties。其中momentumTransport文件中指定湍流模型,transportProperties文件中指定材料介质参数,MRFProperties文件中指定计算区域的旋转。

  • momentumProperties文件

momentumProperties文件中指定了计算采用的湍流模型,文件内容如下所示。本案例采用kEpsilon湍流模型进行计算。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object momentumTransport;
}
// * * * * * * * * * * * * //
simulationType RAS;
RAS
{
RASModel kEpsilon;
turbulence on;
printCoeffs on;
}

  • transportProperties文件

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文件

在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;
}

2.3 system文件夹

system文件夹中包括controlDict文件、fvSchemes文件以及fvSolution文件。

  • controlDict文件

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;
  • fvSchemes文件
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;
}
  • fvSolution文件
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;
}
}

3 运行案例

本案例的网格采用blockMesh生成,原生案例中采用M4脚本编制了blockMeshDict.m4文件,利用以下命令将其转化为blockMeshDict。

m4 < system/blockMeshDict.m4 > system/blockMeshDict

之后再用blockMesh生成网格。

采用命令进行计算。

simpleFoam
paraFoam

速度分布如下图所示。

湍动能分布如下图所示。

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《OpenFOAM|算例 05 mixerVessel》
文章链接:https://www.topcfd.cn/12444/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册