通常,OpenFOAM中有两种主要的动态网格处理功能:网格运动和拓扑变化([4],[5])。网格运动仅涉及网格点的位移,而不改变网格拓扑:网格元素(例如点、边、面和单元)之间的连接。移动网格点看起来似乎是一项相当琐碎的任务,但根据所需的运动,所需的操作可能比预期的更复杂。非结构化有限体积法所使用的几何信息,例如面中心和面区域法向矢量,是从唯一网格点的列表中建立的。因此,网格点的位移触发了非结构化有限体积法所需的几何信息的计算。网格变形后,其值仍与初始网格相关的场需要映射到新网格。这种映射必须应用于以单元为中心和以面为中心的物理场,因为FVM中的物理场值表示单元体积或单元面区域的平均值,并且面和单元可能经历网格细化和粗化的修改。

更改网格拓扑通常包括添加或删除网格元素:点、边、面或单元,这最终会更改网格元素之间的连接。因此,与网格运动相比,涉及拓扑网格改变的操作相当复杂,因为它们涉及更复杂的算法和数据结构。为了获得快速准确的求解,有两个主要问题需要改变拓扑结构:移动网格边界和求解中的大梯度。 当一个物体在域内显著移动,网格点之间存在相对运动时,网格很可能会被过度扭曲或压缩。 这方面的一个例子是活塞在气缸中运动:网格层被添加或删除,网格的部分可以相互分离,然后重新连接。

第二个问题类别要求模拟在那些先验未知的域区域中具有更高的精确度,例如,在网格生成的点上。 对于在模拟域中涉及激波的模拟,其中激波位置是求解过程的一部分,基于例如压力梯度应用拓扑变化来实现激波出现区域的局部静态细化。 另一个不同的例子是在两相模拟中两个不互溶的液体相之间的界面:物理特性在界面上的值突然变化,但在模拟开始时界面位置是已知的。 然而,为了获得更精确的求解,网格在流体界面附近进行局部动态细化。 当界面在计算域中移动时,这种细化跟随界面。

通过将动态网格操作封装到类层次结构中的类中,将动态网格操作保持在较高的抽象级别上,这允许OpenFOAM用户将动态网格操作从流动求解器分离并将其联合收割机。动态网格类也可以使用面向对象的设计原则进行组合,以扩展具有多个动态网格操作的流求解器,从而提高数值模拟的准确性和灵活性。

本章对现有的动态网格类型进行了概述,并对OpenFOAM现有的动态网格引擎进行了更详细的描述。 关于基类的设计和一些选定的动态网格的设计的详细信息可以在13.1节中找到。 对使用动态网格处理感兴趣的读者更感兴趣的是第13.2节,它提供了一些使用示例。 通过结合实体运动和六面体网格细化来扩展OpenFOAM现有的动态网格处理,在13.3节中描述。