在 OpenFOAM 中为导入的网格指定边界条件

计算科学 流体动力学 开放式泡沫
2021-12-10 05:22:31

我有一个通过扫描真实 3D 对象生成的网格(我没有几何图形)。在 OpenFOAM 中为 CFD 指定入口、出口等最方便的方法是什么?网格由数千个面组成,因此手动定义每个面是不可行的。

如果有帮助,请提供更多信息:

  1. 扫描仪生成物体表面的 VRML 文件。
  2. 我将它(使用 Chisel)转换为 STL,对其进行编辑并在 Salome 中生成 3D 网格。
  3. 我将它导出为 UNV 并使用 ideaUnvToFoam 转换为 OpenFOAM 混搭。
2个回答

由于您已经在 Salome 中导出了网格,因此最好的方法是在 Salome 网格中生成面组由于您没有可以选择的几何形状(例如,对属于圆 A 的所有面进行分组),因此您将不得不使用过滤器

转到 Mesh->Create Group->Group on Filter,并设置这样的过滤器,使您能够隔离感兴趣的面。对于边界面,从过滤器Free faces开始。您可以创建额外的几何图形,例如平面或矩形,您知道这些几何图形将决定您的一组面。

即使您在 Salome 中只有一个网格,您也可以创建几何实体,然后在 Set_filter 环境中使用这些实体来过滤掉面。

过滤器示例:

自由面孔+属于几何

例如,Geom 是您在 Geom 模块中绘制的矩形。这是最简单和最优雅的方法,您只需要知道几何体的尺寸(如果您在其上运行模拟,您必须知道)。创建 Geom 后,它们将是可选的:只需单击 Belong to Geom 过滤器的Threshold 值,然后从左侧的 Geometry 树中选择几何实体。

只需要 OpenFOAM 本身的两种解决方法

  1. 边界条件中的正则表达式:如果补丁被一致命名(例如“wall01”、“wall02”...和“inlet01”、“inlet02”),那么 OpenFOAM 允许指定边界条件,而不是名称,而是正则表达式(OpenFOAM通过 "") 识别这一点,并且名称与此正则表达式匹配的所有补丁都接收相同的边界条件(例如,“wall.+”匹配 wall01、wall02 等)
  2. createPatch-utility:此实用程序允许从现有补丁列表中创建新补丁。补丁列表在字典文件中指定(再次指定补丁可以使用正则表达式)

这里的两种方法都要求补丁的名称有一些系统