OpenFOAM的面法向向量指向

32 篇文章 30 订阅

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)是很有必要的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kino Chan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值