找回密码
 注册
查看: 4389|回复: 1

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

[复制链接]
发表于 2009-5-2 18:21:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
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 1 -1 0 0 0 0];
//初始条件,全场速度为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 2 -1 0 0 0 0] 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 编辑 ]
发表于 2009-5-4 04:27:41 | 显示全部楼层
好贴必须得顶
无奈坛子缺乏人气
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表