首页/文章/ 详情

OpenFOAM|算例 05 mixerVessel

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
3年前浏览5135

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

注:本算例为OpenFOAM随机文档,案例路径为$FOAM_TUTORIALS\incompressible\simpleFoam\mixerVessel2D

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之道,本文已经授权,欢迎分享,如需转载请联系作者。


科普仿真体系代码&命令求解技术网格处理流体基础OpenFOAM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-12-24
最近编辑:3年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2556粉丝 11195文章 729课程 27
点赞
收藏
作者推荐
未登录
1条评论
马强
签名征集中
3年前
你好,请问一下,我的那个system中没有blockmeshdict.m4,这个应该怎么操作
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈