面向对象有限元并行计算框架PANDA的应用模板

时间:2022-09-23 11:09:04

面向对象有限元并行计算框架PANDA的应用模板

摘 要: 为解决面向对象有限元软件框架PANDA的应用问题,降低使用PANDA框架进行并行应用程序开发的难度,提高软件开发的重用性, 从PANDA的框架设计、PANDA的应用模板和应用测试等3方面介绍针对不同物理问题的程序建立机制,即PANDA框架的使用方法ぉお应用模板方法. PANDA框架的开发目前处于初始阶段,为提高其易用性仍需进行大量的研究工作.

关键词: 并行计算框架; PANDA; 有限元; 软件开发; 软件框架; 应用模板

中图分类号: TP311.11; TP311.15 文献标志码: A

Application templates of object-oriented finite element parallel computation framework PANDA

ZHANG Yalin, WU Jinlong, LI Yufeng, ZHAO Xiaoping

(Computer Application Institute, China Academy of Engineering Physics, Mianyang 621900, Sichuan, China)

Abstract: To solve the application problem of object-oriented finite element parallel computation framework PANDA, reduce the difficulty of parallel application program development by using PANDA, and improve the reusability degree of software development, PANDA framework design, PANDA application templates and application testing are introduced to explain the mechanisms for establishing different physical programs,that is, the application method of PANDA or its application template method. PANDA framework development is at its preliminary stage now, and further research is needed to improve its usability.

Key words: parallel computation framework; PANDA; finite element; software development; software framework; application template

0 引 言

在有限元程序发展的初期,计算机硬件水平和程序设计语言都处于起步阶段,当时的科技人员仅把计算机当作一种数学计算工具来获取所求的结果.当时的程序设计语言语法简单、程序规模较小,更侧重于高效使用有限的计算机硬件资源.应运而生的结构化程序设计语言FORTRAN基本满足这些要求,HINTON,OWEN,SMITH和GRIFFITHS等编写的书籍已被奉为经典,至今仍有许多人在阅读、学习.他们提出的程序结构构成许多当今有限元程序代码的基础.在这种思想的影响下,逐步形成如图1所示的数值模拟软件开发模式.在该模式下,开发一个高可用的并行有限元程序周期较长、工作量大且存在流程逆转等不利因素,造成现代有限元程序开发效率低下.图 1 结构化程序开发流程

Fig.1 Development process of structurized program

随后出现以C++为编程语言的面向对象有限元编程模式[1].面向对象思想可提高代码的重用性,在一定程度上提高代码的开发效率与可靠性.但该模式的应用面较为单一,不能较大程度地提升代码的共性,难以做到一种构件化的开发.

目前,有限元软件已从二维求解发展到三维求解,从单纯的结构力学计算发展到多物理场问题求解,从线性工程问题求解发展到非线性工程问题求解,前后处理能力大大提升,工程平台越来越多样化.从发展历程可知,有限元计算在未来会更复杂(如上千万亿次计算机的使用等).因此,为适应现代大规模并行计算环境和快速发展的数值模拟研究需求,需建立一种高效、高可靠性的数值模拟软件开发方式,即基于软件框架的开发方式[2].

现代工程数值模拟软件涵盖多个学科的内容,包括:工程数值模拟软件的设计、开发、调试和集成等;不同业务领域的物理问题机理、数学方法及求解模型研究等;负载平衡、自适应算法等高级应用领域;求解器管理、区域分割、时间管理和网格管理等核心计算领域;内存管理、数据通信和数据I/O等基础服务;MPI,OpenMP和PVM等并行计算环境;Linux,Windows和Unix等操作系统;集群和存储等高性能计算硬件环境.

现代工程数值模拟软件包含多个专业知识,基于软件框架的开发模式,就是希望以简单、高效的开发方式替代以前的开发过程.软件框架的目的是为形成数值模拟程序提供渠道,使物理人员避开非专业领域的计算机知识、并行计算知识等,以串行程序的开发思路,形成可在并行计算机上作高效并行的数值模拟程序.

1 PANDA框架

PANDA框架[3]为大规模非结构网格上的多物理场、多尺度工程力学问题的并行计算提供基础性支撑,使工程力学应用程序开发人员在解决具体问题的过程中将大部分精力放在与力学相关的算法实现上,而不必关心有限元网格数据在计算机系统中的并行计算细节,在串行程序设计模式下组织计算流程和网格数据,实现并行工程有限元程序的开发.这种基于程序软件框架的开发模式可大幅提升软件的开发效率.

PANDA框架是个针对工程数值模拟计算的软件框架,具有以下特点:(1)PANDA框架的使用需开发人员进行二次开发,实现具体功能的应用;(2)PANDA框架侧重于应用问题模拟程序的设计、开发过程;(3)PANDA框架方法包含软件架构或结构,具备将不同的单物理场程序耦合以实现多物理场的能力;(4)PANDA框架已实现多数有限元计算的区域分割技术、数据通信技术以及求解器使用技术等,只为用户提供一些使用接口.

工程结构数值模拟软件的开发需物理、数学和计算机等领域的专业知识,在开发过程中需将这些知识相互转换,属于典型的多学科交叉研究内容.从分散技术、逐个研究、逐步积累的角度出发,并部分借鉴JASMIN框架[4]和SIERRA框架[5-6]的思想,PANDA框架采用层次化和模块化软件设计,降低软件系统的复杂度,能比较容易地对框架进行展示和研究工作.

2 PANDA框架的应用模板

PANDA框架的设计已完成基于有限元法开发工程计算应用程序的大部分工作,为形成一套具有一定并行计算支撑能力的软件系统建立了一个程序主干.实际的应用可能因一些特殊的需求而有所不同,同时,PANDA框架还是复杂的软件系统,应当建立规则规范其使用方式以提高应用效率.这种规则被称为PANDA框架的应用模板或应用开发模板.

应用模板的设计思路来源于软件的设计模式Pattern[7-8],即解决某类问题的方法论.将解决某类问题的方法总结归纳到理论高度,即为模式. ALEXANDER给出的经典定义为:每个模式都描述一个在我们环境中不断出现的问题,然后描述该问题解决方案的核心.通过该方式可无数次使用已有的解决方案,无须再重复相同的工作.模式有不同的领域,如建筑领域有建筑模式,软件设计领域有设计模式.图2为基于PANDA框架的应用程序计算流程.参照该流程,结合实际物理应用需求,可知在工程应用中针对静力学、冲击动力学和振动力学等3类问题的计算多数存在变动的需求,主要集中在单元类型、求解器的使用以及材料的使用等3方面.图 2 基于PANDA框架的应用程序计算流程

Fig.2 Computation process of the applications based on PANDA framework

PANDA框架是个专业的工程软件开发框架,它的应用人员需对框架的接口和设计有一定程度的了解,同时为给框架的开发人员提供规范的代码设计和开发模式,在项目的研究工作中,在原有设计的基础上将PANDA框架层次设计和模块进行细化和分类,见图3.

图 3 PNADA框架层次结构

Fig.3 Hierarchical structure of PANDA framework

基于流程设计,结合软件设计模式,将该层次结构应用到框架使用规范上,形成框架的应用模板.该模板指导实现不同应用的创建方法,简化PANDA框架使用人员基于框架开发应用程序的流程,达到快速开发的目的.为满足上述功能需求,设计以下4种应用模板:

(1)标准流程应用模板.标准流程应用模板见图2,不添加任何新内容,使用PANDA框架已有的支持服务就能完成程序设计的模板.目前,该模板可完成部分静力学的计算任务.

(2)求解器的接口模板.添加求解器的模板是对框架求解器应用的一种扩充机制,目的是在不修改框架内容的基础上添加一种新的求解器.求解器的接口模板见图4.

图 4 求解器的接口模板

Fig.4 Solver interface template

在该求解器的接入过程中,大多数工作集中在构造满足PANDA框架的全局矩阵数据上,用户需熟悉待接入求解器的数据构建方式和求解器的一些函数使用,在形成单独的构建源码后与应用模板一起编译,最终形成应用程序.

(3)单元的接口模板.单元类型的添加是项重要的工作,添加新单元模板的目的是为解决PANDA框架在有限元计算中对一些新单元的添加需求.在框架的应用初期或一些研究性质的项目中,PANDA框架或许不能提供一个适用的单元类型,需使用一种新单元的计算,此时,该模板可完成对计算过程的单元添加过程.该过程以自动完成的形式向应用程序流程添加识别新单元的计算.单元的接口模板见图5.

图 5 新单元的接口模板

Fig.5 Element interface template

可采用继承框架的一些单元类构建单元,也可构造一个新的单元,这需要有较强的有限元计算背景知识.模板需要的仅仅是关于单元的参数构建方法、刚度矩阵等信息的源码,将其与应用模板程序一起编译,形成最终的应用程序.

(4)材料的接口模板.添加新材料模板是为了向PANDA框架添加自定义的物理材料.由于材料类型定义在单元级别,这部分工作和添加新单元通常混在一起,使用该模板可完成材料的设计过程.目前,已经可以完成基于现有材料类型进行扩展的材料类型添加工作.

在上述4种模板实现的功能中,其添加功能可以混合使用,只需将相应代码部分拷贝到对应位置即可.

3 应用测试

为验证以模板为定义的框架的使用方法,本文设计一个简单算例对求解器的接入进行试验:该物理问题为一个线弹性问题,采用更新拉格朗日大变形计算一个立方体结构,其底面由4个顶点固支,顶图 6 测试算例示意

Fig.6 Test example面的中心点加载向下的常数力10 000 N,材料密度为1,泊松比为0.3,杨氏模量为200.0E-09,形成的有限元网格有20 705个节点,测试算例示意见图6.

基于新求解器的程序模板,添加由中国科学院科学与工程计算国家重点实验室开发的PHG(Parallel Hierarchical Grid)求解器后,形成可并行求解静力学问题的应用程序.使用该程序计算上述物理问题,用48个处理器进行并行计算,以Tecplot格式输出节点在x方向上的位移,位移云图见图7.为验证求解器的正确性,同时使用PANDA框架已有的HYPRE求解器[9]开展上述问题的计算测试,同样用48个处理器进行计算,设定一致的输出需求,计算结果云图见图8.由图7和8可知,该模板方法添加求解器的计算结果与直接在框架添加HYPRE求解器的计算结果一致,验证该方法的有效性和正确性.图 7 节点在x方向上的位移云图\=Fig.7 Node displacement of x direction

图 8 采用框架中HYPRE求解器的计算结果云图

Fig.8 Computation results of the HYPRE solver in framework

4 结 论

通过对工程数值模拟软件框架开发方法的深入研究,针对PANDA框架建立一套框架使用方法――应用模板方法,为高效、快捷地开发有限元并行计算程序建立便利的途径,并对应用模板进行初步应用测试,试验表明:该方法基于软件框架的开发思路,可较好地解决软件框架的应用问题,降低使用PANDA框架的开发难度,提高软件开发的重用度.

成熟的工程数值模拟软件框架能为工程数值模拟问题提供一套科学、规范、高效、高可靠性的支撑开发技术.为达到该目的,需对框架的开发、验证、扩充以及支撑模块的优化设计等开展研究,这是个长期的研发过程.目前,PANDA框架处于初步成型阶段,在开发过程中也遇到一些技术难题,如网格自适应方法、动态负载平衡等.进一步的研究需形成冲击动力问题、振动力学问题的计算流程等工程物理问题,最终形成一个高可用的工程数值模拟软件开发框架.

参考文献:

[1] 张向, 许晶月, 沈启, 等. 面向对象的有限元程序设计[J]. 计算力学学报, 1999, 16(2): 218-226.

ZHANG Xiang, XU Jingyue, SHEN Qi, et al. Object-oriented finite element programming[J]. Chin J Comput Mech, 1999, 16(2): 218-226.

[2] 余泳. 开发并行自适应多物理应用程序的框架方法[J]. 国外核武器研究, 2007(2): 26-42.

YU Yong. Framework approach of developing parallel adaptive multiphysics application[J]. Foreign Nuclear Res, 2007(2): 26-42.

[3] 史光梅, 何颖波, 吴瑞安, 等. 面向对象有限元并行计算框架PANDA[J]. 计算机辅助工程, 2010, 19(4): 8-14.

SHI Guangmei, HE Yinbo, WU Ruian, et al. Object-oriented finite element parallel computation framework PANDA[J]. Comput Aided Eng, 2010, 19(4): 8-14.

[4] 莫则尧, 张爱清. 并行自适应结构网格应用支撑软件框架用户指南[K]. 北京: 北京应用物理与计算数学研究所, 2009: 10-15.

[5] WILLIAMS A B. SIERRA framework version 4: solver services[EB/OL]. (2005-02) [2010-07-09]. prod.sandia.gov/techlib/access-control.cgi/2004/046428.pdf.

[6] EDWARDS H C. SIERRA framework version 3: core services theory and design[EB/OL]. (2002-11) [2010-07-09]. prod.sandia.gov/techlib/access-control.cgi/2002/023616.pdf.

[7] 李秀芳, 张福增, 贾世祥. 软件复用与Framework框架技术[J]. 科学技术与工程, 2006, 6(1): 80-83.

LI Xiufang, ZHANG Fuzeng, JIA Shixiang. Software reuse and framework technology framework[J]. Sci Technol & Eng, 2006, 6(1): 80-83.

[8] 郭妍旭, 张波. 框架技术在软件开发中的研究与实践[J]. 辽宁工学院学报, 2006, 26(6): 379-382.

GUO Yanxu, ZHANG Bo. Framework technology in the software development research and practice[J]. J Liaoning Inst Technol, 2006, 26(6): 379-382.

[9] Lawrence Livermore National Laboratory. HYPRE: high performance preconditoners[EB/OL]. (2006-12-15) [2010-07-09]. www.lrz.de/services/software/mathematik/hypre/docs/user_200.pdf.

上一篇:LMS进入“基于模型的系统工程”发展阶段:专访L... 下一篇:HgCdTe焦平面探测器热应力有限元分析