《关于数值模拟的一些看法.docx》由会员分享,可在线阅读,更多相关《关于数值模拟的一些看法.docx(6页珍藏版)》请在三一办公上搜索。
1、关于数值模拟的一些看法关于数值模拟的一些看法 1.数值模拟 十八世纪前人类主要通过实践经验和试验认识世界,十八世纪牛顿等科学家发明了微积分与力学,从而人类有了第二种手段理论研究探索自然,这种手段就是采用力学与微积分方法把大自然的各种规律归结为一组常微分方程或者偏微分方程。 但是如果只有微分方程而没有微分方程的解,人们还无法研究这些自然界的规律。因此从十八世纪至二十世纪,大量的力学家,物理学家和数学家,以毕生的精力投入到这些微分方程的研究及其求解方法。遗憾的是只有对这些微分方程进行了大量的简化,即在极其理想的条件下,才能得到部分微分方程的解。这种理论研究方法只能获得自然界某些规律的定性认识,因此
2、还不能准确认识这些规律。 二十世纪四十年代由于电子计算机的发明和差分方法的提出,以及随后的有限元方法和有限体积法大提出,为数值求解微分方程,准确认识自然规律创造了客观条件。从而产生了人类认识自然的第三种手段数值试验与数值模拟。这种新手段比前两种手段更优越更没有局限性。但是由于当时计算机能力的限制,人们对自然规律的认识主要还是依靠实践经验和物理实验,数值模拟还只能起到参考与辅助的作用。 随着计算机的迅猛发展以及计算数学与应用数学的长足进步,尤其是以并行计算机和并行计算为基础的高性能计算在二十世纪八十年代的兴起使得计算能力大幅度提高,从而能够精确求解各种复杂的微分方程问题,数值模拟正逐渐成为人类认
3、识自然规律的主要手段,物理实验逐渐变成辅助手段。 二十一世纪高性能计算已成为高科技的核心,基于高性能计算的数值模拟已成为经济竞争力和国家安全的关键。高性能计算应用的水平已成为衡量企业、大学和研究院所高科技水平的试金石。发达国家纷纷投入巨资开展高性能计算的研究及其在各种领域的应用。 2.数值模拟软件 数值模拟主要就是求偏微分方程的数值解,当今世界上求解偏微分方程最主要的有三种数值方法:有限元方法,有限体积法和差分方法。差分方法由于其适应性比较差,商业软件极少采用。基于有限元方法的数值模拟商业软件最多,它们主要面向固体力学和结构力学问题,基于有限体积法的商业软件也不少,它们主要面向流体力学和传热传
4、质学问题。 目前数值模拟商业软件以通用软件为主,它们适用于许多领域和不同的企业,专用软件较少,它们只适用于某个领域和某些企业。通用软件庞大复杂,一般有几十万行至几百万行代码量,适用面广但维护困难,使用不方便。专用软件相对比较简单,代码量一般在几万行至几十万行,适用面窄,但维护较简单,使用方便。 开发一个通用软件需要几百甚至几千人年,投资大,时间长,维护费用很高。随着高性能计算的兴起,软件的并行化在所难免,基于MPI的并行软件要比串行软件复杂得多,困难得多,维护与修改将更加困难,费用更高。 船大调头难,通用软件由于其庞大与复杂,阅读与改动十分困难,专用软件相对短小与简单,易理解,易改变,使用方便
5、,很受用户欢迎,但由于适用面窄,其用户数远远少于通用软件。 3.软件的新途径 软件的不可再用长期以来严重地影响着软件业的发展。人们一直努力提高软件的再用性,寻找各种能提高再用性的软件开发模式。近十年来包括IBM和微软等许多大公司倡导的组件化,构件化和中间件的软件开发模式就是提高软件再用性的一种途径,并已逐渐被许多软件公司接受。 基于模型语言的软件自动生成技术则是另外一条鲜为人知的有效途径。由模型语言编写的程序比采用任何一种高级语言减少一个数量级的代码量,并且很容易阅读和理解,再用性的大幅提高是显然的。但模型语言只适用于特定领域。 数值模拟软件主要采用有限元或有限体积法,为了提高数值模拟软件开发
6、效率及其再用性,有限元语言的提出是很自然的,采用有限元语言编写有限元程序,由该语言的生成器产生某种高级语言程序。 4.有限元语言 有限元方法是当今求解偏微分方程的最有效的数值方法,其原理是基于微分方程弱解形式,有限元语言的第一项任务就是如何描述弱解形式的微分方程表达式。Petrov-Galerkin方法给出了最一般的弱解形式,因此有限元语言应以这一形式书写微分方程。 有限元语言的第二项任务就是如何描述各种各样的算法。这些算法包括单物理场的计算格式与多物理场的耦合算法两个方面。前者的关键问题是如何获得对应于单物理场的线性代数方程组,有限元语言(有限元程序自动生成系统)以表达式的形式给出代数方程组
7、的矩阵及右端项。后者则需要各物理场之间的耦合关系及各种组件程序的执行次序与控制。有限元语言通过一个十分简练又十分通用的脚本文件主要以宏命令的形式描述多场耦合算法。 5.生成器 生成器的任务就是把有限元语言书写的程序转换成某种高级语言程序。有限元语言对于微分方程表达式,由生成器产生全部的单元子程序。对于算法程序则只产生一部分的高级语言代码程序,大部分代码是事先写好的,与有限元语言书写的算法程序无关,这一部分的代码约占到整个程序的代码量的三分之二以上,这样做的目的是为了减少生成程序的代码量和增加软件的灵活性。 生成器采用了以下的三项软件技术: 自动生成技术:由微分方程表达式和算法产生高级语言程序。
8、 组件化技术:又称构件化,中间件技术,近十年由IBM、微软等大公司倡导的新的软件开发模式。由于采用了自动生成技术,组件程序可根据微分方程表达式和算法的不同自动改变,因此所需的组件程序非常少。 公式库技术:把各种微分方程表达式和算法,以及形函数等常用公式存入库中,有限元语言可直接调用这些公式。这是采用模型语言与程序自动生成技术所特有的软件技术,类似高级语言的程序库技术。 有限元语言采用这三项软件技术带来了以下的好处:系统程序大为减少,约十万行代码。维护简单,人人都能参与,可持续发展性强。由有限元语言书写的程序不仅大大减少了代码量,大大提高了编程效率,更重要的是程序可读性强,再用性强。有限元语言是
9、一种超平台的语言,既不依赖于硬件也不依赖于操作系统,适用于各种计算机环境,包括单CPU与基于OPENMP和MPI的多CPU计算机。 6.采用对象 有限元语言及其生成器是开发有限元程序的平台,要求使用者熟悉有限元方法,会书写微分方程的弱形式,能理解有限元的计算格式。因此其使用对象主要包括有限元软件开发人员,有限元研究人员和有限元应用人员。 另外,由于有限元语言可大大的促进使用者对有限元方法的理解,从而能很快提高使用者的有限元应用水平。因此有限元语言也是一种很好的有限元教学语言。 有限元语言的推广应主要在有限元软件开发公司,高等院校和研究院所。重点是那些采用有限元或有限体积法做数值模拟的创新性研究
10、工作,现有的通用有限元或有限体积法软件不能满足他们的需求。 7.市场划分 人类的第三种手段数值模拟主要是通过有限元软件和有限元体积法软件进行的。因此这两种软件有着巨大的市场需求。这种需求大体分为科研教学需求与企业应用需求两类市场。 科研教学市场主要对象为高等院校和各种研究院所。他们需要采用有限元软件进行科研或教学。创造性不强的科研工作与教学,或者为了完成某项任务需要数值模拟,大多采用商业的通用有限元软件。如果是创造性的科研工作或高水平的有限元教学,则往往需要自己编写有限元程序,他们很可能采用有限元语言以提高编程效率。 企业市场主要对象为需要采用有限元数值模拟以提高市场竞争力的各种企业。他们一般
11、没有能力自己编写软件,主要是采用现有的软件进行数值模拟,有的甚至委托高等学院或研究单位帮他们做数值模拟。他们主要使用商业的通用或专用软件。他们不可能直接使用有限元语言。 包括设计和分析,甚至优化的CAE软件最符合企业的需求,将成为企业数值模拟软件的主流。当前许多知名的有限元软件公司纷纷推出虚拟样机,虚拟产品等就是朝着这一方向推进。但是到目前为止CAE软件的主要形式还停留在CAD+通用分析软件。设计软件与分析软件是完全分开的,并没有合成一个统一的软件,优化功能基本没有。 编制设计、分析和优化于一体的CAE软件将遇到以下的困难: 首先,设计软件与分析软件通常为两家不同的公司所有,无法统一, 第二,优化计算往往计算量很大,单CPU的串行计算无法满足要求。 然而三位一体的CAE软件将成为企业数值模拟的主流软件,有着十分巨大的市场需求。按照企业的需要开发三位一体的专用CAE软件是数值模拟软件的重要发展方向。但由于软件规模大,复杂性高,按照现有软件开发模式代码量庞大,投资大,时间长,维护难。如果采用模型语言与软件自动生成技术等先进的软件开发模式则可起到投资少、时间短、维护易的效果。这是有限元语言最有前景的发展方向。