欢迎访问有用文档网!

当前位置: 有用文档网 > 作文大全 >

PANDA的功能可扩展性设计与应用

| 浏览次数:

摘要:针对有限元分析软件功能的可扩展性需求,介绍面向对象有限元并行计算框架PANDA的单元设计和单元类的扩充方法.在PANDA中,单元分析被抽象成单元算法和材料本构模式,并提供单元类型、材料模型的接口服务,用户可以根据不同的应用需求构成并实例化不同的C++抽象基类来解决实际问题.单元类的扩展步骤为:在ElementListT类的单元对象列表中添加单元对象;为该单元类设置相应的属性和操作,以实现程序功能的扩充;修改编译文件以保证程序能够顺利地通过编译. 以轴对称导热分析为例验证单元类的扩充方法在PANDA中的实现.PANDA的单元分析设计有力地保证其功能的可扩展性.

关键词:有限元并行计算框架;PANDA;软件开发;功能可扩展性;单元分析

中图分类号:TP311; 0242 文献标志码:B

Design and application of function extensibility of PANDA

SUN Le1, HE Yingbo2, MO Jun1

(1. Institute of Systems Engineering, China Academy of Engineering Physics, Mianyang 621900, Sichuan, China;

2. China Academy of Engineering Physics, Mianyang 621900, Sichuan, China)

Abstract: As to the requirements of function extensibility for finite element analysis software, the element design and the extension method of element classes are introduced for finite element parallel computation framework PANDA. In PANDA, element procedures are abstracted into element algorithm and material constitutive mode, and interface services on element types and material models are provided. Based on the services, users can construct and instantiate different C++ abstract base classes to solve different problems. The extension steps of element classes are: the element objects are added into the element object list of ElementListT class; the properties and operation is set for the element class to implement the function extensibility; the compiled files are modified to ensure that the program can be compiled. The extension methods of element class in PANDA is verified by the function implementation of axisymmetric heat conduction analysis. The element procedure design ensures the function extensibility of PANDA.

Key words: finite element parallel computation framework; PANDA; software development; function extensibility; element procedure

基金项目: 国防基础科研重大项目(C1520110002)

作者简介: 孙乐(1980—),女,辽宁新滨人,副研究员,博士,研究方向为结构力学分析、高性能计算及软件开发,

(Email)sunle_mm@163.com0引言

在大型结构工程设计中,数值模拟是研究复杂系统综合性能的主要方法之一,而有限元分析软件在其中发挥着重要作用.近年来,随着航空、航天以及武器工程等领域的不断发展,出现很多大型和超大型结构,同时结构力学行为分析涉及的物理领域也不断扩展,使有限元分析软件逐渐面向大规模、多物理场的应用[1-3].

将客观世界准确、简单而又自然地表达出来是计算机软件设计所追求的目标.良好的软件设计需要软件开发方法的配合,传统的结构化程序设计方法具有模块化特点,执行流程是各程序段根据给定的算法依次对数据进行处理,任何数据的添加或形式改变都会导致一系列相关过程的变化.随着分析问题类型的急剧扩大,有限元分析软件模块越来越多,模块之间的数据传递也越来越频繁,结构化程序设计导致程序的扩展能力有限,不易维护、调试复杂且代码的重用性低[4-6].从20世纪80年代后期兴起的面向对象的程序设计方法克服上述结构化设计的不足,其封装、继承和多态性特点为功能模块的集成化、扩充的灵活性提供有利条件,在一定程度上提高软件的开发效率,逐渐成为大型软件的主流设计方法[7-8].基于框架的现代软件开发理念和模式,贯彻软件模块化的思想,更注重沉淀和复用应用软件的共性技术,不仅可以实现代码级的重用,还可以重用设计与分析,在更大的粒度上实现系统级的复用,极大地降低软件研制难度、缩短软件研制周期,同时领域内的软件结构一致性好,确保软件的集成性以及可升级、可扩展性.[9]

为面向复杂工程结构的大规模、多物理场计算分析应用,中国工程物理研究院于2007年采用面向对象、层次化、模块化的设计模式,形成面向对象有限元并行计算框架PANDA[10]的基本版本,见图1.该框架通过建立网格、场等底层数据结构,集成高性能数值求解器和工具包,如线性方程组求解器、特征值求解器、应用参数解析、数据输入输出、积分器、区域分割软件和并行通信等,以服务的方式提供一个快速建立高性能并行计算程序的开发环境;通过将有限元分析的数据和过程逐级封装,形成一个构架良好的有限元分析系统.在该系统中,有限元管理器以访问者的身份协调不同功能组件按照约定的接口协同工作,传递数据,完成有限元分析;系统设计采用继承和多态机制,易于集成或添加工程结构有限元计算所需的各种服务组件,如求解器、单元类型库和材料模型库及其接口服务,为软件开发提供一个扩展性良好的基础平台,支撑工程结构有限元高性能并行计算应用开发能力的不断扩充和完善.目前,已具备初步的结构静力学、振动力学、冲击力学、传热学以及热力耦合等并行计算程序开发能力.

图1PANDA框架的服务层次结构

Fig.1Service hierarchy of PANDA framework

本文通过分析PANDA框架的单元分析设计,探讨其功能的可扩展性;并在现有单元库及单元接口服务的基础上给出添加二维轴对称导热单元类的实例,实现不修改原模块并在相同操作界面功能的有规则扩充,展示PANDA框架设计的优越性.

1单元分析设计

单元分析是整个有限元分析过程的基础,尽管不同物理分析类型的单元分析算法各不相同,但其分析过程均可归结为依据单元的几何属性和材料属性等完成单元特性矩阵的计算以及系统特性矩阵的组装.[11]据此,PANDA框架将单元分析抽象成单元算法和材料本构模式两方面,利用面向对象的设计模式分别提供单元类型和材料模型的接口服务.单元(库)、材料(库)及其相关的接口服务处于PANDA框架顶层的应用个性层,与实际应用紧密相联;根据不同的应用需求,可以构成不同的C++抽象基类,通过对这些基类的实例化,可在PANDA框架上求解实际问题.

PANDA框架的单元接口服务由单元基类ElementBaseT和单元对象构造器ElementListT共同完成(见图2).ElementBaseT主要负责向应用程序提供单元算法服务,它抽象出各单元类的共性(属性和操作),为单元算法提供统一界面,根据具体的单元算法可逐级派生得各种具体的单元类.ElementListT为单元类型的添加和识别设置统一接口,其主要功能为定义单元对象的列表;通过单元对象列表中的单元名称创建具体的单元对象;并通过一个单元类的指针指向已创建的单元对象,执行具体的单元算法.它以不改变程序主体结构的方式,实现向应用程序添加和识别新单元类的服务.PANDA框架的材料接口设计与此类似,不再赘述.图2PANDA单元接口服务组件

Fig.2Interface service components of PANDA elements

面向多物理场应用的大型有限元软件涉及多种物理分析类型,因此在设计上需要考虑多物理场分析类型的可扩展性.该设计模式在面向多物理场应用时,可通过继承和多态机制在相同操作界面下方便地添加新的单元和材料类,并以不修改程序原模块的方式实现新的单元算法和材料本构模式,从而不断扩充已有程序的功能,有力地保障物理场分析功能的多样性、可扩展性以及代码的可重用性.

2单元类的扩充方法与实例

从上文的分析可知,PANDA框架的单元分析设计有力地保证系统分析功能的可扩展性.在程序中添加新的单元类(添加材料类与其类似)需要完成以下3个步骤:在ElementListT类的单元对象列表中添加该单元对象,以便程序能识别该新增的单元类;为该单元类设计相应的属性和操作,实现程序功能的扩充;修改编译制导文件,保证程序能顺利通过编译.在实际工程的传热分析中,常需要采用轴对称算法简化整个分析过程,本文以轴对称热传导单元的添加为例,对上述3个步骤作详细说明.

为最大限度地实现对代码的重用,分析PANDA框架的单元组织结构和已有的导热单元代码,分别以现有单元库中的线性傅里叶导热单元类DiffusionElementT,非线性傅里叶导热单元类NLDiffusionElementT和非傅里叶导热单元类HyperbolicDiffusionElementT作为父类,继承它们的属性和方法,再根据目标通过重定义的方式修改或添加某些方法,派生出各自对应的轴对称导热单元类,实现轴对称导热问题的有限元分析.详细的扩充过程如下:

(1)在单元对象构造器中添加轴对称导热单元名称并定义新的单元类.

①修改ElementListT.cpp文件,添加预定义宏命令,以便识别轴对称导热单元类DiffusionAxiElementT,NLDiffusionAxiElementT和HyperbolicDiffusionAxiElementT的头文件.

#ifdef CONTINUUM_ELEMENT

#include “DiffusionAxiElementT.h”

#include “NLDiffusionAxiElementT.h”

#include “HyperbolicDiffusionAxiElementT.h”

②修改函数ElementListT::DefineInlineSub,在单元列表中添加轴对称导热单元的名称.

#ifdef CONTINUUM_ELEMENT

sub_lists.AddSub(“diffusion_axi”)

sub_lists.AddSub(“nonlinear_diffusion_axi”)

sub_lists.AddSub(“hyperbolic_diffusion_axi”)

③修改函数ElementListT::NewElement,按照单元列表中添加轴对称导热单元的名称创建新单元类的实例.

#ifdef CONTINUUM_ELEMENT

if (name == “diffusion_axi”)

return new DiffusionAxiElementT(fSupport);

else if (name == “nonlinear_diffusion_axi”)

return new NLDiffusionAxiElementT(fSupport);

else if (name ==“hyperbolic_diffusion_axi”)

return new HyperbolicDiffusionAxiElementT(fSupport)

(2)为轴对称导热单元类设计相应的属性和操作,实现程序功能的扩充.其中重要的成员函数如下:InternalEnergy计算内能;FormStiffness计算热传导矩阵;FormKd计算内力对载荷的贡献;LHSDriver计算热容及热传导矩阵;RHSDriver计算内热源及热容项对载荷项的贡献;TractionBC_RHS计算热交换对载荷的贡献;TractionBC_LHS计算热交换对热传导矩阵的贡献;Axisymmetric判断是否为轴对称分析;B_axi计算轴对称情况下形函数对坐标的导数.

(3)修改编译制导文件makefile.PANDA采用编译制导文件makefile进行分级管理.将添加的单元类DiffusionAxiElementT,NLDiffusionAxiElementT和HyperbolicDiffusionAxiElementT的头文件与实现文件放入已创建好的单元目录panda\src\elements\continuum\diffusion下.修改该目录下的编译制导文件makefile,在其中加入新单元类的目标文件、源文件和头文件等信息.

OBJ = \

DiffusionAxiElementT.o \

NLDiffusionAxiElementT.o \

HyperbolicDiffusionAxiElementT.o \

SRC = \

DiffusionAxiElementT.cpp \

NLDiffusionAxiElementT.cpp \

HyperbolicDiffusionAxiElementT.cpp \

HDR = \

DiffusionAxiElementT.h \

NLDiffusionAxiElementT.h \

HyperbolicDiffusionAxiElementT.h \

至此,完成PANDA框架单元库中轴对称导热单元的添加.在执行相应的应用程序时,有限元管理器将协调新的单元类及其他计算功能组件,使各功能组件通过约定的接口协同工作、传递数据,并最终完成轴对称热传导的有限元分析.

为检验程序功能的正确性,采用如下算例进行测试:某双层空心圆筒的高度为8 m,内筒为厚度1 m的燃料层,外筒为厚度3 m的铝.燃料层有1 500 W/m3的内热源,热导率为35 W/(m•℃);铝层的热导率为100 W/(m•℃);铝筒外表面受到温度为150℃的高压水冷却,表面传热系数为3 500 W/(m2•℃).算例测试表明PANDA轴对称导热分析计算结果与商用有限元程序计算结果完全一致(见图3),验证程序的正确性.(a)ANSYS计算结果

(b)PANDA计算结果图3PANDA与ANSYS的轴对称导热分析功能对比

Fig.3Axisymmetric heat conduction analysis comparison of PANDA and ANSYS

3结束语

与传统的面向过程结构化程序设计方法相比,基于框架的先进开发模式和面向对象的主流设计思想可更好地适应程序对可重用性、可扩展性及复杂性的需要.PANDA框架采用面向对象、层次化、模块化的设计模式对有限元法单元分析过程的共性问题进行抽象,将其概括为单元算法和本构模型2个方面分别封装数据及操作;通过构建基类,为单元及本构计算分别建立统一界面;通过构建单元、材料对象构造器,为单元类型、材料模型的添加、识别设置统一接口.

实例表明,该设计模式在面向多物理场应用时可在相同操作界面下方便地添加新的单元和材料类,并采用继承和多态机制以不修改程序原模块的方式实现新的单元算法和材料本构模式,从而不断扩充已有程序的功能,为多物理场的有限元分析程序开发提供一个扩展性良好的基础平台,大大简化软件开发过程,提高软件的开发效率.

参考文献:

[1]Sandia National Laboratories. Computational activities in engineering sciences at Sandia National Laboratories, SAND20020392p[R]. 2002: 56.

[2]MCGLAUN M. Sandia’s engineering code development under ASCI, SAND20031238p[R]. 2003: 9.

[3]Sandia National Laboratories. Functional requirements for SIERRA version 1.0 beta, SAND19992587[R]. 1999: 3.

[4]李海江, 杨刚, 易南概. 面向对象的串并行有限元分析系统[J]. 计算力学学报, 2006, 23(5): 588593.

LI Haijiang, YANG Gang, YI Nangai. Objectoriented serial/parallel finite element analysis system[J]. Chin J Comput Mech, 2006, 23(5): 588593.

[5]曹骥, 袁勇. 面向对象有限元方法研究进展[J]. 力学季刊, 2002, 23(2): 241248.

CAO Ji, YUAN Yong. Development of objectoriented finite element method[J]. Chin Q Mech, 2002, 23(2): 241248.

[6]马永其, 冯伟. 面向对象有限元程序研究综述[J]. 计算机应用研究, 2001, 18(10): 79.

MA Yongqi, FENG Wei. Advance in objectoriented finite element programming[J]. Application Res Computers, 2001, 18(10): 79.

[7]魏泳涛, 于建华, 陈君楷. 面向对象有限元程序设计——程序构架[J]. 四川大学学报: 工程科学版, 2001, 33(4): 2125.

WEI Yongtao, YU Jianhua, CHEN Junkai. Objectoriented approach to the finite element programming: the application architecture[J]. J Sichuan Univ: Eng Sci, 2001, 33(4): 2125.

[8]张妮, 曹建文. 面向对象数值软件Trilinos及其线性代数包Epetra剖析[J]. 超级计算通讯, 2006, 4(1): 3645.

ZHANG Ni, CAO Jianwen. Research and analysis on objectoriented numerical software Trilinos and its linear algebra package Epetra[J]. Supercomputing Newsletter, 2006, 4(1): 3645.

[9]Sandia National Laboratories. SIERRA framework version 3: core services theory and design, SAND20023616[R]. 2002: 1114.

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

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

[11]魏泳涛, 于建华, 陈君楷. 面向对象有限元程序设计——单元过程设计[J]. 四川大学学报: 工程科学版, 2001, 33(3): 912.

WEI Yongtao, YU Jianhua, CHEN Junkai. Objectoriented approach to the finite element programming: design of element procedure[J]. J Sichuan Univ: Eng Sci, 2001, 33(3): 912.

(编辑于杰)

推荐访问:扩展性 功能 设计 PANDA

热门排行Top Ranking

支部组织生活方面存在问题清单和整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的支部组织生活方面存在问题清单和整改措施党组织生活个人问题整改清单文章,供大家阅读参考

2021年党员个人问题清单及整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的2021年党员个人问题清单及整改措施党组织生活个人问题整改清单文章,供大家阅读参考。

浅析军队战斗力损耗的新变化

关键词:军队;战斗力损耗;新变化军队战斗力的结构,是战斗力各要素间的结合方式和相互关系。军队战斗力的

小学六年级毕业演讲稿100字左右9篇

小学六年级毕业演讲稿100字左右9篇小学六年级毕业演讲稿100字左右篇1敬爱的老师,亲爱的同学们:大

问题及整改措施 (2) 药房个人存在问题及整改措施

下面是小编为大家精心整理的问题及整改措施(2)药房个人存在问题及整改措施文章,供大家阅读参考。精品文章《问题及

个人问题清单及整改措施(最新) 能力作风建设个人问题清单及整改措施

下面是小编为大家精心整理的个人问题清单及整改措施(最新)能力作风建设个人问题清单及整改措施文章,供大家阅读参考。在认真

疫情防控赞美警察诗朗诵 关于警察的诗朗诵

下面是小编为大家精心整理的疫情防控赞美警察诗朗诵关于警察的诗朗诵文章,供大家阅读参考。疫情防控赞美警

纳税人满意度调查存在不足及对策探讨 提升纳税人满意度的方式方法有哪些

下面是小编为大家精心整理的纳税人满意度调查存在不足及对策探讨提升纳税人满意度的方式方法有哪些文章,供大家阅读参考。纳

小学思想品德教育面临的问题及对策

摘要:小学思想品德课程是小学教育教学过程中不可或缺的一门综合性课程,它对学生良好品德的形成具有重要影

2020党支部班子查摆问题清单及整改措施 农村党支部问题清单

下面是小编为大家精心整理的2020党支部班子查摆问题清单及整改措施农村党支部问题清单文章,供大家阅读参

消防安全检查简报 派出所校园消防安全检查简报

下面是小编为大家精心整理的消防安全检查简报派出所校园消防安全检查简报文章,供大家阅读参考。简报第2期申扎县中学

2021教师党员年度个人总结8篇

2021教师党员年度个人总结8篇2021教师党员年度个人总结篇1敬爱的党组织:我是一个普通年轻的人民