許建宏,王 堅(jiān),凌衛(wèi)青
XU Jian-hong, WANG Jian, LING Wei-qing
(同濟(jì)大學(xué) CIMS研究中心,上海 201804)
我國所擁有的具有自主知識(shí)產(chǎn)權(quán)的高溫氣冷堆核電技術(shù),是在我國“863計(jì)劃”支持下取得的重大高新技術(shù)成果,是我國自主開發(fā)的新一代核能發(fā)電技術(shù)。高溫氣冷堆核電站燃料球輸送用氦氣壓縮機(jī)組可用于氦氣透平直接循環(huán)、直接聯(lián)合循環(huán)及間接聯(lián)合循環(huán)等多種方式,是高溫氣冷堆核電站中的關(guān)鍵配套設(shè)備之一。利用信息化技術(shù),開展高溫氣冷堆核電站燃料球輸送用氦氣壓縮機(jī)組的創(chuàng)新研發(fā),對(duì)于形成我國的自主知識(shí)產(chǎn)權(quán)和相關(guān)專利,進(jìn)一步進(jìn)行清潔能源核能的開發(fā)均有重大意義。
高溫氣冷堆核電站燃料球輸送用氦氣壓縮機(jī)組要求結(jié)構(gòu)緊湊、系統(tǒng)復(fù)雜、工作條件苛刻,涉及冷卻系統(tǒng)、濾油純化系統(tǒng)、安全保護(hù)系統(tǒng),其研發(fā)具有較高的技術(shù)含量和產(chǎn)品創(chuàng)新性。在其產(chǎn)品設(shè)計(jì)過程中,必須對(duì)壓縮機(jī)組內(nèi)相關(guān)部位的溫度場(chǎng)分布、機(jī)械應(yīng)力、振動(dòng)頻率等進(jìn)行計(jì)算機(jī)輔助工程分析(CAE)。目前主流的工程分析軟件主要是NASTRAN。然而,在應(yīng)用NASTRAN進(jìn)行產(chǎn)品研發(fā)的過程中,主要面臨以下兩個(gè)問題。
1)設(shè)計(jì)分析活動(dòng)的分散性,使得針對(duì)固定的工程分析流程,傳統(tǒng)的NASTRAN工程分析需要每一個(gè)客戶端都安裝分析軟件,多臺(tái)安裝需要高昂的成本,企業(yè)難以負(fù)擔(dān)。__
2)工程計(jì)算結(jié)果缺乏有效的組織管理和重用。以往的計(jì)算結(jié)果大多掌握在分析人員個(gè)人手上,難以共享和重用,導(dǎo)致重復(fù)分析計(jì)算現(xiàn)象頻頻發(fā)生,設(shè)計(jì)周期耗時(shí)過長(zhǎng),分析效率低下。
綜上所述,需要研究相應(yīng)產(chǎn)品設(shè)計(jì)分析平臺(tái),通過工程分析過程管理、跨平臺(tái)遠(yuǎn)程計(jì)算和工程分析數(shù)據(jù)管理等,實(shí)現(xiàn)工程分析高效管理,完成企業(yè)知識(shí)積累。
隨著對(duì)遠(yuǎn)程工程分析奢求的日益迫切,以及相關(guān)技術(shù)研究的深入,很多軟件公司也都陸續(xù)推出了自己相關(guān)的軟件產(chǎn)品。
MSC公司推出的SimManager是企業(yè)級(jí)仿真業(yè)務(wù)管理平臺(tái)。其采用了面向服務(wù)架構(gòu)(SOA:Service-Oriented Architecture)的概念,遵循模型-視圖-控制器相分離的MVC模式,將各種應(yīng)用組件部署在一個(gè)共同的服務(wù)平臺(tái)上,可通過胖客戶端(基于應(yīng)用程序)或者瘦客戶端(基于瀏覽器)進(jìn)行訪問。
HP公司也推出了自己的遠(yuǎn)程圖形軟件RGS(Remote Graphics Software)。其默認(rèn)使用微軟遠(yuǎn)程桌面協(xié)議(RDP)作為客戶端和服務(wù)器之間的連接協(xié)議。RGS中客戶端對(duì)服務(wù)器上計(jì)算資源的調(diào)用會(huì)實(shí)時(shí)顯示在客戶端,由于采用比較良好的圖形壓縮技術(shù),客戶端的畫面相對(duì)服務(wù)器端畫面并不會(huì)有太大的失真,操作直觀。
但是這些軟件價(jià)格昂貴,而且體積龐大,功能臃腫,需要專業(yè)人員操作,且對(duì)硬件要求很高,對(duì)企業(yè)而言往往是另一種沉重的負(fù)擔(dān)。
對(duì)象序列化技術(shù)是Java語言用于實(shí)現(xiàn)輕量級(jí)持久性(lightweight persistence)的一種解決方案。“持久性”意味著一個(gè)對(duì)象的生存周期并不取決于程序是否正在執(zhí)行,持久化之后它可以生存于程序的調(diào)用之間。
對(duì)象序列化的概念加入到語言中是為了支持兩種主要特性,一種是Java的遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RIM),它使存活于其他計(jì)算機(jī)上的資源使用起來就像使用本機(jī)資源一樣。當(dāng)向遠(yuǎn)程對(duì)象發(fā)送消息時(shí),需要通過對(duì)象序列化來傳輸參數(shù)和返回值。再一個(gè)就是用于Java Beans,使用一個(gè)Bean時(shí),通常要在設(shè)計(jì)階段對(duì)它的狀態(tài)信息進(jìn)行配置,并保存,在程序啟動(dòng)時(shí)進(jìn)行后期恢復(fù),這種具體的工作就要對(duì)象序列化來完成。
對(duì)象序列化一個(gè)重要限制是它只是Java的解決方案:只有Java程序才能反序列化這種對(duì)象(有一種更具互操作性的解決方案是將數(shù)據(jù)轉(zhuǎn)換為XML格式,這可以使其被各種各樣的平臺(tái)和語言使用)。
Java序列化機(jī)制是通過Serialization API框架來實(shí)現(xiàn)的。只要對(duì)象實(shí)現(xiàn)了Serializable接口,對(duì)象的序列化處理就較簡(jiǎn)單了。要序列化一個(gè)對(duì)象,首先要?jiǎng)?chuàng)建某些OutputStream對(duì)象,然后將其封裝在一個(gè)ObjectOutputStream對(duì)象內(nèi)。這時(shí),只需要調(diào)用writeObject()即可將對(duì)象序列化,并將其發(fā)送給OutputStream。反向進(jìn)行,將一個(gè)InputStream封裝在ObjectInputStream內(nèi),然后調(diào)用readObject()即可實(shí)現(xiàn)反序列化。
Servlet(小服務(wù)程序)是一個(gè)與協(xié)議無關(guān)的、跨平臺(tái)的Web組件,它基于Java技術(shù)開發(fā),由Servlet容器所管理。和運(yùn)行在客戶端瀏覽器中的Applet相似,Servlet運(yùn)行在服務(wù)器端,可以動(dòng)態(tài)地?cái)U(kuò)展服務(wù)器的功能,并且采用“請(qǐng)求—響應(yīng)”模式提供服務(wù)。
Servlet通過創(chuàng)建一個(gè)框架來擴(kuò)展服務(wù)器的能力,以提供請(qǐng)求和響應(yīng)服務(wù)。當(dāng)客戶機(jī)發(fā)送請(qǐng)求至服務(wù)器時(shí),服務(wù)器可以將請(qǐng)求信息發(fā)送給Servlet,并讓Servlet建立起服務(wù)器返回給客戶機(jī)的響應(yīng)。
Java Servlet開發(fā)工具(JSDK)提供了多個(gè)軟件包,其中包括兩個(gè)用于所有Servlet的基本軟件包,分別是java.servlet和java.servlet.http。servlet都實(shí)現(xiàn)了java.servlet.Servlet接口,內(nèi)含有service(),init(),destroy()方法等。
在Servlet的生命周期中,僅執(zhí)行一次init()方法。它是在服務(wù)器裝入Servlet時(shí)執(zhí)行的,可以配置服務(wù)器,無論有多少客戶機(jī)訪問Servlet,都不會(huì)重復(fù)執(zhí)行init()。
service()方法是Servlet的核心,每當(dāng)一個(gè)客戶請(qǐng)求一個(gè)HttpServlet對(duì)象,該對(duì)象的service()方法就要被調(diào)用,而且傳遞給這個(gè)方法一個(gè)“請(qǐng)求”(ServletRequest)對(duì)象和一個(gè)“響應(yīng)”(ServletResponse)對(duì)象作為參數(shù)。Servlet的響應(yīng)可以是下列類型:一個(gè)輸出流或者是一個(gè)HTTP錯(cuò)誤響應(yīng),以重定向到另一個(gè)Servlet等。
destroy()方法僅執(zhí)行一次,在服務(wù)器停止且卸裝Servlet時(shí)執(zhí)行該方法。典型的時(shí)將Servlet作為服務(wù)器進(jìn)程的一部分來關(guān)閉。默認(rèn)的destroy()通常是符合要求的,但也可以覆蓋它,典型的就是重寫以管理服務(wù)器端資源。
Servlet的整個(gè)生命周期大致如圖1所示。

圖1 servlet生命周期
計(jì)算機(jī)輔助工程分析(Computer Aided Engineering, CAE)一般是指用計(jì)算機(jī)輔助求解分析復(fù)雜工程和產(chǎn)品的結(jié)構(gòu)力學(xué)性能,以及優(yōu)化結(jié)構(gòu)性能等。CAE軟件的主體是有限元分析(Finite Element Analysis, FEA)軟件。基于有限元方法的CAE系統(tǒng),其核心思想是結(jié)構(gòu)的離散化。
應(yīng)用CAE軟件對(duì)工程和產(chǎn)品進(jìn)行性能分析和模擬時(shí),一般要經(jīng)歷三個(gè)過程:
1)前處理:對(duì)工程或產(chǎn)品進(jìn)行建模,建立合適的有限元模型。
2)有限元分析:對(duì)有限元模型進(jìn)行計(jì)算求解。
3)后處理:將求解結(jié)果以圖形方式提供給用戶,以輔助判定設(shè)計(jì)方案合理性。
美國的MSC公司開發(fā)的MSC.PATRAN和MSC.NASTRAN軟件為CAE提供了一整套的較為優(yōu)秀的、主流的解決方案。目前對(duì)氦氣壓縮機(jī)組產(chǎn)品的工程分析就是采用此方案進(jìn)行。
MSC.PATRAN專注于有限元分析的前處理和后處理,功能強(qiáng)大,界面美觀直接。并且提供了PATRAN命令語言(PATRAN Command Language,PCL)可用于用戶自定義模型處理。通過PATRAN進(jìn)行前處理后,得到.bdf文件,作為NASTRAN進(jìn)行計(jì)算的輸入文件。
啟動(dòng)NASTRAN軟件,指定計(jì)算求解的.bdf文件,輸入求解控制的命令參數(shù)。命令參數(shù)一般可以用于控制NASTRAN的輸出文件存放位置、數(shù)據(jù)庫文件存放位置等。其格式一般為:
nastran keyword1=value1keyword2=value2…
NASTRAN解算完畢后,會(huì)輸出.op2、.xdb、.f04、.f06、.log等文件,其中.op2和.xdb可以被PATRAN讀入,以進(jìn)行有限元分析的后處理,將結(jié)果以圖形的形式輸出;.f04是系統(tǒng)信息統(tǒng)計(jì)文件;.f06是分析運(yùn)算信息記錄文件,.log則是處理日志。
產(chǎn)品設(shè)計(jì)分析環(huán)境(Product Design & Analysis Environment, PDAE)是由同濟(jì)大學(xué)CIMS中心研發(fā)的,以上海市科委重大項(xiàng)目(08DZ1120802、09DZ1124402、09DZ11201026)為背景,面向我國設(shè)備制造企業(yè)的產(chǎn)品設(shè)計(jì)分析流程的管理領(lǐng)域,綜合管理產(chǎn)品的設(shè)計(jì)分析流程、分布式計(jì)算資源、數(shù)據(jù)信息和知識(shí)等。該系統(tǒng)支持需求分析、設(shè)計(jì)分析流程定義、任務(wù)分配、計(jì)算資源配置與管理和知識(shí)重用等。
系統(tǒng)采用JAVA EE架構(gòu),利用ECLIPSE平臺(tái)上的RCP技術(shù)實(shí)施。并貫徹了模型-視圖-控制器相分離的MVC模式,用戶界面主要用SWT/JFACE開發(fā),中間層則利用SPRING框架,實(shí)現(xiàn)控制流程;底層數(shù)據(jù)持久化則采用HIBERNATE方案,功能強(qiáng)大,開發(fā)速度快,強(qiáng)度較低。
系統(tǒng)有兩大核心功能,一是基于工作流驅(qū)動(dòng)的任務(wù)管理平臺(tái),另外一個(gè)就是分布式計(jì)算資源管理系統(tǒng)。PDAE系統(tǒng)通過對(duì)設(shè)計(jì)分析過程中的流程、知識(shí)和數(shù)據(jù)的系統(tǒng)化集成和整合,實(shí)現(xiàn)了協(xié)同設(shè)計(jì)與相關(guān)計(jì)算資源的無縫對(duì)接,構(gòu)成了企業(yè)的產(chǎn)品設(shè)計(jì)研發(fā)管理平臺(tái)。
系統(tǒng)采用了三層工程分析支持系統(tǒng)體系框架,分別是應(yīng)用層,管理層和資源層。提供了一個(gè)分布式、跨平臺(tái)的集成統(tǒng)一界面,方便工程設(shè)計(jì)分析人員對(duì)不同計(jì)算資源的調(diào)用。
NASTRAN計(jì)算資源位于服務(wù)器端,可以通過Servlet技術(shù)對(duì)其進(jìn)行調(diào)用。但是NASTRAN運(yùn)行時(shí),要輸入相應(yīng)命令參數(shù),且要指定輸入文件.bdf文件位置所在。因此可以考慮使用NASTRAN所提供的批處理文件的功能,首先將根據(jù)對(duì)應(yīng)參數(shù)生成批處理文件,然后用Servlet技術(shù)監(jiān)聽對(duì)于此批處理文件的請(qǐng)求,并進(jìn)行響應(yīng)。
調(diào)用NASTRAN的批處理文件一般格式如圖2所示。

圖2 調(diào)用NASTRAN的批處理命令
如果有多個(gè)解算任務(wù)需要一個(gè)一個(gè)執(zhí)行,則可在mdnastran c:....ws1.bdf out…這行語句后面依次添上類似命令,指定各任務(wù)的.bdf文件和相應(yīng)命令參數(shù)即可。
若是想NASTRAN同時(shí)進(jìn)行多個(gè)任務(wù)的解算,則要調(diào)用的是NASTRAN安裝文件中的mdnastranw.exe文件,而不是mdnastran.exe,更改相應(yīng)命令即可。
執(zhí)行此批處理文件后,NASTRAN即開始正常工作,如圖3所示:

圖3 NASTRAN運(yùn)行界面
首先,在PDAE客戶端完成對(duì)需要進(jìn)行網(wǎng)絡(luò)傳輸?shù)目尚蛄谢瘜?duì)象的相關(guān)信息的寫入:
1)新建一個(gè)可供網(wǎng)絡(luò)傳輸?shù)目尚蛄谢膶?duì)象
S h e l l E x c e C o m m a n d 2 c m d =shellExecCommand2();
其中,ShellExceCommand2實(shí)現(xiàn)了Serializable接口,因而是一個(gè)可序列化對(duì)象。
2)對(duì)可序列化對(duì)象設(shè)置相關(guān)信息及參數(shù)
cmd.setMethodPath(resourcebatpath);
cmd.setServerType(serverType);
…
3)客戶端嘗試向遠(yuǎn)程服務(wù)器端發(fā)送HTTP請(qǐng)求:
客戶端向指定IP發(fā)送請(qǐng)求,以期望被遠(yuǎn)程服務(wù)器端的servlet監(jiān)聽到,并進(jìn)行相應(yīng)響應(yīng)。該過程在ShellExceCommand2對(duì)象的sendCommand()方法中完成:
cmd=cmd.sendCommand(“http:// ”+serverip+“:8081/PDAEServer/execute/exe”);
其次,服務(wù)器端部署在容器中的servlet將完成監(jiān)聽連接請(qǐng)求,獲取初始可序列化對(duì)象,調(diào)用計(jì)算資源進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果重置可序列化對(duì)象相應(yīng)字段等工作。
(1)監(jiān)聽連接請(qǐng)求
Servlet是部署在容器中,容器通過某種映射關(guān)系將servlet映射到每個(gè)具體的URL。在servlet中,所有的這些映射工作都放在項(xiàng)目工程里的WEBINF文件夾下的web-xml文件中。
(2)獲取初始可序列對(duì)象
遠(yuǎn)程服務(wù)器端監(jiān)聽到該請(qǐng)求后,獲取序列化對(duì)象。部署servlet的容器通過servlet-URL映射關(guān)系找到對(duì)象cmd的servlet,加載該servlet的實(shí)例,并調(diào)用對(duì)應(yīng)init()方法,之后,調(diào)用service()方法,找到對(duì)應(yīng)NASTRAN的批處理文件,運(yùn)行批處理文件,調(diào)用NASTRAN計(jì)算資源進(jìn)行解算。
(3)獲得計(jì)算結(jié)果并重置相應(yīng)字段
獲取可序列化對(duì)象,計(jì)算之后,重置可序列化對(duì)象中的tempFileOut字段以更新輸出文件結(jié)果。在execute()結(jié)束前,利用傳入execute()方法中的HttpResponse參數(shù)重新獲取可序列化對(duì)象的輸出流,并將this實(shí)例重新寫入,從而實(shí)現(xiàn)在完成遠(yuǎn)程計(jì)算后,重置該可序列化對(duì)象的功能。
Public void execute(HttpServletResquest,HttpServletResponse response)
Throws Exception
{//執(zhí)行批處理文件
…
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);
}
服務(wù)器端結(jié)束完畢后,將計(jì)算結(jié)果上傳至FTP服務(wù)器進(jìn)行保留,并通過HTTP協(xié)議復(fù)制一份拷貝至客戶端,從而得以在客戶端顯示輸出文件內(nèi)容。
利用PDAE平臺(tái),用戶可以直接調(diào)用服務(wù)器端的NASTRAN軟件實(shí)現(xiàn)遠(yuǎn)程工程分析,而無須每臺(tái)客戶機(jī)都安裝,節(jié)約大量成本。且分析的輸入文件和輸出文件均在服務(wù)器端進(jìn)行統(tǒng)一管理,大大減少了文件管理難度,提高分析效率。
[1] 孫長(zhǎng)任,杜家政,盧緒智,石可重.MSC.NASTRAN應(yīng)用實(shí)例教程 [M].科學(xué)出版社.2005.
[2] 凌衛(wèi)青,王堅(jiān).面向大容量電站鍋爐產(chǎn)品研發(fā)的工程分析支持系統(tǒng)[J].計(jì)算機(jī)集成制造系統(tǒng).2010.4.16(4):738-744.
[3] 陳菁菁,姜源.TOMCAT原理與JAVA WEB系統(tǒng)開發(fā)[M].清華大學(xué)出版社.2009.
[4] 陳剛.ECLIPSE從入門到精通(第2版)[M].北京:清華大學(xué)出版社.2001.
[5] MSC Software Corporatio. MSC SimManager http://www.mscsoftware.com/Products/Virtual-Build-And-Test-Management/SimManager.aspx