OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(六)markBoundary函数

32 篇文章 29 订阅
9 篇文章 9 订阅

致看到这里的读者:我写这些博客是为了督促自己做好笔记,记录学习的过程。我知道,人不是完美的,对一些知识的学习也不能做到百分百正确地掌握。我每一天都会发现自己的错误,并为之而进步。如果前面的博客有什么不对的地方,也请私信或者qq我,我们一起讨论,不胜感激!

前面几篇博文主要关注OpenFOAM中重叠网格的挖洞机制,今天学习挖洞之前的一个函数MarkBoundary:

 

它的作用是// Mark all voxels that overlap the bounding box of any patch,即标记与任何边界边框相重叠的所有体元。在这个函数体内,会先将所有体元的patchType标记为OTHER,再进行判定来标记PATCH或OVERSET。两者相类似,其中标记PATCH的代码如下:

其中的判定依据是(!fvPatch::constraintType(fvp.type()),这里constrainType前面也有讲过,可以简单理解为overset那一类。判定为否,也就是说除了overset的那一类边界,都会进入到判定体内,然后进行标记。overset的标记段如下:

这里判定依据是isA<oversetFvPatch>(fvp),isA<Type>是OpenFOAM里判断某数据的结构是否为Type的一个bool类型函数,这里显然是判断是否为overset的。为什么不用上面的那个constraintType呢?因为constraintType还有其他的非overset类型的边界条件。

在标记的过程中,有两个对象的类型进行了标记,分别是overall patch types和voxel mesh:

patchCellType是全局的体元类型列,其大小为mesh_.nCell(),也就是说整个网格量,包含了背景网格和重叠的网格。voxel mesh则是其中的某个part中的体元。bb是这一个zone对应的边框,faceBb则是每一个边界上体元的边框。如果faceBb进入到bb的范围之内,那么bb中与faceBb对应重叠的体元则会被标记。标记需要用到fill函数:

这个函数和overlaps是差不多的,都根据边框范围来进行操作。 

综合来说,markBoundary这一函数是先将各部分网格边界上的体元进行一次标记,在这一过程中,即使是内部网格(与边界不接壤),如果它和某一层网格的特定边界相重合,那么这个网格也会别标记。需要注意的是,这是对于patchType进行的,和markHole的cellPatchType是不一样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kino Chan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值