分享

【OpenFOAM案例】 05 圆柱绕流

 析模界 2023-10-23 发布于四川

圆柱绕流问题是流体力学中的经典问题。本案例利用Fluent研究圆柱绕流现象。

1 目标

  • 本案例的主要目的为讲解瞬态流动问题仿真

  • 案例考虑雷诺数为100的圆柱绕流问题,采用层流求解

  • 案例计算完毕后可以观察到涡脱落现象

2 计算模型

计算模型尺寸如图所示。

尺寸如表所示。

NameLocationDimension
CylinderD11m
inlet lengthD210m = 10D
outlet lengthD315m = 15D
widthD420m = 20D

计算域中流体密度 1kg/m3,动力粘度为0.01 Pa.s,入口速度1 m/s。则雷诺数:

3 几何模型及网格

按前述的几何参数建立几何模型。

边界分别为inlet、outlet、top、bottom、cylinder。

4 转换网格

本案例依然使用icoFoam求解器。因此先从tutorial中拷贝一个icoFoam模板。我们这里用cavity当模板。

打开终端,输入命令:

cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity $FOAM_RUN
cd $FOAM_RUN
mv cavity cylinder

mv命令是给文件夹改名,我们这里将文件重命名为cylinder。

将前面生成的网格拷贝到$FOAM_RUN路径下,并将网格名称修改为cylinder.msh。

blueCFD下此路径为:D:\blueCFD-Core-2016\ofuser-of4\run\cylinder,我这里是将blueCFD安装在D盘根目录下了,如果是装在其他位置的话,需要做相应修改。

利用命令转换网格:

cd $FOAM_RUN/cylinder
fluentMeshToFoam cylinder

转换成功出现如下图所示提示:

利用Tree命令查看此时cylinder文件夹下的组织形式为:

├── 0
│   ├── p
│   └── U
├── constant
│   ├── polyMesh
│   │   ├── boundary
│   │   ├── cellZones
│   │   ├── faces
│   │   ├── faceZones
│   │   ├── neighbour
│   │   ├── owner
│   │   ├── points
│   │   └── pointZones
│   └── transportProperties
├── cylinder.msh
└── system
    ├── blockMeshDict
    ├── controlDict
    ├── fvSchemes
    └── fvSolution

4 directories, 16 files

利用命令查看boundary文件内容:

nano constant/polyMesh/boundary

文件内容为:

FoamFile
{
    version     2.0;
    format      ascii;
   class       polyBoundaryMesh;    location    "constant/polyMesh";    object      boundary; }
6(    INLET    {        type            patch;        nFaces          79;        startFace       22248;    }    OUTLET    {        type            patch;        nFaces          79;        startFace       22327;    }    TOP    {        type            wall;        inGroups        1(wall);        nFaces          139;        startFace       22406;    }    BOTTOM    {        type            wall;        inGroups        1(wall);        nFaces          139;        startFace       22545;    }    CYLINDER    {        type            wall;        inGroups        1(wall);        nFaces          28;        startFace       22684;    }    frontAndBackPlanes    {        type            empty;        inGroups        1(empty);        nFaces          22480;        startFace       22712;    } )

看到文件中除了我们自己命名的INLET、OUTLET、TOP、BOTTOM、CYLINDER外,还多出了一个frontAndBackPlanes,我们的网格是2D模型,而OF只能计算3D模型,因此自动给网格拉伸了一层厚度,多了个边界。后面要处理这个边界。

5 修改p文件和U文件

修改p文件为:

FoamFile
{
    version     2.0;
    format      ascii;
   class       volScalarField;    object      p; } dimensions      [0 2 -2 0 0 0 0]; internalField   uniform 0; boundaryField {    INLET    {        type     zeroGradient;    }
   //出口压力为0//    OUTLET    {        type     fixedValue;        value    uniform 0;    }    TOP    {        type     zeroGradient;    }    BOTTOM    {        type     zeroGradient;    }      CYLINDER    {          type   zeroGradient;    }    frontAndBack    {        type     empty;    } }

出口边界静压为0

修改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 {
 
//入口速度为1m/s//    INLET    {        type      fixedValue;        value     uniform (1 0 0);    }    OUTLET    {        type      zeroGradient;    }
 
//顶部和底部均为无滑移壁面//    TOP    {        type      noSlip;    }    BOTTOM    {        type      noSlip;    }    CYLINDER    {        type      fixedValue;        value     uniform (0 0 0);    }
   
//侧面一定要设置为empty//    frontAndBack    {        type      empty;    }   }

入口速度为1m/s。

6 修改transportProperties文件

设置运动粘度0.01m2/s。

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

注意这里设置的是运动粘度,看量纲。

7 设置controlDict文件

修改controlDict文件为:

FoamFile
{
    version     2.0;
    format      ascii;
   class       dictionary;    location    "system";    object      controlDict; }
// * * * * * *  * * * * * * //
application     icoFoam; startFrom       startTime; startTime       0; stopAt          endTime;
//设置计算100s
endTime         100; deltaT          0.005; writeControl    timeStep; writeInterval   20; purgeWrite      0; writeFormat     ascii; writePrecision  6; writeCompression off; timeFormat      general; timePrecision   6; runTimeModifiable true;

8 开始计算

利用命令:

cd $FOAM_RUN/cylinder
icoFoam

9 后处理

利用命令启动paraview进行后处理。

paraFoam

速度分布如图所示。

腾讯传视频太慢了,这里就懒得传了。案例文件及动画链接:链接:http://pan.baidu.com/s/1nuS1uIX 密码:a2qp

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多