APP下载

网格之星:国家数值风洞的通用型结构网格生成软件

2020-11-04庞宇飞卢风顺谢冬香张红红

空气动力学学报 2020年4期
关键词:网格软件结构

庞宇飞,卢风顺,刘 杨,陈 波,江 雄,齐 龙,陈 杰,谢冬香,张红红

(中国空气动力研究与发展中心,绵阳 621000)

0 引 言

网格生成技术的研究最早可以追溯到1966年,Winslow 通过求解拉普拉斯方程[1]对三角形网格进行了数值构造。该技术一直受到研究人员的广泛关注,诞生了许多相关的学术研究成果[2-4]。在计算流体力学领域,模拟流体物理特性时通常需要离散计算空间的网格作为输入条件。针对复杂几何外形生成网格通常是非常困难且耗时的,这极大地影响了在航空航天领域和其他行业中仿真的效率。

根据拓扑结构,网格可以划分为结构网格和非结构网格。结构网格的生成通常比非结构网格需要更多的人工干预,在复杂外形情况下的生成时间是以周而不是小时来衡量的[5]。尽管生成速度较低,但结构网格凭借边界层模拟准确、计算效率高等优势在计算流体力学领域仍然具有广泛的应用场景。为解决结构网格生成速度慢的问题,本文研发了一款具有友好图形用户界面(GUI)的交互式结构网格生成软件——网格之星(NNW-GridStar),以减轻结构网格生成中的痛点。该软件支持附面层网格自动生成,也能加快空间网格的生成,从而大幅度提升网格生成的效率。

本文第一部分介绍结构网格生成软件的相关工作;第二部分详细介绍网格之星的软件设计;第三部分展示了几个关键功能模块的实现;第四部分从网格生成速度和网格质量两个方面比较了网格之星和两个商业软件,并描述其在CFD 模拟中的应用;第五部分总结并展望未来工作。

1 相关工作

Schneiders[9]维护了一个网格生成软件列表,其中包含大约100个公开的网格生成工具和60款商业网格生成软件。在此仅列出其中支持三维结构网格生成的一部分软件。

1.1 网格生成工具

CGT[10]是一个软件包,其中包含用于Chimera重叠网格方法的各种预处理和后处理工具。CGT 中的工具包括曲面网格生成工具、体积网格生成工具、网格实用程序、配置自动化脚本、实用程序脚本和后处理工具。

MegaCads[11]是具有一些简单CAD 功能的交互式网格生成系统。用户能够基于形状的简单表示来构建块的边界,创建表面网格并用网格填充空间。该工具能够为高雷诺数流动生成结构多块网格,但没有任何自动生成功能。

Overture[12-13]是专为解决结构网格或结构网格集合上的问题而设计的,可以使用曲线网格、自适应网格细化和复合重叠网格方法来表示相关问题。这些问题可以通过名为Ogen[14]的重叠网格生成器生成。

关于这些网格生成工具,本文得到以下观察结果:1)与非结构网格生成工具相比,结构网格生成工具受到的关注较少,列出的网格生成器中只有约20%可以处理结构网格。2)大多数工具不支持交互式网格生成,并且通常针对特定类型的构型进行自定义;3)在列出的结构网格生成工具中几乎找不到自动生成功能,这极大地影响了网格生成速度。

1.2 商业软件

本小节将简单介绍几款能够支持三维结构网格生成的主流商业软件。

Pointwise[7]是一款灵活、健壮、可靠的网格生成软件,可提供高水平的自动化网格生成。自1984年以来,该软件一直在不断打磨结构四边形和六面体网格划分技术,以生成高质量的网格,并可以很好地控制光滑性、正交性和网格分布。目前,Pointwise公司致力于推动混合技术,已决定不开发结构网格生成部分。

ICEM CFD 是一款计算前处理软件,包括几何创建、网格划分、前处理条件设置等功能。它拥有强大的CAD 模型修复能力,对CAD 模型的完整性要求较低。ICEM 能够快速自动生成六面体为主的网格,对几何尺寸改变后的几何模型可以自动重划分网格,在CFD 网格生成领域有一定优势。

Grid Pro[15]的开发旨在满足美国宇航局格伦研究中心对高质量网格的要求。与传统的网格划分算法不同,Grid Pro更专注于自动化和鲁棒性,但并不会损失网格质量。它可以自动识别网格块的样式,并对样式进行必要的调整,以获得更好的正交性和光滑性。Grid Pro已被广泛应用于涡轮机械、航空航天等不同领域。

ANSYS Meshing[8]是一款具有智能化、自动化和高性能的通用产品,能够为高精度、高效率的多物理场求解提供最适用的网格。用户可以为模型中所有零件的特定分析生成非常适合的网格。另外,该软件能够自动启动并行处理功能,可减少等待网格生成的时间。

通过对上述有关商业软件的介绍,可以得到以下观察结果:1)只有少数商业软件支持多块对接结构网格的生成,这些网格通常用于复杂构型的高精度CFD 仿真;2)尽管有些软件可以针对特定构型执行自动生成,但商用软件自动生成结构网格的功能还是比较缺乏的。

2 软件设计

本节将详细介绍网格之星的软件设计。首先介绍设计原则,然后阐述软件的分层体系结构,最后给出此软件使用的核心数据结构。

2.1 设计原则

(1)模块化设计。模块化设计取决于模块之间接口定义的简单性和抽象性,它带来了许多好处:1)可能只需要更改整个系统的一个模块即可满足未来的需求;2)系统可以由团队成员同时独立开发和维护;3)使用第三方创建或优化的基本方法和工具更为方便。

(2)易用性。在软件工程中,易用性衡量的是有效性、效率和满意度。为了提高易用性,应用程序应该拥有一个友好的用户界面和较短的学习曲线,并且只需要较少的时间来完成特定的任务。

2.2 软件架构

网格之星的软件体系结构详见前期工作[5],从完整性角度考虑,在此仅对其作简要介绍。如图1 所示,该软件基于网格生成公共基础库研制,可运行在个人计算机和工作站上。在公共基础库之上,软件按照传统的MVC 框架模式划分为三层,即表现层、应用层和数据层。

图1 网格之星的软件架构Fig.1 The software architecture of NNW-GridStar

表现层主要提供用户界面显示及交互功能,根据用户输入条件调用应用层提供的服务,将返回的数据以一定方式显示给用户。该层是软件中处理数据显示的部分,也是用户看到并与之交互的界面。在表现层中并没有真正的处理发生,不管是哪种数据,只是作为一种输出数据并允许用户操纵的方式。

应用层包含了文件处理、数模处理、网格线操作、网格面操作、网格块操作、网格质量检测、网格质量优化、可视化与交互等组件,分别封装了针对文件、数模以及网格的各种应用程序接口(API)。该层衔接表现层和数据层,各种功能控制器通过提供的功能接口来调用数据。该层的存在使得界面开发人员无需了解复杂的底层功能实现,可以清晰地界定出工作交接面。将各种功能接口抽象封装之后,其它衍生软件可以非常方便地调用结构网格内核,大大提高了软件研制的效率。

数据层用于数据存储、维护和管理功能,主要存储了配置数据、数模数据、网格数据和可视化数据。配置数据用于对软件的配置,主要是软件操作运行过程中的参数;数模数据用于数模处理组件,是数模本身;网格数据用于网格生成、网格质量检测、网格质量优化等组件,包括导入和通过各功能组件生成的网格;可视化数据主要指可视化过程中的中间数据,用于显示和交互。

2.3 数据结构

图2展示了软件中利用四个物理实体来表示结构网格,即网格端点(EndPoint)、网格线(Connector)、网格面(Domain)和网格块(Block)。

图2 软件中使用的网格物理实体[5]Fig.2 Mesh entities utilized in NNW-GridStar[5]

2.3.1 多对多关系解耦

End Point是一个特殊的网格端点,表示一个特定Connector的起点或终点。每个Connector都有两个EndPoint,而每个End Point又可能关联多条Connector。Domain由四个或更多Connector构成,并形成二维封闭空间,而一条Connector一般会关联两个以上的Domain。Block位于数据结构层次结构的顶部,并由至少六个Domain形成三维封闭空间,大部分Domain也会关联两个Block。可以看出,四个物理实体之间存在复杂的多对多关系。因此,引入了五个逻辑实体(即Capstone、Range、Edge、Region以及Face)来解耦多对多关系[5]。

2.3.2 网格对象数据结构

数据层中最重要的是网格数据,也是数据结构中最复杂的部分。为了将结构网格点、线、面、体之间层层关联的复杂关系拆解为方便人机交互处理和控制的结构,在物理实体之外增加了GPoint、Capstone、Range、Edge、Region、Face等逻辑实体,将结构网格复杂的多对多关系拆解为若干多对一关系,有效降低了结构网格模块的数据复杂度。网格实体之间的相互关系中最主要的是Domain与Block 之间的关系和Connector与Domain之间的关系。

(1)Domain与Block之间的关系

如图3所示,Domain和Block之间的关系可以分为三种。1)Block与逻辑实体Face之间的构成关系。每个Block由六个Face组成,这些Face不能单独存在,应附加到物理实体Block 上。某些特定Block利用这些Face来确定封闭的三维空间。2)逻辑实体Face和Region之间的组成关系。每个Face都有一定数量的Region,每个Region都有一个属性记录整个Face 的左下和右上位置。3)Region 和Domain之间的构成关系。每个Region都封装一个Domain,并利用属性记录Region 如何组装到特定Block的特定Face中。

(2)Connector和Domain之间的关系

如图3所示,Connector和Domain之间的关系也可以分为三种。1)Domain和逻辑实体Edge之间的组成关系。每个Domain都由四个Edge组成,并且逻辑实体Edge始终将自身附加到一个Domain上。2)Edge和Range之间的聚合关系。一条Edge可以包含多个Range,每个Range都有一个属性来说明其在Edge中的起始位置。3)Range和Connector之间的构成关系。作为逻辑实体,Range将一个Connector包裹起来并使其成为Edge的一部分。

图3 网格实体之间的相互关系Fig.3 The relationship between mesh entities

2.4 界面设计

图4 给出了软件的GUI布局,可分为三个部分:顶部包含功能强大的功能区样式按钮,可分为四组——网格线、网格面、网格块和辅助按钮;左侧是一个名为TreeList的树结构,其中列出了所有网格对象元素并提供了对它们的便捷控制;右侧是主窗口,用户可以在其中交互地操作和查看网格的每个细节。

图4 软件界面布局Fig.4 The GUI layout of NNW-GridStar

3 软件关键功能

网格之星在满足基本功能情况下,提供部分自动化程度较高的网格生成加速技术。本节将介绍软件特色的功能,包括附面层推进、空间网格快速生成、网格分布快速调整、破损数模网格优化等。这些技术能够缩短网格生成周期,显著提高软件的可用性。

本章后续内容主要对软件关键功能进行概述,相关算法理论已在前期工作[20]中进行了详细描述,在此不再赘述。

3.1 附面层推进

在多块结构网格中,附面层的质量显著影响复杂几何外形CFD 仿真的精度。因此,网格生成工程师通常必须花费大量时间来调整附面层网格,以获得更好的质量。为了解决该问题,在前期工作[5]中提出了一种自动附面层网格生成方法,在此仅介绍附面层推进的基本思路。

非结构网格通常采用前沿推进方法[16-17]或其变体来自动生成网格元素。而网格之星软件采用一种由外而内的网格构造生成策略。首先,从作为输入的表面网格中提取所有必要的几何特征;其次,基于几何特征构造附面层的网格框架;最后,附面层网格是在所创建的网格框架的约束范围内通过超限性插值[6]操作生成的。

图5给出了自动生成的F6附面层网格的示例。附面层网格的框架如图5(a)所示。由于表面网格具有64个Domain,因此最终的附面层网格具有64个Block,如图5(b)所示。

图5 自动生成F6的附面层网格Fig.5 Automatic generation of boundary-layer mesh for F6

该附面层推进方法[5]能降低整个网格生成周期大约30%的时间。

3.2 空间网格的快速生成

对于空间网格,网格之星研发以下加速技术来生成空间网格。

3.2.1 网格块自动补齐

块装配是在生成空间网格期间经常使用的操作。它通常至少需要六个面来形成一个封闭的三维空间,然后将它们组装为一个块。当生成用于复杂构型的网格时,很难从数百个甚至数千个网格元素中选择所需的面。为了减轻用户的工作量,网格之星软件提供了一些方式,即使只有一个面也可以构建网格块。为了便于说明,将一个块的六个面命名为底部、顶部、左侧、右侧、正面和背面。

图6描绘了基于一个(底部)面的快速块装配。用户触发快速块装配的功能时会创建一个初始块框架,然后通过交互方式将其拉到所需的位置。软件还提供了几个预定义的方向,可以指导控制点的移动轨迹。当用户确认块框的形状和位置时,软件会构建其他五个面,然后自动将它们组装成一个块。

图6 快速块装配技术示意图Fig.6 Sketch of the rapid block assembly

同样,软件还支持具有两个到五个装配面的快速块装配。

3.2.2 多块拉伸技术

在构建空间网格时,用户经常会遇到需要基于多个相邻面生成多个块的情况。如果通过选择单个面来逐个装配块,那么即使使用第3.2.1节中提出的加速技术,也将非常繁琐且效率低下。

本软件提供了一种称为“多块拉伸”(MBS)的新颖技术来解决该问题。给定如图7(a)所示的一组相邻面,可以在以下步骤中执行MBS:1)基于10个端点生成10条支持线,每条支持线几乎垂直于相关面;2)完成拉伸块的网格框架;3)拉伸块自动装配,每个块对应一个基础面;4)在新生成的块之间执行合并操作,以减少块的数量并消除外部网格块的复杂性。图7(b)展示了在基础面上采用MBS技术后的最终单个块。顶面仅包含一个面,在面的数量上比底面少很多,可以为改进网格质量带来很大便利。

图7 多块拉伸技术示意图Fig.7 Sketch of multiblock stretching

3.2.3 O 型块拉伸技术

图8(a)描绘了在多块网格生成中使用的密封O形拓扑。使用3.2.1 和3.2.2 小 节中介绍的加 速 技术,用户可以快速生成五个块。由于O 型拓扑五个面的复杂性不能在外部隐藏,因此整个网格的复杂性仍然相对较大。

为了解决该问题,本软件提出了一种O 型块拉伸(OTBS)技术。图8(b)显示了O 拉伸块的网格框架。注意,在网格框架内可以生成六个块。除了从参考面直接拉伸的五个块外,还会生成一个额外的块来密封拉伸块的顶部。如图8(c)所示,顶部仅包含一个面,因此参考面的复杂O 拓扑已从外部隐藏。利用提出的OTBS技术,用户可以降低网格的复杂度,这可以为网格修改带来很大的便利。

图8 O 型块拉伸技术示意图Fig.8 Sketch of the O-type block stretching

3.3 快速修改网格分布

绘制网格时,调整网格点数、网格分布是控制网格质量的重要环节,能否快速修改网格分布对网格生成效率有重要影响。在常规网格软件中,当修改网格节点数时,网格点数无法对应,导致网格修改失败。而如果手动点击每条网格线进行调整,则会很浪费时间。因此,可采用快速修改网格分布的方法:当修改一条网格线的点数时,与之对应的网格线也随之改变。如图9所示,当修改弹体上面的网格点数时,关联的线进行传递,从而快速调整网格分布,减轻了工程人员的负担。

网格线批量修改算法的基本思想是:首先,遍历所有的网格面,通过对比其相邻边所包含网格线的情况,确定全局的虚拟分割位置;然后,建立若干条虚拟分割路径,确保路径上的所有虚拟网格线具有相同的点数;最后,采用递归算法提取一条虚拟分割路径,然后将所有虚拟网格线的点数修改为目标点数。

图9 快速调整网格分布Fig.9 Fast adjustment of mesh distribution

3.4 破损数模网格优化技术

不同的系统之间传递CAD 数据时,会因为各系统的底层实现不同和公差定义的不一致产生误差或信息的丢失,导致数模缝隙多、零碎,甚至缺面的情况。用户在此数模上绘制网格时需先进行模型修复工作,模型修复过程主要靠手工修复或半自动算法,这也是目前商业系统的技术水平现状。

为了解决该问题,本软件提供了一种破损数模网格优化技术。图10(a)显示了在破损数模上绘制网格线的效果图。该技术利用初始绘制的先验网格线位置信息,筛选出错误区间段,并构造一条可替换原有错误区间段的新线段,实现跨域缝隙生成完整、平滑的网格线。图10(b)则显示了在破损数模上绘制好网格面后,在上面投影的效果。利用网格双向网格线上交点投影先验信息,检测缝隙存在位置,采用双向插值修补缝隙投影点,可以生成贴合几何的光滑网格。

图10 破损数模网格优化Fig.10 Mesh optimization of dirty model

4 软件对比

本节分别从功能、生成效率和网格质量等方面将网格之星与主流商业软件进行了对比分析,并列举了应用场景。

4.1 功能对比

表1列出了网格生成时通常使用的18 个功能点,并对网格之星和Pointwise(18.2R1版本)进行了比较。

表1 网格之星与Pointwise的功能对比[20]Table 1 Functionality comparison between NNW-GridStar and Pointwise[20]

在CAD 模块中,两者都部分支持通用几何构造和几何修改,但在检查水密性方面,Pointwise优于网格之星,因为后者尚不支持它。对于表面网格,这两款软件都完全支持7个基本功能。对于辅助功能,两者都支持网格检查、数据聚类、边界条件设置和视图控制。对于空间网格,表1比较了三种功能:快速块装配、自动附面层生成和块合并/分割。可以看出,对于前两种功能,本软件的性能优于Pointwise。这是由于Pointwise可以通过沿法向拉伸来快速生成一个块,但是不能基于多个域生成多个块。相反,本软件拥有第3.3节中介绍的几种加速技术,并且支持自动生成整个附面层网格。

4.2 生成效率和网格质量对比

为了验证网格之星的生成效率和所生成的网格的质量,软件开发团队邀请了本单位的27名工程师针对特定数模进行网格生成。这些工程师都是网格生成方面的专业人士,他们被分为三个九人组,分别使用网格之星、Pointwise和ICEM。如图11 所示,数模为四舵导弹,其舵呈X 形分布。数模已经过预处理,无需对其进行编辑。表2给出了所生成网格的信息以及生成时间(每个小组成员的平均间)。可以看出,本软件的生成时间只有7.35小时,是三款软件中耗时最短的。

图11 不同软件生成的网格[20]Fig.11 Meshes generated by different software[20]

表2 网格生成时间对比Table 2 The comparison of mesh generation time

与ICEM 不同,网格之星和Pointwise都遵循自下而上的策略来构造网格并逐渐生成网格实体。借助第3.1节中介绍的自动附面层网格生成方法和第3.2节中提出的加速技术,对于典型的飞机构型,本软件可以比Pointwise更快地生成多块结构网格。至于ICEM,必须开展更为广泛而详细的实验才能恰当做出对比。

网格检查是检查网格质量的有效工具。表3列出了五个质量度量,即正偏斜、负偏斜以及I、J 和K方向上的三个最大长度比。可以看出,一方面,由于缺少网格光滑功能,本软件生成的网格具有最大的正偏值;另一方面,所有这三个网格都具有相似的最大长度比,表明三款软件所生成的网格质量相当。

表3 网格质量对比[20]Table 3 The comparison of mesh qualities[20]

为了进一步验证由本软件生成的网格的质量,使用单位PMB3D 求解器对所生成的网格进行了CFD数值仿真[18]。测试条件如下:高度为10 km,马赫数为3.5,侧滑角为0°,迎角介于-6°~8°之间,间隔为2°。假定为完全湍流并使用k-ω 湍流模型[19]。图12给出了计算结果的对比。图12(a)描绘了升力系数(CL);图12(b)描绘了俯仰力矩系数(Cm);图12(c)描绘了阻力系数(CD)。可以看出,网格之星的结果与另两款软件的结果非常吻合,表明该软件可以生成与Pointwise和ICEM 等主流商业软件相媲美的多块结构网格。

图12 计算结果的对比[20]Fig.12 The comparison of computational results[20]

5 软件在CFD仿真中的应用

网格之星在中国空气动力研究与发展中心CARDC内部发布之后,已经生成了数百个结构多块网格用于CFD 仿真模拟。本节选择四种应用场景并进一步验证软件的可用性。以下所有CFD 仿真结果均使用PMB3D 求解器[18]计算而得。

图13 在Harrington共轴刚性旋翼中的应用[20]Fig.13 The application in Harrington coaxial rigid rotor[20]

图13 (a)展示了本软件在Harrington共轴刚性旋翼中的应用。生成的网格约有6 236万网格点,并由两部分组成:围绕旋翼生成的桨叶子网格和静止的背景网格。为了保证网格在桨叶端部能保持良好的正交性及物面间距,该桨叶子网格采用了C-O 型拓扑结构,单个桨叶的网格量为309万,四片桨叶网格量为1236万。图13(b)展示了计算条件为旋翼转速62.824 rad/s、桨尖马赫数0.352、桨尖雷诺数3.5×106下的涡量分布。控制方程为URANS方程,对流项离散采用Roe通量差分分裂方法,采用双时间步方法,每个真实时间步桨叶在周向运动1.5°,湍流模型为两方程K-Omiga SST 模型。

图14展示了本软件在模拟飞行器部件中的应用。如图14(a)所示,对于整个构型,生成了一个包含188万个网格点的网格。第一层网格距离物面的距离为8 mm。数值模拟中采用隐式LUSGS方法迭代求解URANS 方程,并采用双时间步方法。如图14(b)显示了飞行器部件的压力云图,马赫数为0.8,迎角为2.5°,侧滑角为0°。

图14 在飞行器部件中的应用Fig.14 The application in aircraft components

图15 (a)描绘了DLR-F6翼身组合体构型加短舱构型。网格量为约330万。网格拓扑H-O 型,机身、机翼及短舱均用“O”型网格包裹,精细布置网格点,并对附面层网格进行加密。网格坐标X 方向为沿流向,Y 方向沿展向垂直视图向外,Z 方向垂直向上,符合右手法则。控制方程为RANS方程,对流项离散采用Roe通量差分分裂方法,湍流模型为两方程K-Omiga SST 模型,为了加速流场收敛,计算采用了三重W 循环的多重网格方法。图15(b)给出了DLR-F6 的压力云图。计算条件如下:马赫数为0.75,迎角1.7°,侧滑角0°。

图15 在模拟飞行器中的应用Fig.15 The application in simulating DLR-F6

图16 显示了本软件在航天模型试验飞行器中的应用。图16(a)是生成的网格,约530万个网格点;图16(b)展示了压力云图。模拟条件为马赫数5,迎角3°和侧滑角0°。为了精确捕获附面层附近的流动,将壁面和第一层网格之间的间隔长度设为35 mm,并在该距离内分布30个网格点。尾部上采用了O 型网格,在此基础上再向空间拓展。为了消除奇轴,在头部采用H 型网格单独生成一块。

图16 在航天模型试验飞行器的应用Fig.16 The application in space aircraft

以上四个由网格之星生成的网格都获得了流动特性符合空气动力学原理的仿真结果,验证了该软件生成的网格质量满足实际CFD 仿真的要求。所选的四种模型涵盖了航空航天行业的大多数应用场景,因此可以认为网格之星软件能够满足CFD 仿真领域的结构网格生成需求。

6 结 论

为了提高网格生成速度,本文实现了一款名为网格之星(NNW-GridStar)的通用型结构网格生成软件。该软件支持自动附面层网格生成,并提供了三种技术来加快空间网格的生成。实验结果表明:该软件具有出色的生成速度,并且可以生成高质量的网格。

目前,网格之星已在中国空气动力学研究与发展中心(CARDC)官网对外发布,已有80余家科研院所下载使用,得到了一致好评。

未来的工作包括以下几个方面:1)空间网格的自动化会进一步加强;2)支持大规模网格生成的并行版本正在开发中;3)支持非结构网格生成的版本正在开发中。

致谢:这项工作得到了国家数值风洞工程和预研通用技术项目(41406030201)的资助。对于黄尚坤、潘艳、刘远超、胡月凡、鲍鑫彪、雷勇强、王毅等在网格生成团队中的技术支持深表谢意,感谢西南科技大学、北京荣泰创想科技有限公司的研发支持。

猜你喜欢

网格软件结构
禅宗软件
《形而上学》△卷的结构和位置
网格架起连心桥 海外侨胞感温馨
工业软件 自主创新
论结构
追逐
论《日出》的结构
即时通讯软件WhatsApp
创新治理结构促进中小企业持续成长
丰富多彩的Android软件