OpenFOAM的面法向向量指向

OpenFOAM对网格的拓扑有着严格的要求。其中,每一个单一的面(face)都会有其对应的owner和neighbour。在考虑某一面的面法向向量时,方向应该是朝哪一边?下面用一个简单的网格测试一下。找到任意一个求解器,注释掉时间循环体的内容,在main()下添加下面的代码:

    const labelList& owner = mesh.faceOwner();
    forAll(mesh.faces(), facei)
    {
        if(mesh.isInternalFace(facei))
        {
            Info<<"face"<<facei<<"'s owner is:"<<owner[facei]<<endl;
            Info<<"owner's location is"<<mesh.C()[owner[facei]]<<endl;
            Info<<"face's Cf:"<<mesh.Cf()[facei]<<endl;
            Info<<"face's Sf:"<<mesh.Sf()[facei]<<endl;
        }
    }

编译后,在一个简单的只有几个网格的算例下运行,终端会输出:

face0's owner is:0
owner's location is(-0.0175 -0.00125 0)
face's Cf:(-0.0175 0 0)
face's Sf:(0 2.5e-05 0)
face1's owner is:0
owner's location is(-0.0175 -0.00125 0)
face's Cf:(-0.015 -0.00125 0)
face's Sf:(1.25e-05 0 0)
face2's owner is:1
owner's location is(-0.0175 0.00125 0)
face's Cf:(-0.015 0.00125 0)
face's Sf:(1.25e-05 0 0)
face3's owner is:2
owner's location is(-0.00833333 -0.00125 0)
face's Cf:(-0.00166667 -0.00125 0)
face's Sf:(1.25e-05 0 0)

画一个示意图表示结果。如下图,每个格子中间对应的是单元(cell)的序号,每条线上标的是面(face)的序号,序号后面的括号是对应的owner序号。比如说,0(0)代表0号face,其对应的owner是0号cell(即下面那个)。箭头代表面法向向量的指向。

由图可知,面法向向量都不是指向owner的,也就是说,是相对于owner指向外侧。也可以说是指向neighbour方向。这样的设定在计算梯度的时候(snGrad)是很有必要的

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片