su_junwei 发表于 2009-5-2 18:21:43

[转载]深入解析icoFoam下的顶盖驱动流(cavity)

icoFoam为OpenFOAM中单相不可压缩流求解器,运用PISO算法求解压力-速度耦合.顶盖驱动流动为不可压流动经典算例,通常用来验证编写程序的正确性和有效性.
求解器icoFoam位置:      /applications/solvers/incompressible/icoFoam
顶盖驱动流算例位置:       /tutorials/icoFoam/cavity

顶盖驱动流算例下文件夹结构

|--0-         //初始条件和边界条件
|   |--p    //压力
|   |--U    //速度
|
|-constant-   //参数和网格
|         |-transportProperties//物理参数设定文件
|         |-polyMesh             //网格文件夹
|                     |-blockMeshDict //blockMesh网格生成文件
|                     |-boundary      //边界文件,运用blockMesh可生成该文件,可删除
|-system-
         |-controlDict //程序运行控制文件
         |-fvSchemes   //离散格式设定文件
         |-fvSolution//代数方程求解器设定文件
上面文件p,controlDict, fvSchemes, fvSolution已经在本站博文"使用OpenFOAM的基本流程"中详述

   下面对其他文件进行说明

文件U
//文件头
FoamFile
{
    version   2.0;
    format      ascii;
    class       volVectorField;
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//单位,关于物理单位配置,在本站博文"OpenFOAM>>solver>>basic>>potentialFoam的说明"

dimensions      ;
//初始条件,全场速度为0
internalField   uniform (0 0 0);
//边界条件
boundaryField
{
    movingWall //顶盖速度   
    {
      type            fixedValue;   //恒定速度
      value         uniform (1 0 0); //速度大小Ux=1 m/s
    }

    fixedWalls //其他3面为墙,速度无滑移   
    {
      type            fixedValue;
      value         uniform (0 0 0);
    }

    frontAndBack //前面和后面为empty,因为是二维的
    {
      type            empty;
    }
}

文件transportProperties
//文件头
FoamFile
{
    version   2.0;
    format      ascii;
    class       dictionary;
    object      transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//流体黏性系数,关于如何设置并使用参数,参看本站博文"OpenFOAM中的参数字典使用剖析"

nu            nu 0.01;

文件blockMeshDict
//文件头
FoamFile
{
    version   2.0;
    format      ascii;
    class       dictionary;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 0.1;//单位转换,也就是说下面所有点都要乘以0.1才是真值

vertices //网格中的点,点的位置没有顺序要求,点的序号从0开始   
(
    (0 0 0)
    (1 0 0)
    (1 1 0)
    (0 1 0)
    (0 0 0.1)
    (1 0 0.1)
    (1 1 0.1)
    (0 1 0.1)
);

blocks//块结构化网格中的一个块      
(
    hex (0 1 2 3 4 5 6 7) //块中的8个边界点,方的是前面定义点的序号
    (20 20 1)             //x y z 3个方向的网格的个数
    simpleGrading (1 1 1) //网格均匀划分
);
//块的8个点的顺序
(1)每个块都有一个局部坐标,坐标的原点为hex中的第0个点,也是点序列的第0个点
(2)hex中的第0个点和第1个点构成X方向
(3)hex中的第1个点和第2个点构成Y方向
(4)hex中的第0 1 2 3个点构成平面Z=0
(5)hex中第0个点和第4个点构成方向Z
(6)第5 6 7个点的寻找方法和点1 2 3相同.
应当注意,上面的那个例子中hex中点的序号和点在vertices的序号恰好一致.

//边的定义,对于曲线边才会定义,直边不定义,本例子中所有边是直边
edges         
(
);

patches //边界      
(
    wall movingWall//上面墙
    (
      (3 7 6 2)
    )
    wall fixedWalls //其他三面墙
    (
      (0 4 7 3)
      (2 6 5 1)
      (1 5 4 0)
    )
    empty frontAndBack //前面和后面两个面
    (
      (0 3 2 1)
      (4 5 6 7)
    )
);

//上面边界中点有一定顺序,满足右手定则,是边界面的法向量指向外,也就是从外面向里看,逆时针方向.

mergePatchPairs    //需要和在一起的patch对
(
);

文件boundary中的内容不用管他,运用blockMesh会将其覆盖.

程序运行命令
运用控制台进入/tutorials/icoFoam/cavity
输入: blockMesh 生成网格
输入: icoFoam 运行程序
程序运行结束后,输入paraFoam做后处理.

转自OpenFOAM研究:http://blog.sina.com.cn/openfoamresearch

[ 本帖最后由 su_junwei 于 2009-5-2 18:25 编辑 ]

busch 发表于 2009-5-4 04:27:41

好贴必须得顶
无奈坛子缺乏人气
页: [1]
查看完整版本: [转载]深入解析icoFoam下的顶盖驱动流(cavity)