第一章管理信息系统的诞生 2doc.docx
《第一章管理信息系统的诞生 2doc.docx》由会员分享,可在线阅读,更多相关《第一章管理信息系统的诞生 2doc.docx(18页珍藏版)》请在冰豆网上搜索。
第一章管理信息系统的诞生2doc
第章简介与安装
是什么
或许无需赘言是什么,读者可能通过各种途径已经对有了一定的了解.但不能排除有些读者的确是第一次接触它。
是“ ”的缩写。
顾名思义,它是有限元软件的生成器,因而称为“有限元程序自动生成系统"。
简单地说,这是一套有限元软件,然而顾名思义未必准确,其实它还是一套支持有限体积法的软件。
也就是说,这是一套可以生成有限元或有限体积法源程序的软件.这套系统是利用有限元方法或有限体积法进行数值计算的软件包。
该系统由中国科学院数学与系统科学研究院梁国平先生开发,是一套独具特色的国产高性能有限元数值计算软件。
这些特色将随着本书的叙述逐渐得以展现并被用户体会到。
笔者根据自己的理解和体会用下面几个软件开发领域流行的术语从不同的角度对其做总体概括。
的总体技术特征可以概括为以下几点:
∙:
是代码生成器,是生成软件(源代码)的软件.
∙:
是一套有限元(有限体积)程序的集成开发环境.
∙:
是一套计算机辅助工程软件。
∙:
对用户来说是一套集成的工作平台和问题求解环境。
∙
是一套高效、可重用的代码仓库。
初学者可能对于上述概括不太理解,希望读者带着这些疑惑,在后续的学习中不断体会和领悟。
鉴于的高度灵活性,对于究竟是什么这个问题,完全应由用户根据自己对其理解和体会归纳出来。
用户体会越深,使用越灵活,越表明在使用上正在逐步达到较高层次.
学习的起点
严格来说,不同用户有不同的基础,也都有适合自己的学习方法。
但也有不少用户反映难学,或者难以学得深入。
甚至一些用户在使用一段时间后,感觉其纷繁复杂而无从下手,或者困惑于究竟是否要先完整学习有限元理论而裹足不前.笔者认为,拥有工科本科的知识基础(有限元基础,计算机知识基础),再适当补充有限元的基本数学知识都是可以学好的,问题的关键是找到学习的起点。
我们的工作和学习常常因为没有积极的进步(如成果、成就感等)作为激励而缺乏兴趣、难以坚持。
很多人执迷于电子游戏的主要原因正是可以随时获得 “晋级”等“奖赏”作为动力.另一方面,这些“晋级”或“奖赏”所带来的成就感又逐渐成为游戏玩家的目标.这就提示我们,明确的目标和不断进步的正反馈是一个重要的动力之源。
对于大多数用户来说,学习不是目标,使用解决专业问题才是目的.在学习时最好一开始就结合自己的研究任务,也就是直接把待解决的问题作为自己的学习实例,而不是一味地做书本上现成的简单实例。
这样,使用就有了明确的目标.在解决问题这一目标的吸引下,边用边学,遇到问题随时思考、咨询。
到了最后目标问题解决之日,也就完全学会了。
当然,可能有些用户习惯于先把所有有限元知识都学懂了才敢学,然后再去解决实际问题。
但笔者认为,这不是研究阶段的工作方法。
学习的主要目的还是为了解决问题,在问题没有解决的时候盲目地学习自己认为可能用到的知识将会花费过多的时间,最后可能会发现对解决问题并没有直接帮助.因此,效率最高的方式就是在有了必需的基础后,边干边学边思考,把学习贯穿于研究、解决具体的实际任务当中。
为什么用,谁用
应用有限元方法和程序,当前不外乎几种情况:
一种是购买和使用大型商业有限元程序;一种是完全自己开发和使用有限元程序;第三种则是从别处(如导师或其他人)获得别人的有限元程序代码,在使用过程中加以修改丰富以满足自己的要求.另一方面,从需求者的角度而言,可以分为两类,一类是对灵活性要求较高的,比如科研应用;一类是对灵活性的要求不那么高的,比如多数工程领域的应用。
对用户而言,软件只是实现目标的工具.然而目前软件工具真可谓汗牛充栋,即便同一个领域,比如有限元领域,也存在非常多的选择。
每个软件都有自己的特色,也都有自身的局限性。
选择软件一看能否满足自己的需求,二看该软件能否更好地满足需求,比如能否更高效地、更高质量地完成自己的目标。
即便如此,如果没有前人指导,面对众多软件做出一个合理的选择有时也的确是一件费心的事情。
当前国际上有大量功能强大的有限元软件包可供使用。
,,,等鼎鼎大名的大型通用有限元软件占据了国内有限元软件的很大市场.在这种情况下,为什么国产的系统日益获得了较多的应用呢?
事实上,许多学者在做研究时发现,尽管商业通用软件功能强大,使用方便友好,但是,在处理实际问题中的需求是千变万化的,很多情况下,这导致通用软件并不完全通用。
比如,研究人员想修改程序的算法,或者想修改一下控制方程,甚至有时连想增加一个补充方程(如本构模型)都很难做到。
这是由于商业软件不是完全开放的,用户不能直接修改程序的源代码.仅仅依靠用户子程序或内嵌语言等开放接口所提供的灵活性是远远不够的.
事实上,这些大型商业软件的特点是,通常只针对有限的几类特定问题(特定的数学模型),一旦编译封装成可执行代码,程序就无法改变,其功能便固定了。
然而用户在处理实际问题中的需求是千变万化的,特别是在科学研究中,这种变化更是难以预测.尽管这些商业软件提供了二次开发的接口,并且进行不断的升级,但是对用户而言它始终是黑匣子,因此仍然无法适应实际问题的多样性和多变性,尤其是控制方程发生变化的场合。
程序的使用者无法完全地直接操纵软件内部代码是这类软件的主要缺点.事实上,从大型商业程序出现之前直至现在,国内外许多学者都在针对各自的研究领域编写自用的有限元程序。
这样,在研究中可以随时根据需要而自由地修改代码,具有极大的灵活性和适用性。
甚至一些具有共享精神的学者将程序源代码奉献出来,这就是开源有限元程序。
当前,在网络的开源社区甚至一些机构将有限元程序源代码公布出来给大家免费使用、测试,有效地弥补了商业闭源软件的缺点,极大地促进了有限元法的研究和普及。
然而这类开源程序往往注释不够,其他用户难以理解诸多代码细节,也给用户修改和使用程序造成了一定的困难.
图定量创新性科学研究的
数学模型范式
不仅提供源代码,而且不用像使用常规开源代码那样在纷繁芜杂的代码中穿梭,因为它提供了一套代码快速开发机制,用户只须填写少量的脚本语言文件,就可以自动生成完整的源代码.从这个角度讲,实际上具有高效地帮助用户构建有限元程序系统的能力,并且十分容易维护和修改[]。
因此,对于进行创新性科研并且对软件的灵活性要求较高的研究人员、有限元程序内核的开发人员、特别是有限元教学中使用是非常合适的.当然,并非只有这类人才适合用,实际上,任何使用有限元方法进行数值计算和模拟的用户都可以使用。
的特色及其应用模式
1。
4.1定量科学研究的数学模型范式
科研讲求创新,研究新问题,提出新思想,利用新方法。
这就决定了科研中的问题是千变万化的。
定量科学研究是对事物由感性(定性)认识上升到理性(定量)认识的一个重要手段。
定量科学研究的一个典型范式就是基于数学模型的研究方法,如图所示。
当前大量的科学研究是基于上述范式的.这就意味着实际研究中具有大量有限元程序的应用需求.这些大量的需求又是千变万化的,很难有软件能满足全部学科领域的所有需求.即便是同一专业,具体研究也需要软件具有较大的灵活性。
但有限元程序的编写是相对复杂的(依赖于人员素质,所采用的开发工具、投入等),即便一个很小的程序也可能花费一个人许多时间,这在当前讲究效率和速度的时代,要求每个学者都开发出一套自己的程序是不太现实的。
需要指出的是,许多研究人员,特别是硕士和博士研究生,几乎很少需要完整地进行上述各个环节的研究,由于时间或者其他因素,大多数只进行其中的一个或者几个环节,譬如有的专注于做试验,有的专注于理论研究,有的专注于数值计算方法,还有的专注于代码编写。
而其中的程序编写环节可能是最耗时费力的,而这可能又不属于大多数人需要创新的地方.早期的学者由于既有的研究积累较少,可能每个环节都需要亲力亲为,但目前来看,即使有个别学者需要完成各个环节,但也不需要每一个环节都要有创新性的内容.这就意味着,在一个或者几个非创新性的环节上可以借鉴前人的研究基础,从而节省自己的研究时间。
一些人员比较幸运,有前辈或者师兄师姐的工作可以作为基础,自己只要专注于某一项创新性工作即可,大大加快了自己的研究进程。
然而,幸运的人毕竟有限,有大量研究人员尤其是研究生是从“一无所有”开始进行研究的。
因此,熟练掌握一套有限元程序代码对提高创新性研究的效率是大有裨益的。
1。
4.2的特色及应用模式比较
区别于其他有限元软件的第一大特色便是开源,并且这种开源是通过代码自动地生成来实现的,可以随着用户需求自动地动态变化.笔者把这种开源称为“适应性开源”。
然而这里所谓“开源”,并不是说这个软件本身是开放源代码的,而是说利用该软件开发的“产品"(有限元程序)就是源代码,并且版权属于开发者。
拥有了代码的全部自主权,用户使用这些代码就像使用自己编写的程序一样,拥有极大的灵活性。
从这个角度讲,用户可以把当作一个代码开发工具来使用,这一点和微软的 有些相似,即和 都是开发软件(或程序)的软件,并且给用户提供了一些高效的辅助开发工具。
的另一特色是通用性。
它是基于有限元方法的一般数学原理开发的,因此具有本质的通用性。
由于各个学科领域的问题通常归结为微分方程数学模型,而恰恰是利用有限元方法求解微分方程的,因此,从理论上讲,任何学科领域的学者都可以使用它。
我们在新接触一款软件特别是大型有限元软件的时候,即使软件做得用户友好程度非常高,仍然感觉难以下手,或者说不知道这个程序有什么样的使用步骤和原则,这实际上就是这个软件的应用模式的问题。
懂得了一个软件的使用模式就抓住了该软件的使用思想和使用哲学,在具体应用中可以发挥积极的指导作用,不至于只会照猫画虎而不会灵活运用。
许多大型商业软件具有相似的使用模式,即编写输入文件,提交分析,获得分析结果。
但是具体到某个软件,这个过程还是有差别的.鉴于的特色,其应用模式必然和其他有限元软件有所不同。
下面通过图中的对比来体会的这种由其特色决定的应用模式。
从图可以看出,作为一个软件开发工具,具有和极其相似的应用模式,如果熟悉 开发,则很容易理解这一点。
可以随时随地对用户的数学模型进行程序生成、修改以实现用户的目的,它并不需要维护一个巨大的模型库。
而通用商业程序的应用模式则不同,它恰恰需要维护一个庞大但有限的数学模型库,一旦软件开发完毕,其能够解决的模型就是有限且固定的,因此其应用模式也是单一的,即用户只需要按照其输入要求填写输入数据文件然后提交给程序分析即可.当然,这些商业软件通常还给用户提供了较为友好的使用界面以增加直观性,简化使用难度,例如给出良好的图形用户界面()等.但是单纯的图形用户界面往往又不能完全实现(描述)程序的功能,因此还是要借助于输入数据文件(如中的文件)才是最根本的。
的灵活性恰恰是因为增加了一个代码开发过程,可以对各个学科出现的数学模型随时进行代码开发,形成新的计算内核。
这相当于不仅可以做改变计算参数和几何模型这类的计算,还可以改变程序的控制方程,只不过这种改变是以完全重新自动生成(编写)代码的方式来实现的。
这种以代码自动生成技术为基础的以不变应万变的思想在灵活性方面是传统软件难以企及的。
()典型应用模式 ()典型应用模式 ()通用商业软件应用模式
图与及通用商业软件的应用模式对比
主要有以下几种使用方法.
()用户文件法(笔者称之为“自由模式”)。
即用户填写所要求的全部脚本文件,然后通过命令提交给内核进行程序生成.
()公式库法(或向导方法,【】→【】)。
所谓公式库,就是针对一些典型的应用问题,软件已经为用户准备好了各个问题的脚本文件,对于这些问题,用户不必亲自去研究和编写脚本文件了,而是直接使用公式库里的这些文件就可以工作了。
而这里的“使用”,仍然是通过向内核提交这些脚本文件,然后生成程序.只是这些程序已经过严格的测试,程序生成后用户直接输入数据就可以进行数值计算了,这种方法与商业的使用很类似(当然商业没有代码生成过程)。
另外,用户还会感觉到的一个区别是,在向内核提交这些文件时,使用的操作是不同的,公式库法是直接通过界面操作,而用户文件法是利用(或)命令。
当然,这不是本质区别,对于模式,由于其脚本文件都被置于安装文件下,也可以将这些脚本文件拿出来用(或)命令进行生成。
()“系统算例库”模式(【】→【】).
这种应用模式和公式库方法是很相似的,主要区别是,利用这种模式不仅生成了全部的源程序并编译成了可执行程序,而且连前后处理以及计算数据都准备好了,用户直接执行命令就可以计算并得到计算结果.换句话说,这种模式是系统在公式库方法的基础上又为用户增加了一些便利,用户只需要根据自己的问题修改数据和对几何模型进行前处理就可以了。
()“用户算例库模式”。
用户在使用过程中开发成功的一些算例可以保存在系统中,将来如果遇到类似的应用则可以直接使用(将成功算例保存在系统中的好处是从界面提供了一个使用自己历史资源的简单途径,当然这并不是必须的,还可以保存在自己的任意文件下,将来直接拿来使用).
显然,利用()~()这几种模式,实际上是在利用系统、他人或者用户自己已有的成果,免去了重复劳动,显然具有很高的效率.
第()种模式是软件开发模式,其他几种模式则和传统的应用模式类似。
从本质来看,自由模式是本质方法,其他几种模式都要归结到这个方法上来。
从图中还可以看到,的使用模式实际上包容了通用商业软件的应用模式.这就是说,既可以作为一个软件开发工具来使用,也可以作为一个普通的软件来使用。
例如,只要对生成的各种模型程序进行适当的整理和打包,然后提供一个友好统一的用户界面,就可以开发出一个较为通用的软件。
1。
4.3 自由模式及其文件准备
在上述的自由模式下,的具体使用如图所示[]。
内核通过脚本文件来生成全部有限元源代码程序。
但对于用户来说究竟哪些脚本文件是必须的,哪些是根据情况选择的,还是很复杂的.详见表.
表 程序生成时用户填写的脚本文件选择
版本
脚本文件选择
备 注
必 须
可选
视情况选择
, (),
, ,,,
,()
,, , ,
此三行分别为各自独立的
选择
, ()
,,,
, , ()
, ,, ,
图系统有限元源程序生成及具体应用模式
有限元语言
从图可以看出,使用,用户所要做的主要工作就是在分析其数学模型的基础上,正确编写所要求的脚本文件。
这些脚本文件的作用就是对数学模型及其求解算法按照严格的语法格式进行系统的描述,用户通过这些脚本文件使用系统的功能,因此,这些文件的内容构成了用户与系统交流的“语言".如果把这些脚本文件看作程序,则其内容显然就构成了系统专用的脚本语言。
由于这些语言的功能是用于描述有限元程序生成请求的,因此称为“有限元语言”。
结合图可以看出,及其提供的有限元语言改变了有限元程序的开发模式。
用户由直接利用高级编程语言(如、等)开发有限元程序变成了填写脚本语言,生成程序后做适当的修改,这大大减少了代码工作量。
因此,有限元语言对于用户来说是一种比高级语言更高一层的语言。
梁国平教授指出[]:
有限元语言是一种采用有限元方法和有限体积法求解偏微分方程的模型语言,采用这种语言编写有限元和有限体积程序,主要工作就是书写微分方程表达式及其有限元有限体积法的具体算法,然后由该语言的生成器(生成系统)自动产生某种高级语言(如、等)的有限元有限体积计算程序。
广义地讲,计算机语言就是一个人与计算机交流的工具。
有限元语言是面向特定领域的模型语言,是一种更高级的计算机语言。
计算机语言的发展是一个不断演化的过程,其根本的推动力就是对抽象机制的更高要求,以及对程序设计思想更好的支持。
具体来说,就是把机器能够理解的语言提升到能够很好地模仿人类思考问题的形式。
计算机语言的演化经历了多个阶段,如从最初的机器语言到汇编语言,到各种结构化高级语言,到面向对象语言,直到现在的面向领域的模型语言[]。
模型语言是一种高度抽象化的语言[](这里所说的抽象表示“概括”的意思),可以说是目前抽象程度最高的一种计算机语言,比其他高级语言都更接近于人类的自然语言.使用有限元语言编程就像是使用自然语言描述问题一样简单易懂,其描述有限元问题的方式就像写公式一样简单。
对用户而言,使用提供的有限元语言,就是要编写的脚本文件。
系统内核类似于传统高级语言的编译器。
有限元语言和高级语言的对比如表 所示.
表 有限元语言和高级语言的对比
语言
项目
有限元语言
高级语言
(,等)
源文件
脚本文件
高级语言源文件
编(翻)译器
内核命令
各高级语言厂商
提供的专用编译器
编(翻)译目标
()码源文件;
()源文件对应的(高级语言的)编译连接批命令文件;
二进制文件
连接
脚本文件无需连接
连接成二进制可执行程序
产品进一步使用
进一步对生成的高级语言文件进行开发(即接下来再按右栏的“高级语言”开发过程进行)
调试、验证
与使用
的历史与版本
1.6。
1 的历史
历史就是文化,懂点历史对于全面了解一个事物是很有好处的。
系统是由中国科学院数学与系统科学研究院梁国平研究员独立发明的。
梁先生于年毕业于南开大学数学系,同年进入中国科学院数学研究所工作,后兼任美国加州大学伯克利分校客座教授。
梁先生长期从事有限元算法理论及应用以及有限元软件的研发工作.年被中科院数学研究所派往美国学习,进入卡内基·梅隆大学数学系做访问学者,一年后转到加州大学伯克利分校土木工程系。
在加州大学学习的一年期间,师从有限元软件的创始人之一教授。
当时教授研究的是上的有限元软件,采用元件化技术(组件化技术),具有很大特色。
通过这种技术,可以在当时计算机硬件系统配置较低尤其是内存较小的情况下进行规模较大的有限元计算.这是梁先生最开始接触有限元计算,他接受了教授的这种元件化有限元程序设计思想.
年梁先生归国后即着手系统的研究。
在研究中吸收了元件化程序设计方法的思想后,也发现教授当时研究的有限元软件只能把既定的程序给用户使用,不能按照用户的需求而更改。
一旦修改就要修改源代码,这个工作量是很大的。
换句话说,教授当时研究的有限元软件就是类似于前文提到的商业有限元程序,是固定数量的模型库,其灵活性、柔韧性和普适性都是不够的。
鉴于梁先生的数学背景,他知道有限元方法是求解一般微分方程的数值方法而不仅仅是求解结构问题的手段,因此想到能否从有限元方法最一般的数学原理出发,即从求解偏微分方程的角度来自动生成微分方程的有限元求解程序。
这样,任何微分方程问题都可以通过有限元求解了。
或者可以这样说明:
实际问题大多可以归结为微分方程的数学模型,而每个数学模型是千差万别的,理论上,只有每个模型都编写各自的求解程序才是最具有针对性和普适性的,但是这将带来工作量的极大增长,在一个软件中也是不可能实现的。
但是,由于根据有限元的通用数学原理采取了自动生成的技术,这样就让计算机来代替了用户的编程劳动,同时保持了对每个模型编写程序从而适应性最大这个优势.这些正是诞生的最初灵感。
这种思想和技术的出现直接改变了传统的有限元程序开发模式,大大提高了程序开发效率。
经过年的探索与努力,梁先生在年完成了自动生成系统的线性部分,两年之后实现了非线性部分,有限元程序自动生成系统正式完成。
从年开始,加州大学开始试用系统,并取得了一系列高质量的科研成果.年,有限元程序自动生成系统被授予国家科学技术进步二等奖。
随后,在数学家杨乐院士的支持下,梁先生准备把这个技术商业化,并于年成立了北京飞箭有限元技术开发有限责任公司。
年,北京飞箭软件有限公司正式成立,梁先生亲自担任总经理兼总工程师,开始了的产业化进程。
目前,系统经过持续不断的开发和多次版本升级,已经形成了多个系列、跨多个软硬件平台的多版本产品。
如在年推出了基于互联网的有限元生成系统,年开发成功并行计算程序的高性能计算平台。
年推出版本,包括单机、网络、并行版.系列产品目前最新版本是。
1.6.2产品系列
也许用户只用其中的一个版本,但是对系列产品有个总体的认识是有益的。
针对当前计算机硬件、操作系统、编译系统以及网络的发展,开发了一系列的产品满足不同用户的需求.下面概要介绍的产品系列。
表给出了当前版本的系统的产品系列。
当前用得最多的是单机版本和网络版。
表 产品系列
产品系列
说 明
.
单机版
()
单机串行版()
用于单的
单机多核版()
用于多核
网络版
(或)
客户端为
基于客户服务器模式,通过使用远程服务器
并行版
()
面向机群
同时支持应用
网络版和单机版的使用方式差异极小,在模型文件的编写上更是完全相同,只是在程序生成时前者要通过网络命令上传到服务器端生成程序然后再下传到本机,而后者则是直接在本机上运行系统命令进行程序生成.至于并行版,其使用模式一般是先对模型利用单机串行版进行试算,在算法和结果等正确后,再生成并行程序计算,并且填写的文件和串行版大同小异。
因此,用户仍然需要填写和串行版类似的脚本文件,可见,从使用角度而言串行版是并行版的基础.
本书以串行版(标准版)为主要平台进行讲解,在操作上同时兼顾网络版,在必要时加以说明.
1.6.3 的软硬件环境
的硬件环境和软件环境详见表和表。
表的硬件配置环境
产品模块
硬件配置
位或位体系结构的各种处理器
位支持
√
√
多处理器(多核)支持
可运行。
但无多线程
完全多线程并行
安装所需磁盘空间
表 的软件配置环境
产品模块
支撑环境
操作系统
编译器
●
●
●
●
数学库
不需要
不需要
所提供的有限元语言具有广泛的跨各种软硬件平台的特性,只要安装相应的系统,对于用户来说,就可以按照统一的方法填写脚本文件,然后在各种平台上生成相应的源代码.
从安装开始
1.7。
1安装及配置经验
软件的应用从安装开始,软件的学习、研究和剖析也应从安装开始。
只有安装并配置好其运行环境,才能正常使用进行工作.系统的安装本身极其简单,但用户特别是初学者在使用过程中仍然可能遇到麻烦.用户安装和配置系统可能是以下几种情形:
()第一次安装和配置;()中途发现不能正常工作后重新安装和配置;()安装在非系统盘上,在重装系统后是否需要重新安装配置问题.本节先介绍前两个问题,第()个问题放在1.7.2节中阐述。
我们选择 进行安装配置.如果是第一次安装和配置,具体步骤如下.
():
将 和安装文件均复制到以英文命名的目录下,如都直接复制到盘根目录“:
\”下。
说明:
根据经验,为了减少不必要的麻烦,这一招很有效.
():
安装,可以选择默认安装。
说明:
用户也可以根据自己的需要选择定制安装。
安装的目标文件夹最好默认.安装完毕后选择更新环境变量,但是通常由于某些未知的原因,环境变量并未被更新.因此,建议用户将、和三个环境变量手动设置一下,记住在用户环境变量中设置,而不要在系统环境变量中设置。
并且这些路径最好放在各自环境变量的“变量值"的第一个。
也许这不是必要的,但是许多用户可能同时会安装这些软件,笔者的经验是,如果的环境变量不放在第一位置,通常不能成功编译生成的程序,为了方便,干脆统一放在第一位置处。
配置完毕后,一定要重新启动计算机,让设置生效,切记!
():
对于单机版,须插入软件狗。
():
双击的安装文件,根据向导自动完成.其间要求用户提供安装目录和配置数据,用户可以酌情填写。
说明:
安装的目标文件夹(目录)在安装之前无须提前建立。
在此处可以输入要安 装的目录。
为了避免不必要的麻烦,建议安装的路径最好简单,不宜太长,不要包含中 文目录名,目