首页/文章/ 详情

OpenFOAM|验证01 库艾特流动

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

本算例利用OpenFOAM计算两个同心圆柱体之间的层流流动,并将计算结果与文献数据进行比较。

算例来源:ANSYS Verification VMFL001。

参考文献:F. M. White. Viscous Fluid Flow. Section 3-2.3. McGraw-Hill Book Co., Inc.. New York, NY. 1991.

1 案例描述

几何如图所示。内筒以恒定速度旋转带动流体运动,外筒保持静止。本案例可以采用二维几何建模。

图片

图中几何尺寸为:

  • 内圆柱半径:17.8 mm
  • 外圆柱半径:46.28 mm

流体介质属性为:

  • 密度:1 kg/m3
  • 动力粘度:0.0002 kg/m-s

内筒旋转角速度1 rad/s。

采用稳态层流计算。并与理论值进行比较(理论值来自F. M. White. Fluid Mechanics(7nd ed). P275 。

image.png

式中,为内部圆柱旋转角速度;为内部圆柱半径; 为外部圆柱半径;为面上点到圆形的距离。

2 OpenFOAM设置

本案例中,流动为层流流动。可以选择使用icoFoam计算足够长时间的瞬态。二维问题这里以官方算例cavity作为模板。案例计算网格如下图所示,采用一半模型进行计算,其中边界top与bot为周期边界。

图片

注:本算例也可以采用完整模型进行计算。除了可以使用icoFoam求解器外,也可以使用simpleFoam、pimpleFoam求解器进行层流计算。

2.1 文件准备

  • 创建工作文件夹。
run
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
mv cavity ex1
cd ex1
  • 将网格文件ex1.cas拷贝到文件夹ex1中。
  • 利用下面的命令将cas文件转化为OpenFOAM网格
fluentMeshToFoam ex1.cas

转换完毕后查看constant/polyMesh/boundary文件中的边界信息,确保边界无误。本算例的boundary文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       polyBoundaryMesh;
   location    "constant/polyMesh";
   object      boundary;
}
// * * * * * * * * * * * * * * //
5
(
   innerwall
   {
       type            wall;
       inGroups        List<word> 1(wall);
       nFaces          60;
       startFace       2340;
   }
   outerwall
   {
       type            wall;
       inGroups        List<word> 1(wall);
       nFaces          60;
       startFace       2400;
   }
   bot
   {
       type            cyclicAMI;
       inGroups        List<word> 1(symmetry);
       nFaces          20;
       startFace       2320;
       // 下面是指定旋转周期边界
       matchTolerance  0.0001;
       neighbourPatch  top;
       transformType   rotational;
       rotationAxis    (0 0 1);
       rotationCentre  (0 0 0);
       rotationAngle   180;
       method          faceAreaWeightAMI;
   }
   top
   {
       type            cyclicAMI;
       inGroups        List<word> 1(symmetry);
       nFaces          20;
       startFace       2460;
       // 下面是指定旋转周期边界
       matchTolerance  0.0001;
       neighbourPatch  bot;
       transformType   rotational;
       rotationAxis    (0 0 1);
       rotationCentre  (0 0 0);
       rotationAngle   -180;
       method          faceAreaWeightAMI;
   }
   frontAndBackPlanes
   {
       type            empty;
       inGroups        List<word> 1(empty);
       nFaces          2400;
       startFace       2480;
   }
)

网格处理完毕后可以利用命令checkMesh检查计算网格。

2.2 指定材料介质参数

打开文件constant/transportProperties,修改介质的运动粘度为0.0002 m2/s。文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "constant";
   object      transportProperties;
}
// * * * * * * * * * * * * * //
nu              [0 2 -1 0 0 0 0] 0.0002;

2.3 设置边界条件

1、设置U文件

本算例中只有内壁面innerwall有旋转速度。U文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       volVectorField;
   object      U;
}
// * * * * * * * * * * * * * //
dimensions      [0 1 -1 0 0 0 0];
internalField   uniform (0 0 0);
boundaryField
{
   // 指定边界innerwall绕z轴旋转,角速度为1 rad/s
   innerwall
   {
       type            rotatingWallVelocity;
       origin          (0 0 0);
       axis            (0 0 1);
       omega            1;
   }
   outerwall
   {
       type            noSlip;
   }
   // 指定边界top类型为周期边界cyclicAMI
   // 边界为静止
   top
   {
       type             cyclicAMI;
       value            uniform (0 0 0);
   }
   // 指定边界bot类型为周期边界cyclicAMI
   // 边界为静止
   bot
   {
       type              cyclicAMI;
       value             uniform (0 0 0);
   }
   // 指定边界类型为empty,采用2d计算
   frontAndBack
   {
       type            empty;
   }
}

2、设置p文件

p文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       volScalarField;
   object      p;
}
// * * * * * * * * * * * * * * * //
dimensions      [0 2 -2 0 0 0 0];
// 设置内部初始压力为0
internalField   uniform 0;
boundaryField
{
   // 内外壁面边界为零压力梯度
   "(innerwall|outerwall)"
   {
       type        zeroGradient;
   }
  // 指定top与bot边界为周期边界,压力为0
   "(top|bot)"
   {
       type             cyclicAMI;
       value            uniform 0;
   }
   // 2d计算指定边界为empty
   frontAndBack
   {
       type            empty;
   }
}

2.4 设置计算条件

这里只需要修改system/controlDict文件,该文件修改完毕后如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "system";
   object      controlDict;
}
// * * * * * * * * * * * * * * //
application     icoFoam;
startFrom       startTime;
startTime       0;
stopAt          endTime;
// 指定计算5s
endTime         5;
// 时间步长选择0.001s
deltaT          0.001;
writeControl    timeStep;
// 100个时间步保存一次
writeInterval   100;
purgeWrite      0;
writeFormat     ascii;
writePrecision  6;
writeCompression off;
timeFormat      general;
timePrecision   6;
runTimeModifiable true;

2.5 计算求解

所有的文件准备完毕后即可进行计算。

icoFoam

3 计算结果

  • 速度分布

图片

  • 直径上速度分布

图片

  • 与解析解比较的结果如下图所示

图片


下面为用用于gnuplot的结果比较代码。

cd "/mnt/i/OpenFOAM/Verification/ex1"
set xrange [0.0178:0.04628]
plot 0.0178*(0.04628/x-x/0.04628)/(0.04628/0.0178-0.0178/0.04628) lw 2 w line t "analysis","ex1.txt" u 1:2 w point pt 7 t "numeric"
unset key
set xlabel "x(m)"
set ylabel "velocity(m/s)"
replot

声明:原创文章,欢迎留言与我讨论,如需转载留言

附件

免费VM01.zip
理论科普代码&命令网格处理OpenFOAM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-04-12
最近编辑:3年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2423粉丝 10354文章 649课程 27
点赞
收藏

作者推荐

未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈