1openfoam中的toposet
在 OpenFOAM 中,toposet是一个用于操作网格的集合定义和操作的工具。以下是关于toposet的一些关键信息:
1.1基本概念:
- toposet的含义是拓扑集合(topology
set)。其作用是将一些点、面或者体网格提取出来存放在指定名字的集合里,用以辅助前后处理。 - set和zone在概念上基本一致,都是包含一系列点(或者面、体)的集合。由于历史原因,目前set和zone并存于 OpenFOAM
中,有的前后处理工具可能同时支持使用set或zone,但也有的只支持其中一种。
1.2操作类型:
- toposet可以对不同的网格元素进行操作,生成多种类型的集合,包括pointset(点集)、faceset(面集)、cellset(体集)、pointzone、facezone、cellzone等。其操作方式包括将边界转换为网格元素(如boundary
to cell、boundary to face、boundary to point)、基于几何形状选择网格元素(如box to
cell、cylinder to cell、sphere to cell等)以及基于其他集合或条件选择网格元素(如set to cell
zone、set to face zone、set to point zone等)。
1.3使用方法:
- 定义集合:通过编辑toposetdict文件来定义要操作的集合。例如,可以指定选择的区域、选择的条件等。
- 执行操作:在命令行中运行toposet命令来执行在toposetdict文件中定义的操作,操作结果会存储在constant/polymesh/sets文件夹中。
1.4 应用场景:
- 网格加密:结合refineMesh工具,先使用toposet定义需要加密的区域,然后使用refineMesh对该区域进行网格加密,常用于需要局部细化网格的模拟场景,例如在流体力学模拟中对边界层、漩涡区域等进行加密。
- 设置初始条件和边界条件:可以使用toposet选择特定的区域,然后结合setfields等工具对该区域设置特定的初始条件或边界条件,例如设置非均匀的初始场或自定义边界条件。
- 定义复杂形状的区域:当需要定义一些复杂形状的区域时,可以使用toposet结合其他工具,如searchableSurfaceToFace等,来创建复杂形状的面集或面区域集合,以便进行后续的分析或处理。
2实例
2.1标记两个区域并合并为一个
这段代码是 OpenFOAM 中 toposetdict 文件的一部分,toposetdict 文件用于定义 toposet 工具的操作。下面来详细解释这段代码的具体含义和作用:
整体功能概述
这段代码的主要目的是定义一个名为 heater 的单元区域(cellZone),该区域由两个不同的长方体盒子所包含的单元组成。通过上述三个操作块,代码首先定义了一个由第一个盒子内单元组成的 heaterCellSet 集合,然后将第二个盒子内的单元添加到该集合中,最后将这个集合转换为一个名为 heater 的单元区域。这个单元区域可以在后续的模拟中用于设置特定的边界条件、初始条件或进行其他操作。、
2.2 反转得到最后的剩余区域
// bottomWater is all the other cells{name bottomWaterCellSet;type cellSet;action new;source cellToCell;sourceInfo{set heaterCellSet;}}{name bottomWaterCellSet;type cellSet;action add;source cellToCell;sourceInfo{set leftSolidCellSet;}}{name bottomWaterCellSet;type cellSet;action add;source cellToCell;sourceInfo{set rightSolidCellSet;}}{name bottomWaterCellSet;type cellSet;action add;source cellToCell;sourceInfo{set topAirCellSet;}}{name bottomWaterCellSet;type cellSet;action invert;}{name bottomWater;type cellZoneSet;action new;source setToCellZone;sourceInfo{set bottomWaterCellSet;}}
这段 OpenFOAM 的 toposetdict 文件代码块的主要目的是定义一个名为 bottomWater 的单元区域(cellZone),该区域包含除了 heaterCellSet、leftSolidCellSet、rightSolidCellSet 和 topAirCellSet 这些集合所包含单元之外的所有网格单元。这段代码通过一系列操作,先将 heaterCellSet、leftSolidCellSet、rightSolidCellSet 和 topAirCellSet 中的单元添加到 bottomWaterCellSet 中,然后反转该集合,最后将反转后的集合转换为名为 bottomWater 的单元区域。在后续的 OpenFOAM 模拟中,可以针对这个 bottomWater 单元区域设置特定的物理属性、边界条件等。
action: add 表示将指定集合中的单元添加到已有的 bottomWaterCellSet 集合中。
具体例子参考openfoam4.0中的multiRegionHeater,其他的都中规中矩,主要是一个叠加多个区域和反转的应用。