面向对象有限元并行计算框架PANDA

合集下载

面向对象的并行算法设计

面向对象的并行算法设计

面向对象的并行算法设计
陈坚
【期刊名称】《工程与试验》
【年(卷),期】2007(047)002
【摘要】并行算法设计是实现并行计算的第一步.并行算法设计过程中需要解决任务划分(Partitioning)、通信分析(Communication)、任务组合(Agglomeration)和处理器映射(Mapping)四方面的工作,相应产生的设计方法学就是PCAM.但是在应用PCAM方法设计并行算法时会遇到如何调节数据与算法之间的矛盾的问题.针对这一问题本文提出面向对象的并行算法设计的方法,即OOPCAM方法.在PCAM 方法的基础上结合面向对象思想解决原有方法存在的问题.
【总页数】3页(P49-51)
【作者】陈坚
【作者单位】长春税务学院网络实验中心,吉林,长春,130117
【正文语种】中文
【中图分类】TB47
【相关文献】
1.阶段并行模型上的并行算法设计 [J], 尚明生;刘宴兵;孙世新
2.面向对象有限元并行计算框架PANDA的并行机制 [J], 李于锋;张亚林
3.FT64并行系统上的EP和GEMM并行算法设计与实现 [J], 晏小波;唐滔;杨学军
4.基于国产YH系列并行机的并行算法设计分析与实现 [J], 丘威;黄建妮
5.面向对象的并行算法设计 [J], 李印
因版权原因,仅展示原文概要,查看原文内容请购买。

面向对象有限元并行计算框架PANDA的并行机制

面向对象有限元并行计算框架PANDA的并行机制

面向对象有限元并行计算框架PANDA的并行机制李于锋;张亚林【摘要】为实现面向对象有限元并行计算框架PANDA对高性能计算的支持,分别从并行计算流程、区域分解、分区信息和通信封装等部分设计PANDA框架在并行计算方面的数据结构.在计算流程中建立区域分解和并行求解器的配合协作方式,进而描述进行区域分割的3种网格剖分方法;对分区边界单元和节点信息的组织以及对并行通信操作的封装使复杂的并行通信调用简单、易行.用PANDA框架开发有限元程序时,只需以串行方式编写代码就可得到并行计算服务.对某夹具的算例表明PANDA框架并行计算实现的正确性和可靠性.【期刊名称】《计算机辅助工程》【年(卷),期】2011(020)001【总页数】6页(P24-28,41)【关键词】并行计算框架;PANDA;有限元;软件开发;并行机制【作者】李于锋;张亚林【作者单位】中国工程物理研究院计算机应用研究所,四川绵阳,621900;中国工程物理研究院计算机应用研究所,四川绵阳,621900【正文语种】中文【中图分类】TP319;O2460 引言有限元法是当今主流的数值计算方法,被广泛应用于工程领域的各个方面.大量高性能计算机的出现,特别是集群系统的广泛应用,使大规模复杂数值模拟得以实现,但必须采用并行技术进行程序开发.有限元并行计算框架开发的目的是使在复杂网格上进行的大型数值模拟程序开发变得更加快捷、高效.近年来,面向对象有限元技术[1-4]发展迅速,而开发框架却为数不多,且功能模块有较强耦合[5].为此,中国工程物理研究院总体工程研究所和计算机应用研究所联合开发有限元并行计算框架PANDA[6].框架中各组件松散耦合,可适应各种线性和非线性有限元法,不仅提供单元公式和本构模型的添加接口,也提供各种复杂边界条件的实现方法.基于消息传递在分布存储模型的并行机上开发并行程序,能显著控制数据分配和通信,这种控制又促进在大规模分布存储并行机上的高性能编程.[7]针对目前高性能集群的广泛应用,采用 MPI(Message Passing Interface)以分布存储方式实现有限元并行是正确的选择.面向对象技术对并行编程过程有重要影响(如对数据和函数的封装、继承和多态性),许多基于类等的编程思想都来源于串行编程领域,但也开始在并行编程中使用,尤其是恰当的抽象可隐藏那些使编程复杂的并行性.[7]以面向对象技术为基础设计的PANDA框架正体现该优点.1 框架的数据结构框架的主要数据结构有网格、场变量、单元组和通信数据管理等.网格是整个模拟计算区域的离散,支持线段、三角形、四边形、四面体和六面体等几何形状.一个计算区域可包含不同形状的网格子集.所有网格单元被划分为若干单元集,一个单元属于且仅属于一个单元集.场变量即自由度及其微分,框架以场的形式组织变量.任意一个自由度变量都归属于某个场,场通常定义在网格节点或单元上.根据时间积分算法,变量可能存储的数量不一,即场可能含有d阶微分,均要开设存储.所有的场均由节点管理器管理. 单元组是PANDA框架的算法核心类,实现一类有限元公式,在特定单元形状、形函数(含单元空间积分方式)、计算参考系(Euler或 Lagrange或ALE)和物理固有非线性(如接触)等情况下形成一种特殊的计算模式,即如何形成系统方程的单个单元贡献.每个单元组都会关联一个场,同时关联若干个单元集,负责遍历所施加的单元,进行单元矩阵和右端项的计算,并提供组装方程组的接口.通信数据管理基于网格剖分,所有单元集作为一个整体进行剖分.在采用镜像节点后,通信只发生在节点信息上.2 并行的实现策略PANDA框架基于MPI实现并行,具体策略为:首先,基于几何网格的区域分解,将子域映射到各进程;然后,每个进程在其子域上计算单元矩阵和单元右端项并提供组装接口,借助并行线性代数求解器实现大规模矩阵的分布式存储、组装接口以及方程求解,求解后,交换场数据边界信息;最后,进程在局部进行时间积分更新.所有的有限元相关计算都是分布式并行的,而大规模方程求解的主要并行任务交由线性求解器库负责.目前,已在PANDA框架中集成Aztec,SPOOLES,SuperLU,HYPRE[8],PETSc,Trilinos和PHG(由中国科学院科学与工程计算国家重点实验室开发)等著名求解器库.3 框架的并行计算流程框架并行设计的关键是数据变量的分布式存储和场数据时间更新算法的并行化.框架默认对所有的场变量基于网格区域分解进行并行通信.框架并行计算流程见图1. 图1 框架并行计算流程Fig.1 Parallel computation process of framework由图1可知,并行计算首先需进行区域分解,然后将局部模型信息读入框架,再进行场变量的编号(局部编号在进程内部确定,全局编号则通过全局通信确定).基于编号的局部和全局映射关系,每个子域将遍历其所存单元,进行单元矩阵和右端残力的计算和组装,并组装到在初始阶段就设置好的并行求解器中.有限元计算对每个自由度都形成一个代数方程,方程的编号很重要,框架采用的编号方式为:局部编号按节点进行,节点内按场顺序进行,场内按自由度顺序进行;全局编号按进程号排序,并保持局部编号的连续性.框架的并行是基于节点的剖分,所以按节点编号的方式对于并行处理十分方便.得到自由度编号和活动方程的编号(包括全局编号和局部编号对应关系),就可将从单元算法得到的单元矩阵和残量组装得到整体方程的矩阵和残量.通过并行求解器得解的本地部分.并行求解器主要完成A(u)=f的求解.作为一个独立的外部接口模块,其输入包含向量f(或者还有初始值u)的分布式存储、算子A的操作对u的影响方式.其中,可能涉及稀疏矩阵的分布式存储、A(u)的分布式计算和规约;输出为解向量u的分布式最终结果,其在误差允许范围内近似满足方程或报告不收敛状态.求得分布式存储后,下一步对场的时间积分算法更新.为计算内力,需从相邻分区获得外部影像节点场信息,需用到分区管理和通信管理.PANDA框架将分区和通信进行封装,使上层只需1~2个函数的调用即可完成外部信息的交换,设计灵活、巧妙.在进行场信息的更新以及内力的计算后,就可推进时间步进行下一次的循环迭代:根据算法选择进入局部单元遍历计算和组装,或只进行右端残量的遍历计算和组装,再到并行求解器求解,最后到场的更新和内力计算,循环往复.3.1 区域分解框架采用网格区域剖分的方法实现计算任务的分解.目前,框架网格分解以串行实现,且以节点分解为基础,进而对单元和通信作出安排.PANDA框架提供的分解方法有3种:图分解方式、索引分解方式和空间分解方式.图分解方式先将网格组织成图的形式,然后按照图的分解方法进行分解,最后将结果转变为网格单元和节点的分解;索引分解方式是按照模型读入的节点顺序依次分配给p个进程;空间分解方式是按照空间坐标进行箱子分解,每个箱子的尺寸都相同,先形成很多小箱子,然后按照箱子的邻接关系,借助图剖分将箱子分成p个组.由于有限元计算大多是以单元为单位进行的计算密集型作业,对于复杂几何构型的离散化,图剖分方式似乎是最好的选择.将网格组成图的方式由单元连接关系和节点场关联信息共同确定.场关联信息存在于一些复杂相依的约束条件(如边界条件或接触条件)中.目前,PANDA框架调用METIS[9]开源软件包进行多水平图剖分,也可采用其他方式分解.由图剖分得到网格节点的划分情况,然后需确定如何对有限元计算形成分区信息,用这种信息指导数据通信.3.2 分区信息框架采用类PartitionT管理所有的分区信息.首先明确的是哪些节点或单元信息需进行通信,哪些在本地局部范围不需要与其他分区通信.从区域分解得到节点-分区号映射后,结合图的表示进行节点的类别划分,再结合单元连接关系进行单元的类别划分.根据图和单元连接关系可将本地存储的节点和单元进行分类,形成3类节点和2类单元,见图2.图中网格被虚线分为2个子域,节点和单元的分类基于右边的子域.内部节点指没有与其他分区节点有连接关系的本分区所拥有的节点;边界节点指至少与某个其他分区节点有连接关系的本分区所拥有的节点;外部节点指与本分区边界节点有连接关系的其他分区的节点.内部单元特征是其所有节点均为内部节点,边界单元特征是至少一个节点为边界节点或外部节点.图2 并行计算中分区的单元和节点分类Fig.2 Node and element classificationin a partition of parallel computation在节点和单元分类后,就可以明确消息的来源和目的.为方便管理,采用分区对象处理这些信息.调用分区函数,得到分区信息的初始化,其中主要函数有4个:(1)Set()设置分区总数、ID号和本地3类节点,接收信息的分区号和节点号等;(2)SetOutgoing()设置发送信息的节点号;(3)InitElement Blocks()设置2类单元数组,单元映射和逆映射数组的主维数为单元块数目;(4)SetElements()按照单元连接关系将单元划分为2类,设置各单元数组及映射数组.通过这些函数可对分区对象进行必要的设置,另一种方法是读取分区文件.在设置完成后就可使用PartitionT对象,得到的重要信息包含本分区所有节点号、所有单元号、编号局部到全局的映射及其逆映射等.得到分区信息后,可根据需要写几何输出文件.设总分区数目为M,本分区号为m(0≤m<M),则几何分区文件分别为file.nM.pm.geom和file.nM.partm.在geom文件中指定的其他文件(如节点坐标文件、单元集子文件、节点集子文件)中的编号都是从1开始的局部编号.节点和单元的映射信息存储于partm文件中,其中存储的内部、边界、外部节点,进、出节点,内、外单元均为从0开始的局部编号,映射数组中的编号为全局编号.在框架中有限元管理器读入分区文件,构造本地分区PartitionT对象.通信管理器设置其成员fPartition.在并行模拟中,可通过PartitionT实现对通信消息的掌握,通过层次封装,上层只能得到通信管理器和有限元管理器掌握的节点的处理器位置信息.3.3 通信封装边界节点信息的传递是整个通信的核心任务.在图剖分的区域分解中,通过分区类PartitionT的NodesOut和NodesIn函数可获得本分区需互换信息的节点号.节点数据的分布在框架中影响以下重要的计算步骤:大型稀疏矩阵的分布式存储和场信息的更新.求解器的初始化函数设置方程的全局方程总数、局部方程总数和局部方程起始号;在单元贡献集成时需判断方程号是否在本地范围内,不在则不集成;场信息的更新由节点管理器负责,在其成员函数的实现中,调用通信管理器的AllGather函数(已经过封装,在图剖分情况下属于点到点的非阻塞通信).图3 通信的封装层次Fig.3 Hierarchy of communication encapsulation分区信息通过通信的封装影响系统方程的并行求解和场信息的更新.通信在框架中的重点类有CommunicatorT,MessageT和 CommManagerT,封装层次见图3,上层的类使用下层的类提供服务,应用程序可使用以下各层,但最方便的是使用通信管理类,其与分区之间的协作见图4.图4 通信管理类与分区之间的协作Fig.4 Relationship between communication classes and partition通信器类CommunicatorT是对标准MPI函数的封装.涉及的全局通信有全规约、收集、全收集、广播和同步等;局部通信有非阻塞和阻塞的发送与接收.开发者在需要其他数据通信时,可使用这种封装的通信函数进行.该方法体现模块性,提高错误处理的能力,但用户使用时需理解具体的通信细节.MessageT是对各种并行消息通信模式的封装,有 PointToPointT,AllGatherT和 CartesianShiftT等 3个派生类,分别完成点对点、全收集和笛卡儿网格移位通信,对应于图剖分、索引分解和空间分解等3种区域分解方式的通信. PointToPointT提供点对点的阻塞、非阻塞通信.fPartition成员提供剖分信息,其他成员包括非阻塞的接收缓冲区、发送缓冲区、接收和发送请求.成员函数Initialize()按分区的进出节点信息检查或分配接收和发送缓冲区,接收发送请求.AllGatherT()依据分区进行非阻塞的通信,先投递接收信息,然后对要发送信息的节点信息进行发送投递,接着等待处理接收到的消息并组装到欲通信的数组里,最后等待发送的完成.AllGatherT类提供全收集的通信功能,经过通信,每个进程都得到相同的全局数据场,主要服务于基于索引的区域分解方式.成员函数Initialize()设置本进程发送数据的长度以及确定本进程数据在目标数组中的位移.AllGatherT()执行全收集操作.应用于索引分解的全收集通信只是计算功能的并行,在数据空间上并没有分布存储,每个进程都存储全局数据.CartesianShiftT提供笛卡儿网格上的移位通信,主要成员为构造函数和AllGatherT().针对空间分解方式,在空间的方向和位移上交换数据.该类的主要成员有周围进程号,通信移位模式以及发送、接收信息的节点号.在实际应用中,可利用框架提供的3种消息模式进行通信,只需创建对象,初始化数据分布,然后调用AllGatherT()就可实现.CommManagerT是框架中对并行操作的顶层封装.它维护分区信息、管理消息列表,作为框架的重要组成部分负责节点场信息的通信.使用CommManagerT进行数值模拟物理量的通信非常方便:其将所有的通信消息管理起来,开发者只需提供欲通信的数组,在进行注册后就可通过简单的调用完成通信. CommManagerT的主要接口函数有Init_AllGatherT()和AllGatherT().前者根据区域分解方式初始化相应的消息通信方式,将分配好的消息追加存储到成员fCommunications数组;后者调用相应消息的通信函数(对于图剖分则调用点对点消息的AllGatherT()函数).典型的CommManagerT使用方式为nArray2DT <double> values(num_nodes,num_dofs);int id=fCommManagerT.Init_AllGatherT(values);…/* values assingment locally*/fCommManagerT.AllGatherT(id,values);fCommManagerT.Clear_AllGatherT(id);其中:nArray2DT为框架工具箱中二维数值数组模板类.使用CommManagerT很方便,隐藏具体的分区通信方式,易于上层应用,并行通信在框架中逐层抽象封装,应用程序可选择使用不同封装层次的类.4 算例用基于PANDA框架开发的有限元模拟程序对某夹具进行计算,采用开源并行预条件库HYPRE求解代数方程组.模型自由度约为10万,得到的位移云图见图5. 图5 某夹具位移云图Fig.5 Displacement clound picture of a clamp由图5可知,并行计算的结果与串行计算结果一致,并行计算中单计算节点的时间和内存消耗见表1,测试平台为某Linux集群,单计算节点处理器为Intel(R)Xeon(TM)CPU 3.40 GHz,内存4 GB.可知,基本呈现出线性加速比.表1 并行计算中单计算节点的时间和内存消耗Tab.1 Time and memory cost of single computation node in parallel computation计算节点个数1 2 4 8 t /s 327 157 79 37内存/MB 170 95 52 305 结论PANDA框架可实现区域分解、分区管理、通信封装、场的通信等的无缝集成、相互协作,完成工程计算的并行通信任务,屏蔽具体通信底层实现的复杂性,与外部线性代数求解器的接口设计巧妙,可配置多种求解器.基于PANDA框架开发有限元程序,开发者只需以串行的方式编写与物理相关的代码,就可得到并行的计算服务.在PANDA框架中利用封装好的CommManagerT进行自定义变量的通信也十分方便,甚至只需1~2个函数的调用就能实现多计算节点间复杂拓扑关系的通信. 参考文献:【相关文献】[1]BOSE A,CAREY G F.A class of data structures and object-oriented implementation for finite element methods on distributed memory systems[J].Comput Methods Appl Mech Eng,1999,171(1-2):109-121.[2]PATZAK B,BITTNAR Z.Design of object-oriented finite element code[J].Adv Eng Software,2001,32(10-11):759-767.[3]PANTALÉ O,CAPERAA S,RAKOTOMALALA R.Development of an object-oriented finite element program:application to metal-forming and impact simulations[J].J Comput Appl Math,2004,168(1-2):341-351.[4]COMMEND S,ZIMMERMANN T.Object-oriented nonlinear finite element programming:a Primer[J].Adv Eng Software,2001,32(8):611-628.[5]YU Lichao,KUMMAR A V.An object-oriented modular framework for implementing the finite element method[J].Computers & Structures,2001,79(9):919-928.[6]史光梅,何颖波,吴瑞安,等.面向对象有限元并行计算框架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.[7]DONGARRA J,FOSTER I,FOX G,et al.并行计算综论[M].莫则尧,陈军,曹小林,等,译.北京:电子工业出版社,2005:198-199.[8]FALGOUT R D,YANG U M.Hypre:a library of high performance preconditioners[C]//SLOOT P M A,TAN C J K,DONGARRA J J,et al.Proc ICCS 2002.Berlin:Spinger-Verlag,2002:632-641.[9]KARYPIS G,KUMAR V.METIS 4.0:unstructured graph partitioning and sparse matrix ordering system[R].Minneapolis:Univ Minnesota,1998.。

面向对象有限元并行计算框架PANDA的多物理场耦合服务

面向对象有限元并行计算框架PANDA的多物理场耦合服务
P ANDA , t em a — e h n c l o p i g r g a h r lm c a i a c u ln p o r m i d v lp d n t em o l si a ay i f n to i s e e o e a d h r ea tc n l ss u ci n s
第2 O卷 第 1 期 u e d d En i e i g trAi e gne rn
V0 _ O .1 l2 No Ma.2 r 01l
文章 编 号 :0 6—0 7 ( 0 1 O —0 90 10 8 1 2 1 ) 10 1 —5
m u p y is a a y i u to x e sb l y, d t r n f ra n i e e tph sc edsa d m u i h sc hih sc n l ss fnci n e t n i ii t aa ta se mo g df r n y i sf l n h p y is f i
S UN e HE Yi g o W U i nh , S I h n jn L u n L h n b , Ru a H e gu ,IY f g Z e

( .Istt o yt nier g b o p t p l ao ntue a ntue f s ms gne n ; .C m ue A pi t nIstt, i S e E i r ci i 1 hn cdm f n ier gP yis Mi yn 2 90, ih a , h a .C i A ae yo E g ei hs , a ag6 10 Scun C i ) a n n c n n
cu l gsri eg f bet r ne ii l n aa e cm uai rm w r A D o pi ev e d i o jc—i tdf t ee tp rl l o p tt n f e ok P N A,ie n c n o oe n e me l o a ..

并行计算技术在有限元分析中的应用

并行计算技术在有限元分析中的应用

并行计算技术在有限元分析中的应用有限元分析是一种广泛应用于工程领域的数值计算方法,用于解决复杂结构的力学问题。

然而,随着计算机技术的迅速发展,传统的有限元分析方法在处理大型问题时面临着计算速度和内存限制的挑战。

为了克服这些限制,人们开始应用并行计算技术来提高有限元分析方法的计算效率。

并行计算技术是一种将计算任务分解为多个子任务,并同时进行处理的方法。

通过利用多个处理器或计算机的计算能力,可以大大缩短计算时间和提高计算效率。

在有限元分析中,采用并行计算技术可以将大型问题分解为多个小型子问题,并同时求解,从而减少整体计算时间。

首先,通过并行计算技术可以实现问题的分解和并行求解。

在有限元分析中,问题通常可以划分为多个单元,每个单元可由一个或多个处理器负责求解。

通过将计算任务分配给多个处理器,可以同时进行求解,从而提高整体的计算效率。

这种并行求解方法可以在一台计算机系统内进行,也可以在多台计算机上进行网络并行计算。

其次,并行计算技术可以应用于并行装配和求解大型稀疏线性方程组。

有限元分析中,通常需要解决大规模的线性方程组,例如位移和应力问题。

传统的直接求解方法需要显式地存储整个系数矩阵,这对于大规模问题来说是非常困难的。

而并行计算技术可以将整个矩阵分块存储,并并行装配,从而降低存储需求和提高求解速度。

此外,并行计算技术还可以应用于优化有限元网格和自适应网格技术。

在复杂结构的有限元分析中,网格的划分和优化对结果的准确性和计算效率具有重要影响。

传统的网格优化方法通常需要较长的计算时间。

而并行计算技术可以将网格优化任务分解为多个子任务,并同时进行优化,从而加快优化过程。

并行计算技术在有限元分析中的应用也面临一些挑战和限制。

首先,问题的分解和划分需要合理且精确地设计,以避免子问题之间的依赖和冲突。

其次,不同的并行计算架构和平台具有不同的特点和限制,需要针对具体的计算平台进行算法和程序的优化。

最后,大规模并行计算系统的配置和维护也需要相应的硬件和软件支持。

如何构建并行计算框架

如何构建并行计算框架

如何构建并行计算框架构建一个并行计算框架需要考虑多个方面,包括任务调度、并行计算模型和资源管理等。

以下是一个构建并行计算框架的简单步骤和关键要点:1.设计并行计算模型:-首先,需要明确并行计算的目标和需求。

确定需要处理的任务类型、数据规模和预期性能。

- 然后,选择合适的并行计算模型。

常见的并行计算模型包括分布式内存计算模型(如MapReduce),并行数据库计算模型和共享内存计算模型。

-根据任务类型和数据规模,选择合适的并行算法和数据结构。

考虑任务间的依赖关系,确定任务之间的调度顺序。

2.任务调度:-设计一个任务调度器,负责将任务分配给各个计算节点。

根据任务的优先级和调度策略,动态调整任务的分配和调度。

-考虑任务调度的负载均衡问题,尽量保证各个计算节点的负载均衡,提高系统的整体性能。

-使用基于优先级的调度算法,提高任务的执行效率。

3.并行计算:-在并行计算框架中,需要实现任务的并行执行。

可以使用线程池或任务队列等方式,将任务分配给多个工作线程并行处理。

-确保任务之间的数据访问互斥,避免并发冲突。

可以使用互斥锁、信号量等机制,保证对共享数据的访问线程安全。

4.数据管理:-并行计算框架需要管理大量的数据,包括输入数据和计算中间结果。

设计一个高效的数据管理策略,尽量减少数据的传输和复制。

-考虑数据分区和数据划分的问题。

根据数据的特点和计算任务的需求,将数据划分为适当的块,分配给不同的计算节点并行处理。

5.故障处理:-并行计算框架需要具备一定的容错能力。

设计一个故障检测和恢复机制,能够及时发现计算节点的故障,并将任务重新分配给其他可用节点处理。

-考虑任务中断和数据丢失的情况,设计相应的容错策略和数据恢复机制。

6.性能优化:-对于大规模并行计算框架,性能优化是非常重要的。

可以采用一些优化手段,提高并行计算的效率。

如任务并行度的调整、任务的粒度控制、数据局部性的优化等。

-使用性能分析工具进行性能测试和性能调优,定期检查系统的性能指标,寻找优化的空间。

面向对象有限元框架内并行接触类的设计

面向对象有限元框架内并行接触类的设计

面向对象有限元框架内并行接触类的设计白小勇*,何颖波,陈成军(中国工程物理研究院总体工程所,四川绵阳 621900)摘要:为了简化在框架中扩充接触计算功能,及开发和实现新的接触算法的研究工作,本文设计了一种针对框架应用的并行接触类。

对接触计算流程进行深入分析,抽象出串行接触类的属性、方法以及与框架中其它类的协同机制。

针对已有并行接触算法,提出并行接触算法模型。

基于此模型,通过继承串行类和扩展并行属性和方法设计了并行接触类。

类的设计充分考虑了类的易用性、可移植性、可扩充性及可维护性。

对类的应用表明,类被整合到框架中后,未影响框架的整体结构,并且能高效的实现接触计算功能。

关键词:并行有限元框架;并行接触算法;算法模型;面向对象;1引言面向对象有限元框架因其功能强大、扩充简单、管理方便、代码复用度高而逐渐成为有限元程序开发的新趋势[1]。

虽然在框架内扩充功能相对简单,但是由于接触计算特别是并行接触计算的数据流非常复杂,在框架内进行并行接触功能的开发及开发新的接触算法仍然是一项非常复杂而耗费时间的工作[2]。

本文利用面向对象分析方法,对接触计算的属性和方法进行封装,设计了串行和并行接触类。

接触类通过接口映射方法(函数)与框架进行协同,通过编写不同的接口映射函数,接触类可以容易地整合到不同的框架中去。

Tahoe框架是由美国Sandia实验室开发,面向新数值算法和材料模型研究的开源平台。

Tahoe集有限元法、无网格法和物质点法于一身,开发完整后能进行二维和三维的多物理静力学、冲击动力学并行计算[3]。

本文通过分析Tahoe框架的特点,将接触类接入Tahoe框架,使Tahoe框架具备了接触功能,算例表明接触类能够很好的融入框架中,实现高效率的接触并行计算。

2接触算法及串行接触类设计2.1 接触算法接触计算通常由接触搜索、接触力计算两部分组成。

接触搜索在接触区域中搜索可能的接触,搜索结果表达为“点-面”接触对,或“点-点”、“面-面”接触对[4]。

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

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

PANDA的功能可扩展性设计与应用孙乐;何颖波;莫军【摘要】针对有限元分析软件功能的可扩展性需求,介绍面向对象有限元并行计算框架PAN DA的单元设计和单元类的扩充方法.在PANDA中,单元分析被抽象成单元算法和材料本构模式,并提供单元类型、材料模型的接口服务,用户可以根据不同的应用需求构成并实例化不同的C++抽象基类来解决实际问题.单元类的扩展步骤为:在ElementListT类的单元对象列表中添加单元对象;为该单元类设置相应的属性和操作,以实现程序功能的扩充;修改编译文件以保证程序能够顺利地通过编译.以轴对称导热分析为例验证单元类的扩充方法在PANDA中的实现.PANDA的单元分析设计有力地保证其功能的可扩展性.【期刊名称】《计算机辅助工程》【年(卷),期】2011(020)003【总页数】5页(P55-59)【关键词】有限元并行计算框架;PANDA;软件开发;功能可扩展性;单元分析【作者】孙乐;何颖波;莫军【作者单位】中国工程物理研究院总体工程研究所,四川绵阳621900;中国工程物理研究院,四川绵阳621900;中国工程物理研究院总体工程研究所,四川绵阳621900【正文语种】中文【中图分类】TP311;0242在大型结构工程设计中,数值模拟是研究复杂系统综合性能的主要方法之一,而有限元分析软件在其中发挥着重要作用.近年来,随着航空、航天以及武器工程等领域的不断发展,出现很多大型和超大型结构,同时结构力学行为分析涉及的物理领域也不断扩展,使有限元分析软件逐渐面向大规模、多物理场的应用[1-3].将客观世界准确、简单而又自然地表达出来是计算机软件设计所追求的目标.良好的软件设计需要软件开发方法的配合,传统的结构化程序设计方法具有模块化特点,执行流程是各程序段根据给定的算法依次对数据进行处理,任何数据的添加或形式改变都会导致一系列相关过程的变化.随着分析问题类型的急剧扩大,有限元分析软件模块越来越多,模块之间的数据传递也越来越频繁,结构化程序设计导致程序的扩展能力有限,不易维护、调试复杂且代码的重用性低[4-6].从20世纪80年代后期兴起的面向对象的程序设计方法克服上述结构化设计的不足,其封装、继承和多态性特点为功能模块的集成化、扩充的灵活性提供有利条件,在一定程度上提高软件的开发效率,逐渐成为大型软件的主流设计方法[7-8].基于框架的现代软件开发理念和模式,贯彻软件模块化的思想,更注重沉淀和复用应用软件的共性技术,不仅可以实现代码级的重用,还可以重用设计与分析,在更大的粒度上实现系统级的复用,极大地降低软件研制难度、缩短软件研制周期,同时领域内的软件结构一致性好,确保软件的集成性以及可升级、可扩展性.[9]为面向复杂工程结构的大规模、多物理场计算分析应用,中国工程物理研究院于2007年采用面向对象、层次化、模块化的设计模式,形成面向对象有限元并行计算框架PANDA[10]的基本版本,见图1.该框架通过建立网格、场等底层数据结构,集成高性能数值求解器和工具包,如线性方程组求解器、特征值求解器、应用参数解析、数据输入输出、积分器、区域分割软件和并行通信等,以服务的方式提供一个快速建立高性能并行计算程序的开发环境;通过将有限元分析的数据和过程逐级封装,形成一个构架良好的有限元分析系统.在该系统中,有限元管理器以访问者的身份协调不同功能组件按照约定的接口协同工作,传递数据,完成有限元分析;系统设计采用继承和多态机制,易于集成或添加工程结构有限元计算所需的各种服务组件,如求解器、单元类型库和材料模型库及其接口服务,为软件开发提供一个扩展性良好的基础平台,支撑工程结构有限元高性能并行计算应用开发能力的不断扩充和完善.目前,已具备初步的结构静力学、振动力学、冲击力学、传热学以及热力耦合等并行计算程序开发能力.本文通过分析PANDA框架的单元分析设计,探讨其功能的可扩展性;并在现有单元库及单元接口服务的基础上给出添加二维轴对称导热单元类的实例,实现不修改原模块并在相同操作界面功能的有规则扩充,展示PANDA框架设计的优越性.单元分析是整个有限元分析过程的基础,尽管不同物理分析类型的单元分析算法各不相同,但其分析过程均可归结为依据单元的几何属性和材料属性等完成单元特性矩阵的计算以及系统特性矩阵的组装.[11]据此,PANDA框架将单元分析抽象成单元算法和材料本构模式两方面,利用面向对象的设计模式分别提供单元类型和材料模型的接口服务.单元(库)、材料(库)及其相关的接口服务处于PANDA框架顶层的应用个性层,与实际应用紧密相联;根据不同的应用需求,可以构成不同的C++抽象基类,通过对这些基类的实例化,可在PANDA框架上求解实际问题.PANDA框架的单元接口服务由单元基类ElementBaseT和单元对象构造器ElementListT共同完成(见图2).ElementBaseT主要负责向应用程序提供单元算法服务,它抽象出各单元类的共性(属性和操作),为单元算法提供统一界面,根据具体的单元算法可逐级派生得各种具体的单元类.ElementListT为单元类型的添加和识别设置统一接口,其主要功能为定义单元对象的列表;通过单元对象列表中的单元名称创建具体的单元对象;并通过一个单元类的指针指向已创建的单元对象,执行具体的单元算法.它以不改变程序主体结构的方式,实现向应用程序添加和识别新单元类的服务.PANDA框架的材料接口设计与此类似,不再赘述.面向多物理场应用的大型有限元软件涉及多种物理分析类型,因此在设计上需要考虑多物理场分析类型的可扩展性.该设计模式在面向多物理场应用时,可通过继承和多态机制在相同操作界面下方便地添加新的单元和材料类,并以不修改程序原模块的方式实现新的单元算法和材料本构模式,从而不断扩充已有程序的功能,有力地保障物理场分析功能的多样性、可扩展性以及代码的可重用性.从上文的分析可知,PANDA框架的单元分析设计有力地保证系统分析功能的可扩展性.在程序中添加新的单元类(添加材料类与其类似)需要完成以下3个步骤:在ElementListT类的单元对象列表中添加该单元对象,以便程序能识别该新增的单元类;为该单元类设计相应的属性和操作,实现程序功能的扩充;修改编译制导文件,保证程序能顺利通过编译.在实际工程的传热分析中,常需要采用轴对称算法简化整个分析过程,本文以轴对称热传导单元的添加为例,对上述3个步骤作详细说明.为最大限度地实现对代码的重用,分析PANDA框架的单元组织结构和已有的导热单元代码,分别以现有单元库中的线性傅里叶导热单元类DiffusionElementT,非线性傅里叶导热单元类NLDiffusionElementT和非傅里叶导热单元类HyperbolicDiffusionElementT作为父类,继承它们的属性和方法,再根据目标通过重定义的方式修改或添加某些方法,派生出各自对应的轴对称导热单元类,实现轴对称导热问题的有限元分析.详细的扩充过程如下:(1)在单元对象构造器中添加轴对称导热单元名称并定义新的单元类.①修改ElementListT.cpp文件,添加预定义宏命令,以便识别轴对称导热单元类DiffusionAxiElementT, NLDiffusionAxiElementT 和HyperbolicDiffusionAxiElementT的头文件.②修改函数 ElementListT::DefineInlineSub,在单元列表中添加轴对称导热单元的名称.③修改函数ElementListT::NewElement,按照单元列表中添加轴对称导热单元的名称创建新单元类的实例.(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,在其中加入新单元类的目标文件、源文件和头文件等信息.至此,完成PANDA框架单元库中轴对称导热单元的添加.在执行相应的应用程序时,有限元管理器将协调新的单元类及其他计算功能组件,使各功能组件通过约定的接口协同工作、传递数据,并最终完成轴对称热传导的有限元分析.为检验程序功能的正确性,采用如下算例进行测试:某双层空心圆筒的高度为8 m,内筒为厚度1 m的燃料层,外筒为厚度3 m的铝.燃料层有1 500 W/m3的内热源,热导率为35 W/(m·℃);铝层的热导率为100 W/(m·℃);铝筒外表面受到温度为150℃的高压水冷却,表面传热系数为3 500 W/(m2·℃).算例测试表明PANDA轴对称导热分析计算结果与商用有限元程序计算结果完全一致(见图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 elementprogramming: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.。

有限元计算的面向对象方法及程序研究

有限元计算的面向对象方法及程序研究

有限元计算的面向对象方法及程序研究随着科学技术的不断发展,有限元计算在工程领域中得到了广泛的应用。

然而,传统的有限元计算方法在处理复杂问题时往往存在计算效率低、可维护性差等问题。

为了解决这些问题,面向对象方法被引入到有限元计算中。

面向对象方法是一种软件设计和开发的方法论,它将问题分解为多个对象,并通过对象之间的交互来完成任务。

在有限元计算中,可以将问题分解为网格对象、节点对象、单元对象等,通过它们之间的关系和交互来建立起计算模型。

首先,面向对象方法可以提高有限元计算的计算效率。

传统的有限元计算方法通常需要遍历整个网格来计算节点的位移和应力等信息。

而面向对象方法可以通过建立网格对象和节点对象之间的关系,实现只计算特定节点的位移和应力信息,从而减少了计算量,提高了计算效率。

其次,面向对象方法可以提高有限元计算的可维护性。

传统的有限元计算程序往往难以维护和扩展,因为计算模型和计算过程之间的关系复杂。

而面向对象方法将计算模型和计算过程分离开来,使得程序的结构更加清晰,易于理解和修改。

当需要对计算模型进行修改或者添加新的计算过程时,只需要对相应的对象进行修改或者添加即可,而不需要修改整个程序。

最后,面向对象方法可以提高有限元计算的可重用性。

传统的有限元计算程序往往只能针对特定问题进行计算,难以在其他问题中重复使用。

而面向对象方法通过将计算模型和计算过程进行分离,使得计算模型可以在不同的问题中重复使用。

只需要根据具体问题创建相应的对象并进行交互即可,大大提高了计算的可重用性。

综上所述,面向对象方法在有限元计算中具有重要的应用价值。

它可以提高计算效率、可维护性和可重用性,为工程领域的有限元计算提供了一种更加高效和可靠的方法。

未来,我们可以进一步研究面向对象方法在有限元计算中的应用,探索更多的优化方法和程序设计,以满足不断发展的工程需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ab ta t sr c :Ba e o h mo en o t r e in tc n l ge s c s ir r h sd n te d r s f wae d sg e h oo i s u h a h e ac y, mo lrta in a d dua i t n z o
i p o e t e e eo m r v h d v lpme t blt o n ie rn smu ain ot r e, i ., PANDA v r in n a i y f e gn e ig i l to s f i wa .e e so 0. i 1 s
p ei n r y i l me t d T e h e ac y s u t r e i f P NDA fa w r s d t i d t e k y rl mi a i mp e n e . h ir r h t cu e d s l r n g o A me o k i eal , h e r e
e gn e n n ie r g,te d sg t o ffn t lme tp al lc mp tto rme r sd s u s d f rChn o i h e i meh d o i e e n a l e o u ain fa wo k i ic se ia t n i e r o
Obet r ne nt e me t a al o uain jc- i t f i l n r l l mp tt o e di e e p ec o
fa e r r m wo k PANDA
S ag i HI Gu n me h

HE n b ,W U i n Yi g o Ru a h MO J n u h,
P N A框架的扩展应用方法. AD 研究表 明: 采用框架技术进行结构力学有 限元程序 开发, 具有高效、
快速和便捷 等优 点.
关键 词 :并行计 算框 架 ; A D 有 限元 ; P N A; 软件 开发 ;网格 数据 结构
中图分类号 : P 1 . ;B 1 T 3 15 T 15 文献标 志码 : A
பைடு நூலகம்
a d p r l ls ae y a e d s u s d,a d t e P ND f me r x e s n a d a p iai n meh d r n aa l t tg r ic s e e r n h A A a wok e tn i n p l t t o s a e r o c o
i i ee n r g a d v lp n fsr t r c a is fnt lme tp o r m e eo me to t cu e me h nc . e u K e r s:p al lc m p tto a wo k;PANDA ;fnt lme t ot r e d v l p n ;me h d t y wo d r a le o ua in f me r r i i ee n ;s fwa e eo me t e s aa
面 向对 象有 限元 并行 计 算框 架 P N A A D
史光梅 h 何 颖 波 吴 瑞安 h 莫 军 h 李 阳春 , 张 亚林 , , , ,
( .中国工程物理研 究院 a 1 .总体工程研 究所 ;.计算机应用研 究所, b 四川 绵阳 6 10 ) 2 90

要 :为提 高我 国工程 数值模 拟软件 的开发 能力 , 面向武 器工程 大规模 并行 计算 需 求, 于层 次 基

L n c u .ZHANG l I Ya g h n Ya i n
( .a ntueo yt sE g ; .C m ue pl ao ntue 1 .Istt f s m n . b o p t A pi tnIstt, i S e r ci i
C iaAcd myo n .P yis hn a e fE g h sc .Min a g Sc un6 O a yn ih a 2 O.C ia l 9 hn )
第1 9卷 第 4期
21 0 0年 l 2月
计 算 机 辅 助 工 程
Co mpue de gn ei g trAi d En i e rn
Vo1 9 No. .1 4 De . 2 0 e 01
文 章 编号 :0 6—0 7 (00)400 ・7 10 8 12 1 0 —080
b e y i to u e . , e su y i d c t st a h rme r e h oo y i f c e t a ta d e n i e tfr il r f n r d c d nl t d n iae h tt e fa wo k tc n l g s ef in .f n o vnin o i s
tc n lge u h a e i n o a j s aa sr cu e.c mmo n g me tmo u e o n t lme t e h oo i ss c s d sg fb sc me h d t tu t r o n ma a e n d l ff ie ee n i
ojc o e t eh iu , a d te eurm ns f l g sae aa e o p t i f w ao b t r ne t nq e n h rq i e t a e cl r l l m ua o o ep n e —i d c e o r p l c tn r
化 、 块化及 面向对 象的现代软 件设计技 术 , 模 分析探 讨有 限元 并行 计 算框 架 的设计 方 法 , 成初 步 形
的基础 开发框 架 P N A0 1 ; A D . 版 详细描述 P N A框 架的层 次结构设计 , AD 并探讨 该基础 开发 框 架设
计 中的底 层 网格 数 据 结 构 设 计 、 限 元 共 性 管 理 模 块 及 并 行 策 略 等 部 分 关键 技 术 ; 有 简要 介 绍
相关文档
最新文档