陈树生, 刘丽媛, 阎超, 林博希
北京航空航天大学 航空科学与工程学院, 北京 100083
CFD软件自动化验证确认云平台设计与实现
陈树生, 刘丽媛, 阎超*, 林博希
北京航空航天大学 航空科学与工程学院, 北京 100083
针对大型计算流体力学(CFD)软件的验证与确认,为了减少人工成本,提高软件质量和开发效率,并适应于未来高性能计算发展的要求,基于云计算思想,提出了自动化测试云平台的解决方案。该方案采用模块化的浏览器/服务器(B/S)网络架构;利用LAMP(Linux+Apache+MySQL+PHP/Python)开发工具;建立了持续集成的专业数据库;构建了涵盖可靠集群监控、复杂作业调度及大规模并行计算功能的云端环境;实现了通过便捷的网络访问,自动加载测试算例、提交集群计算、监测实时进度、自动化后处理、输出分析结果,并提供丰富的实验对比图、误差分析报表和汇总报告等;完成了对大型CFD软件的自动化验证与确认。将该方案应用于某大规模并行计算的CFD软件,验证了该解决方案的可行性与实用性。
验证与确认; 云计算; LAMP; 专业数据库; 云端环境; 自动化
在21世纪,随着计算机和计算流体力学(CFD)技术的进一步发展,E(Exascale)级计算机[1-2]预计在2020年前后投入使用,这将给CFD超大规模并行计算的应用带来前所未有的发展机遇。2014年,美国国家航空航天局(NASA)在其CFD的2030年未来展望报告[3]中指出,高性能计算(High Performance Computing,HPC)[4]将是CFD技术未来发展的重点领域和引导方向。同时,现代气动设计领域更加关注非定常效应和流动细节,要求更加精细的、多尺度的CFD模拟,致使网格数量剧增,求解时间周期变长,CFD问题规模愈加庞大[5]。
为适应HPC的发展和日益复杂的CFD问题,目前国内外很多商业公司、科研单位正不断发展超大规模并行计算的大型CFD软件,如Fluent、Fun3D、CFD++和HiFiLES等。这些软件规模庞大,多为团队协作,开发过程中经常出现如下问题:① 多人开发致使错误多样化,很难找出问题所在;② 代码更新迭代快,导致Bug数量剧增;③ 版本升级后,以往测试验证的算例又需要重新进行测试,重复性高、人工成本大。同时,CFD软件测试在CFD验证与确认过程中占据重要地位[6],通过测试才能保证软件的质量和可靠性[7]。但是在目前的测试中,开发者经常还需自己手动收集算例及实验数据、人工提交作业并分析结果、主观评估软件好坏等,工作繁琐枯燥,严重影响大型CFD软件的开发效率和质量。
为促进CFD软件开发与测试,近年来许多研究机构已经着手建立验证与确认专业数据库。2001年,NASA启动了大型气动数值模拟可信度研究国际合作项目CAWAPI[8]。欧盟的FLOWNET数据库[9]汇集了56种标准案例数据,专门用于气动计算验证和确认。另外,还有欧洲ERCOFTAC科学数据库[10]、AGARD系列CFD确认试验数据集[11]和欧洲航天局(ESA)高超声速气动热力学工程数据库等。这些数据库技术成熟度较高,但由于未将数据库与测试过程结合,因而很多科研机构在测试时只能手动下载标模算例,利用文献数据,开展粗略的验证与确认。
近20多年来,CFD验证与确认一直是国内外CFD关注的焦点问题之一。1992年,Marvin针对高超声速流动问题提出了CFD确认路线图[12]。1997年, Oberkampf等分析了CFD代码验证与确认过程中存在的问题[13],并在2002年进一步评估了CFD验证与确认的方法和步骤[6];AIAA于1998年6月颁布了关于CFD模拟可信度的基础级标准“CFD模拟验证和确认指南”[14];同时,NASA 发布了NPARC Alliance CFD验证和确认档案官方网站[15]。国内,Bai和Li初步设计了验证与确认共享数据库,进行了航空CFD的验证与确认工作[16];邓小刚等综述了国内外CFD验证与确认的发展,并对中国如何开展相关研究提出了若干建议[17];中航工业631所研制了一款CFD可信度分析平台WiseCFD[18];西安电子科技大学的孙久振设计开发了基于OSGi的CFD可信度分析平台[19]。
目前,在国内外对CFD验证确认数据库的实际应用中多以人工为主,测试过程与数据库未紧密耦合,且对于CFD软件的自动化测试方面涉及较少。而提交任务、对比结果、分析误差等是可以实现自动化、标准化的,为使人从底层的繁琐操作中解放出来,并适应HPC发展的要求,本文基于软件持续集成思想和云计算技术[20],以LAMP(Linux+Apache+MySQL+PHP/Python)为开发工具[21],采用浏览器/服务器(B/S)网络架构和模块化设计,提出了相应的CFD验证确认数据库,为CFD软件的验证和确认工作提供数据支撑;并在此基础上建立起基于HPC的大型CFD软件自动化验证确认云平台。
计算机技术和互联网的发展使技术创新形态正在发生转变,以人为本、以用户为中心的理念越来越受到重视。所以,在设计自动化测试云平台时,将以Web浏览器作为客户端,简化客户端电脑软硬件负荷,减轻系统维护、升级的成本和工作流,提高用户体验,降低用户总体成本(TCO)。同时有效地利用开源项目等,配合Web技术,创建实用操作的可视化界面,并满足CFD软件高性能、大规模的计算要求,为用户提供一套完善的测试分析环境,使用户无须了解底层运行细节,即可完成对大型CFD软件的验证与确认。
本文基于高性能集群系统,构建了云端环境,使用户通过便捷的网络获取虚拟化的资源。同时以Python作为后台主体框架实现语言,通过灵活的集成机制[22]轻松地将不同语言的代码组合起来,实现将不同的功能组装成一个复杂的体系;并以超文本预处理器(PHP)完成前端与服务端之间的相互交互,包括提交数据、调用Python程序、将结果返回给客户端等。该测试平台具有持续集成、客户端零维护、易于扩展和可远程使用等优点。
1.1 整体软件架构
高性能集群一般分为硬件层、系统软件层、应用环境层、集群软件层和应用层。该测试平台设计时,其相关服务处于应用环境层以上、应用层以下的集群软件层,保证了HPC应用能在集群硬件设备上运行。本文使用开源项目Ganglia及PBS(Portable Batch System)作业调度系统,利用Python程序来驱动管理PBS,自动协调各串行/并行作业,实现对用户提交的大规模测试任务进行统一安排;进而构建起涵盖可靠集群监控、复杂作业管理及大规模并行计算功能的云端环境,提供虚拟化资源。平台体系架构如图1所示。
1.2 系统业务逻辑
该测试云平台采用3层B/S网络架构模式,统一了客户端,将系统核心功能的实现集中在服务器上;然后利用LAMP网络开发工具,对集群计算资源进行安全、动态的共享;并在高性能集群系统的管理节点上构建适应Linux环境的Apache HTTPD网络服务器;同时编制Python程序组装各模块,将各模块进行连接,实现各模块的自动化运行及其模块间数据的自动传输与交换;从而建立起以自动化为核心、基于Web的验证确认云平台。
高性能集群系统一方面具有以太网接口,该接口设置成外部IP地址,管理节点能利用此接口部署网络服务器,实现与客户端的相互交互;另一方面通过服务端脚本PHP和Python程序与Linux底层环境进行交互,实现状态提交、自动化后处理等,并将结果返回前端。系统B/S的逻辑结构如图2所示。
用户在Web浏览器客户端上输入账号和密码,登录到相应云平台界面,便可通过Web页面进行测试、查询、管理、下载和编辑等操作。浏览器通过Web服务器与数据库进行数据交互,将信息反馈给应用服务器。应用服务器接收这些信息后,启动Python程序,调用关系型数据库,完成相关事务逻辑,并将结果返回给客户端显示。这种3层架构,能充分利用计算、网络带宽等资源,使CFD自动化测试平台在客户端上无须特别安装,减轻了客户端压力,负载被均衡地分配给Linux服务器,并且数据可持久存储在云端;同时层与层之间相互独立,每一层可单独设计,业务扩展方便。
1.3 功能模块设计
该平台采用模块化设计,可扩展性强,包括了Web门户、CFD验证确认数据库、自动化测试模块、批处理模块、集群监控模块和作业调度模块等,功能模块设计如图3所示。
1.3.1 CFD验证确认数据库
CFD验证确认数据库以算例(Case)作为基本数据单元,并根据流动结构、流动机理、试验及计算数据将标模算例分为4大类:计算格式类、测热类、测压类和流场特征类。算例下包括实体外形、计算网格、算例数据表、对比数据、Tecplot宏文件以及算例文档资料。算例数据表包含名称、类别、描述、流动特征等信息;对比数据包括风洞试验数据、飞行试验数据和CFD计算数据;算例文档资料包括参考文献和算例的实践指南。
平台支持多用户,每个用户都可以根据自己的需求提取不同的标模算例来测试程序。因此,系统首先建立一个用户数据库,来标识每个用户。用户可以通过网页访问,查阅自己测试过的算例,而作为超级用户则有权限访问所有用户测试的算例。
平台选用关系型数据库MySQL用于对标准算例和测试等信息进行管理。该数据库在运行速度、性能、可靠性和稳定性方面能满足自动化测试平台的要求。其主要数据表关系如图4所示。
为提高用户体验,可视化的数据库界面将使用Django站点管理系统,在不需要掌握SQL语言的情况下,使用者能便捷地对算例进行可视化查询、添加、删除和修改等操作。
1.3.2 自动化测试模块
该测试模块所完成的功能是:通过自动化验证多个多状态的标模算例,测试、评估用户提交的求解器。对测试模块的设计,本文采用Python和PHP语言。测试模块的核心程序主要是Python程序,程序主体由4部分组成:CFD配置文件类、读写数据库、各种操作、后处理。自动化测试的整个过程如图5所示,分为提交数据、计算、监测、自动化后处理和返回结果5个过程。
首先,在Web界面上勾选测试算例和提交测试求解器,相应信息会通过PHP写入MySQL数据库表中;接着,PHP调用Python程序,Python代码从数据库中读取数据,并操作PBS作业调度系统,对计算资源进行统一管理,使CFD作业任务智能化地提交给集群计算,同时监测实时进度;然后利用Python和Tecplot宏文件自动化进行图片、文档和数据等处理,输出相应的结果分析,包括结果对比图、误差分析报表和汇总报告等;最后,PHP将组合计算/后处理结果形成HTML页面,在Web客户端上显示,提供数据下载。
1.3.3 其他模块
批处理模块:提交状态参数表及相应网格(cgns),上传求解器,监测实时进度,同时供用户上传、下载和编辑数据。
集群监控模块:集成开源项目Ganglia,用来监控系统性能,如CPU、MEM、硬盘利用率、I/O负载和网络流量等。
作业调度模块:后台使用PBS作业调度系统,支持Web界面作业提交方式;同时支持Web界面的作业查询、作业删除、作业挂起和作业释放等操作,可以根据作业ID、作业名、用户名、状态、及队列排序。
Web门户:可视化的Web界面,用以将数据库、测试、批处理、集群监控和作业调度等各个功能模块的界面统一起来。不仅支持在Web上提交测试算例、批处理作业,还可在Web上查看分析结果,同时具有数据的上传和下载等功能。
以某款大型CFD并行软件为例,在开发过程中,虽使用GitHub进行版本管理,但每天都产生数十个更新版本,软件庞大的规模也导致Bug数量急剧增多,同时以往验证确认的算例在经过版本升级后又需重新进行验证确认,人工成本太大,而且基本是重复性工作,效率低下。因此将该平台应用于此软件开发测试,如图6所示,选取马赫数Ma=2.85、坡度为16°的超声速压缩拐角[23]为例,来说明整个运作流程,并验证该解决方案的可行性和实用性。基本流程如下所述。
1) 登录:访问自动化云平台网址,没有注册的用户,要先注册,登录完毕后,用户拥有一定权限,根据服务器情况,获取虚拟化计算资源,如图6(a)所示。
2) 数据库管理:用户在登录后,可通过Django站点管理系统,在前端对算例进行查询、添加、删除和修改,如图6(b)所示。
3) 自动测试:上传要测试的求解器,在网页上勾选要测试的算例,开始提交集群计算。也可以同时上传多个计算状态的计算算例和求解器,进行测试,如图6(c)和图6 (d)所示。
4) 实时监测:一方面利用Ganglia实时监测服务器Nodes和CPU等的使用情况;另一方面查看作业在哪个节点以及当前状态;最后实时监测算例进度和收敛误差等。
5) 自动化后处理和结果分析:在计算过程中,可实时自动输出收敛曲线图、力曲线图以及流场图;计算完毕后,自动输出结果对比图,如图6(e)所示。
6) 下载:分析完毕后,将原始数据和分析数据打包起来,供用户进行下载。
针对大型CFD软件的验证与确认,为了提高CFD软件的开发效率和质量,降低人工测试成本,本文建立了自动化验证确认云平台。该平台具有标准共享的专业数据库、直观友好的Web操作界面、灵活便捷的批处理系统和高度智能的自动化测试,使测试过程与数据库一体化,适用于CFD软件开发、测试、验证和评估等领域。该平台的主要优点有:
1) 具有自动化测试和批量处理功能,能替代传统人工粗略的验证与确认,使CFD软件开发人员高效地进行回归测试,更专注于软件开发本身,提高被测软件质量和开发效率。
2) 具有强大的持续集成数据库,包含了大量不同类型的标模算例,避免了盲目重复的数据收集工作,降低了人工成本,并推进了数据信息标准化。
3) 具有方便快捷的网络访问,充分利用计算、网络带宽等资源,适应于云计算发展需求。
同时,测试算例结果证明了该自动化云平台的可行性与实用性,可进一步推广到CAE等大型高性能程序的验证确认。
[1] KOGGE P, BERGMAN K, BORKAR S, et al. Exascale computing study: Technology challenges in achieving exascale systems: FA8650-07-C-7724[R]. OH: AFRL, Wright-Patterson Air Force Base, 2008.
[2] AMARASINGHE S, CAMPBELL D, CARLSON W, et al. Exascale software study: Software challenges in extreme scale systems: FA8650-07-C-7724[R]. OH: AFRL, Wright-Patterson Air Force Base, 2009.
[3] SLOTNICK J, KHODADOUST A, ALONSO J, et al. CFD vision 2030 study: A path to revolutionary computational aerosciences: NASA/CR-2014-218178[R]. Washington, D.C.: NASA, 2014.
[4] HAGER G, WELLEIN G. Introduction to high performance computing for scientists and engineers[J]. International Journal of Modern Physics A, 2011, 28(2): 163-172.
[5] 阎超, 于剑, 徐晶磊, 等. CFD模拟方法的发展成就与展望[J]. 力学进展, 2011, 41(5): 562-589. YAN C, YU J, XU J L, et al. On the achievements and prospects for the methods of computational fluid dynamics[J]. Advances in Mechanics, 2011, 41(5): 562-589 (in Chinese).
[6] OBERKAMPF W L, TRUCANO T G. Verification and validation in computational fluid dynamics[J]. Progress in Aerospace Sciences, 2002, 38(3): 209-272.
[7] GOODENOUGH J B, MCGOWAN C L. Software quality assurance: Testing and validation[J]. Proceedings of the IEEE, 1980, 68(9): 1093-1098.
[8] OBARA C J, LAMAR J E. Overview of the cranked-arrow wing aerodynamics project international[J]. Journal of Aircraft, 2009, 46(2): 355-368.
[9] MARINI M, PAOLI R, GRASSO F, et al. Verification and validation in computational fluid dynamics: The FLOWNET database experience[J]. Bulletin of the JSME, 2002, 45(1): 15-22.
[10] CASEY M, WINTERGERSTE T, INNOTEC S. ERCOFTAC special interest group on quality and trust in industrial CFD: Best practice guidelines[R]. Brussels: European Reasearch Community on Flow, Turbulence and Combusion, 2000.
[11] VIDANOVIC N, RASUO B, DAMLJANOVIC D, et al. Validation of the CFD code used for determination of aerodynamic characteristics of nonstandard AGARD-B calibration model[J]. Thermal Science, 2014, 18(4): 104-104.
[12] MARVIN J G. A CFD validation roadmap for hypersonic flows: NASA-TM-103935[R]. Washington, D.C.: NASA, 1992.
[13] OBERKAMPF W L, BLOTTNER F G. Issues in computational fluid dynamics code verification and validation[J]. AIAA Journal, 1997, 36(5): 687-695.
[14] AIAA. Guide for the verification and validation of computational fluid dynamics simulations: AIAA Guide G-077-1998[S]. Reston: AIAA, 1998.
[15] NPARC. NPARC alliance CFD verification & validation[DB/OL]. [2016-02-05]. http://www.grc.nasa.gov/www/wind/valid.
[16] BAI W, LI L. CFD V&V and open benchmark database[J]. Chinese Journal of Aeronautics, 2006, 19(2): 160-167.
[17] 邓小刚, 宗文刚, 张来平, 等. 计算流体力学中的验证和确认[J]. 力学进展, 2007, 37(2): 279-288. DENG X G, ZONG W G, ZHANG L P, et al. Verification and validation in computational fluid dynamics[J]. Advances in Mechanics, 2007, 37(2): 279-288 (in Chinese).
[18] 梁益友, 杨永, 朱朝, 等. CFD可信度分析平台WiseCFD[C]//第十二届全国计算流体力学会议论文集. 西安: 中国航空工业第六三一研究所, 2004: 775-780. LIANG Y Y, YANG Y, ZHU C, et al. Analyze platform of CFD reliability—WiseCFD[C]//12th National Computational Fluid Dynamics Conference. Xi’an: Chinese Aeronautics Computation Technique Research Institute, AVIC, 2004: 775-780 (in Chinese).
[19] 孙久振. 基于OSGi的CFD可信度分析平台的设计与实现[D]. 西安:西安电子科技大学, 2012: 20-28. SUN J Z. The design and application of CFD credibility analysis platform based on OSGi[D]. Xi’an: Xidian University, 2012: 20-28 (in Chinese).
[20] MELL P M, GRANCE T. The NIST definition of cloud computing[S]. Gaithersbutg, MD: National Insitute of Standard and Technology, 2011.
[21] LEE J, WARE B. Open source development with LAMP: Using Linux, Apache, MySQL and PHP[M]. Boston: Addison-Wesley Professional, 2002: 1-9.
[22] MARK L. Python 学习手册[M]. 3版. 侯靖, 译. 北京: 机械工业出版社, 2009: 20. MARK L. Learning Python[M]. 3rd ed. HOU J, translated. Beijing: China Machine Press, 2009: 20 (in Chinese).
[23] SETTLES G S, FITZPARTRICK T J, BOGDONOFF S M. Detailed study of attached and separated compression corner flowfields in high Reynolds number supersonic flow[J]. AIAA Journal, 1979, 17(6): 579-585.
(责任编辑:鲍亚平)
URL:www.cnki.net/kcms/detail/11.1929.V.20160612.1416.010.html
*Corresponding author. E-mail: yanchao@buaa.edu.cn
Design and realization of automated testing cloud platform forCFD verification and validation
CHEN Shusheng, LIU Liyuan, YAN Chao*, LIN Boxi
SchoolofAeronauticScienceandEngineering,BeihangUniversity,Beijing100083,China
Based on the idea of cloud computing,this paper proposes an automated testing cloud platform solution for large-scale computational fluid dynamics (CFD) software verification and validation. The main objective is to reduce labor costs, improve software quality and development efficiency, and be adapted to high performance computing for future development as well. This platform uses modularized browser/server (B/S) network architecture and LAMP (Linux+Apache+MySQL+PHP/Python) development tools. A continuous integration professional database is established, and a cloud environment is built, covering reliable cluster computing, complicated operation scheduling and massively parallel computing. This solution is able to automatically load test cases, submit cluster computing, monitor real-time process, post-process automatically and export analysis results containing comparisons with detailed experimental data, error analysis and summary reports. This platform has been applied to a large-scale parallel computing CFD software, and the feasibility and practicability of this solution have been verified.
verification and validation; cloud computing; LAMP; professional database; cloud environment; automation
2016-03-10; Revised:2016-05-12; Accepted:2016-05-23; Published online:2016-06-12 14:16
http://hkxb.buaa.edu.cn hkxb@buaa.edu.cn
10.7527/S1000-6893.2016.0173
2016-03-10; 退修日期:2016-05-12; 录用日期:2016-05-23; 网络出版时间:2016-06-12 14:16
www.cnki.net/kcms/detail/11.1929.V.20160612.1416.010.html
*通讯作者.E-mail: yanchao@buaa.edu.cn
陈树生, 刘丽媛, 阎超, 等. CFD软件自动化验证确认云平台设计与实现[J]. 航空学报, 2017, 38(3): 120209. CHEN S S, LIU L Y, YAN C, et al. Design and realization of automated testing cloud platform for CFD verification and validation[J]. Acta Aeronautica et Astronautica Sinica, 2017, 38(3): 120209.
V211.3
A
1000-6893(2017)03-120209-09