许建宏,王 坚,凌卫青
XU Jian-hong, WANG Jian, LING Wei-qing
(同济大学 CIMS研究中心,上海 201804)
我国所拥有的具有自主知识产权的高温气冷堆核电技术,是在我国“863计划”支持下取得的重大高新技术成果,是我国自主开发的新一代核能发电技术。高温气冷堆核电站燃料球输送用氦气压缩机组可用于氦气透平直接循环、直接联合循环及间接联合循环等多种方式,是高温气冷堆核电站中的关键配套设备之一。利用信息化技术,开展高温气冷堆核电站燃料球输送用氦气压缩机组的创新研发,对于形成我国的自主知识产权和相关专利,进一步进行清洁能源核能的开发均有重大意义。
高温气冷堆核电站燃料球输送用氦气压缩机组要求结构紧凑、系统复杂、工作条件苛刻,涉及冷却系统、滤油纯化系统、安全保护系统,其研发具有较高的技术含量和产品创新性。在其产品设计过程中,必须对压缩机组内相关部位的温度场分布、机械应力、振动频率等进行计算机辅助工程分析(CAE)。目前主流的工程分析软件主要是NASTRAN。然而,在应用NASTRAN进行产品研发的过程中,主要面临以下两个问题。
1)设计分析活动的分散性,使得针对固定的工程分析流程,传统的NASTRAN工程分析需要每一个客户端都安装分析软件,多台安装需要高昂的成本,企业难以负担。__
2)工程计算结果缺乏有效的组织管理和重用。以往的计算结果大多掌握在分析人员个人手上,难以共享和重用,导致重复分析计算现象频频发生,设计周期耗时过长,分析效率低下。
综上所述,需要研究相应产品设计分析平台,通过工程分析过程管理、跨平台远程计算和工程分析数据管理等,实现工程分析高效管理,完成企业知识积累。
随着对远程工程分析奢求的日益迫切,以及相关技术研究的深入,很多软件公司也都陆续推出了自己相关的软件产品。
MSC公司推出的SimManager是企业级仿真业务管理平台。其采用了面向服务架构(SOA:Service-Oriented Architecture)的概念,遵循模型-视图-控制器相分离的MVC模式,将各种应用组件部署在一个共同的服务平台上,可通过胖客户端(基于应用程序)或者瘦客户端(基于浏览器)进行访问。
HP公司也推出了自己的远程图形软件RGS(Remote Graphics Software)。其默认使用微软远程桌面协议(RDP)作为客户端和服务器之间的连接协议。RGS中客户端对服务器上计算资源的调用会实时显示在客户端,由于采用比较良好的图形压缩技术,客户端的画面相对服务器端画面并不会有太大的失真,操作直观。
但是这些软件价格昂贵,而且体积庞大,功能臃肿,需要专业人员操作,且对硬件要求很高,对企业而言往往是另一种沉重的负担。
对象序列化技术是Java语言用于实现轻量级持久性(lightweight persistence)的一种解决方案。“持久性”意味着一个对象的生存周期并不取决于程序是否正在执行,持久化之后它可以生存于程序的调用之间。
对象序列化的概念加入到语言中是为了支持两种主要特性,一种是Java的远程方法调用(Remote Method Invocation, RIM),它使存活于其他计算机上的资源使用起来就像使用本机资源一样。当向远程对象发送消息时,需要通过对象序列化来传输参数和返回值。再一个就是用于Java Beans,使用一个Bean时,通常要在设计阶段对它的状态信息进行配置,并保存,在程序启动时进行后期恢复,这种具体的工作就要对象序列化来完成。
对象序列化一个重要限制是它只是Java的解决方案:只有Java程序才能反序列化这种对象(有一种更具互操作性的解决方案是将数据转换为XML格式,这可以使其被各种各样的平台和语言使用)。
Java序列化机制是通过Serialization API框架来实现的。只要对象实现了Serializable接口,对象的序列化处理就较简单了。要序列化一个对象,首先要创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内。这时,只需要调用writeObject()即可将对象序列化,并将其发送给OutputStream。反向进行,将一个InputStream封装在ObjectInputStream内,然后调用readObject()即可实现反序列化。
Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,它基于Java技术开发,由Servlet容器所管理。和运行在客户端浏览器中的Applet相似,Servlet运行在服务器端,可以动态地扩展服务器的功能,并且采用“请求—响应”模式提供服务。
Servlet通过创建一个框架来扩展服务器的能力,以提供请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。
Java Servlet开发工具(JSDK)提供了多个软件包,其中包括两个用于所有Servlet的基本软件包,分别是java.servlet和java.servlet.http。servlet都实现了java.servlet.Servlet接口,内含有service(),init(),destroy()方法等。
在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,可以配置服务器,无论有多少客户机访问Servlet,都不会重复执行init()。
service()方法是Servlet的核心,每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。Servlet的响应可以是下列类型:一个输出流或者是一个HTTP错误响应,以重定向到另一个Servlet等。
destroy()方法仅执行一次,在服务器停止且卸装Servlet时执行该方法。典型的时将Servlet作为服务器进程的一部分来关闭。默认的destroy()通常是符合要求的,但也可以覆盖它,典型的就是重写以管理服务器端资源。
Servlet的整个生命周期大致如图1所示。
图1 servlet生命周期
计算机辅助工程分析(Computer Aided Engineering, CAE)一般是指用计算机辅助求解分析复杂工程和产品的结构力学性能,以及优化结构性能等。CAE软件的主体是有限元分析(Finite Element Analysis, FEA)软件。基于有限元方法的CAE系统,其核心思想是结构的离散化。
应用CAE软件对工程和产品进行性能分析和模拟时,一般要经历三个过程:
1)前处理:对工程或产品进行建模,建立合适的有限元模型。
2)有限元分析:对有限元模型进行计算求解。
3)后处理:将求解结果以图形方式提供给用户,以辅助判定设计方案合理性。
美国的MSC公司开发的MSC.PATRAN和MSC.NASTRAN软件为CAE提供了一整套的较为优秀的、主流的解决方案。目前对氦气压缩机组产品的工程分析就是采用此方案进行。
MSC.PATRAN专注于有限元分析的前处理和后处理,功能强大,界面美观直接。并且提供了PATRAN命令语言(PATRAN Command Language,PCL)可用于用户自定义模型处理。通过PATRAN进行前处理后,得到.bdf文件,作为NASTRAN进行计算的输入文件。
启动NASTRAN软件,指定计算求解的.bdf文件,输入求解控制的命令参数。命令参数一般可以用于控制NASTRAN的输出文件存放位置、数据库文件存放位置等。其格式一般为:
nastran keyword1=value1keyword2=value2…
NASTRAN解算完毕后,会输出.op2、.xdb、.f04、.f06、.log等文件,其中.op2和.xdb可以被PATRAN读入,以进行有限元分析的后处理,将结果以图形的形式输出;.f04是系统信息统计文件;.f06是分析运算信息记录文件,.log则是处理日志。
产品设计分析环境(Product Design & Analysis Environment, PDAE)是由同济大学CIMS中心研发的,以上海市科委重大项目(08DZ1120802、09DZ1124402、09DZ11201026)为背景,面向我国设备制造企业的产品设计分析流程的管理领域,综合管理产品的设计分析流程、分布式计算资源、数据信息和知识等。该系统支持需求分析、设计分析流程定义、任务分配、计算资源配置与管理和知识重用等。
系统采用JAVA EE架构,利用ECLIPSE平台上的RCP技术实施。并贯彻了模型-视图-控制器相分离的MVC模式,用户界面主要用SWT/JFACE开发,中间层则利用SPRING框架,实现控制流程;底层数据持久化则采用HIBERNATE方案,功能强大,开发速度快,强度较低。
系统有两大核心功能,一是基于工作流驱动的任务管理平台,另外一个就是分布式计算资源管理系统。PDAE系统通过对设计分析过程中的流程、知识和数据的系统化集成和整合,实现了协同设计与相关计算资源的无缝对接,构成了企业的产品设计研发管理平台。
系统采用了三层工程分析支持系统体系框架,分别是应用层,管理层和资源层。提供了一个分布式、跨平台的集成统一界面,方便工程设计分析人员对不同计算资源的调用。
NASTRAN计算资源位于服务器端,可以通过Servlet技术对其进行调用。但是NASTRAN运行时,要输入相应命令参数,且要指定输入文件.bdf文件位置所在。因此可以考虑使用NASTRAN所提供的批处理文件的功能,首先将根据对应参数生成批处理文件,然后用Servlet技术监听对于此批处理文件的请求,并进行响应。
调用NASTRAN的批处理文件一般格式如图2所示。
图2 调用NASTRAN的批处理命令
如果有多个解算任务需要一个一个执行,则可在mdnastran c:....ws1.bdf out…这行语句后面依次添上类似命令,指定各任务的.bdf文件和相应命令参数即可。
若是想NASTRAN同时进行多个任务的解算,则要调用的是NASTRAN安装文件中的mdnastranw.exe文件,而不是mdnastran.exe,更改相应命令即可。
执行此批处理文件后,NASTRAN即开始正常工作,如图3所示:
图3 NASTRAN运行界面
首先,在PDAE客户端完成对需要进行网络传输的可序列化对象的相关信息的写入:
1)新建一个可供网络传输的可序列化的对象
S h e l l E x c e C o m m a n d 2 c m d =shellExecCommand2();
其中,ShellExceCommand2实现了Serializable接口,因而是一个可序列化对象。
2)对可序列化对象设置相关信息及参数
cmd.setMethodPath(resourcebatpath);
cmd.setServerType(serverType);
…
3)客户端尝试向远程服务器端发送HTTP请求:
客户端向指定IP发送请求,以期望被远程服务器端的servlet监听到,并进行相应响应。该过程在ShellExceCommand2对象的sendCommand()方法中完成:
cmd=cmd.sendCommand(“http:// ”+serverip+“:8081/PDAEServer/execute/exe”);
其次,服务器端部署在容器中的servlet将完成监听连接请求,获取初始可序列化对象,调用计算资源进行计算,根据计算结果重置可序列化对象相应字段等工作。
(1)监听连接请求
Servlet是部署在容器中,容器通过某种映射关系将servlet映射到每个具体的URL。在servlet中,所有的这些映射工作都放在项目工程里的WEBINF文件夹下的web-xml文件中。
(2)获取初始可序列对象
远程服务器端监听到该请求后,获取序列化对象。部署servlet的容器通过servlet-URL映射关系找到对象cmd的servlet,加载该servlet的实例,并调用对应init()方法,之后,调用service()方法,找到对应NASTRAN的批处理文件,运行批处理文件,调用NASTRAN计算资源进行解算。
(3)获得计算结果并重置相应字段
获取可序列化对象,计算之后,重置可序列化对象中的tempFileOut字段以更新输出文件结果。在execute()结束前,利用传入execute()方法中的HttpResponse参数重新获取可序列化对象的输出流,并将this实例重新写入,从而实现在完成远程计算后,重置该可序列化对象的功能。
Public void execute(HttpServletResquest,HttpServletResponse response)
Throws Exception
{//执行批处理文件
…
O b j e c t O u t p u t S t r e a m o u t p u t =n e w
ObjectOutputStream(response.getOutputStream());
Output.writeObject(this);
}
服务器端结束完毕后,将计算结果上传至FTP服务器进行保留,并通过HTTP协议复制一份拷贝至客户端,从而得以在客户端显示输出文件内容。
利用PDAE平台,用户可以直接调用服务器端的NASTRAN软件实现远程工程分析,而无须每台客户机都安装,节约大量成本。且分析的输入文件和输出文件均在服务器端进行统一管理,大大减少了文件管理难度,提高分析效率。
[1] 孙长任,杜家政,卢绪智,石可重.MSC.NASTRAN应用实例教程 [M].科学出版社.2005.
[2] 凌卫青,王坚.面向大容量电站锅炉产品研发的工程分析支持系统[J].计算机集成制造系统.2010.4.16(4):738-744.
[3] 陈菁菁,姜源.TOMCAT原理与JAVA WEB系统开发[M].清华大学出版社.2009.
[4] 陈刚.ECLIPSE从入门到精通(第2版)[M].北京:清华大学出版社.2001.
[5] MSC Software Corporatio. MSC SimManager http://www.mscsoftware.com/Products/Virtual-Build-And-Test-Management/SimManager.aspx