許建宏,王 堅(jiān),凌衛(wèi)青
XU Jian-hong, WANG Jian, LING Wei-qing
(同濟(jì)大學(xué) CIMS研究中心,上海 201804)
我國所擁有的具有自主知識產(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ā),對于形成我國的自主知識產(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ì)過程中,必須對壓縮機(jī)組內(nèi)相關(guān)部位的溫度場分布、機(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)的分散性,使得針對固定的工程分析流程,傳統(tǒng)的NASTRAN工程分析需要每一個(gè)客戶端都安裝分析軟件,多臺安裝需要高昂的成本,企業(yè)難以負(fù)擔(dān)。__
2)工程計(jì)算結(jié)果缺乏有效的組織管理和重用。以往的計(jì)算結(jié)果大多掌握在分析人員個(gè)人手上,難以共享和重用,導(dǎo)致重復(fù)分析計(jì)算現(xiàn)象頻頻發(fā)生,設(shè)計(jì)周期耗時(shí)過長,分析效率低下。
綜上所述,需要研究相應(yīng)產(chǎn)品設(shè)計(jì)分析平臺,通過工程分析過程管理、跨平臺遠(yuǎn)程計(jì)算和工程分析數(shù)據(jù)管理等,實(shí)現(xiàn)工程分析高效管理,完成企業(yè)知識積累。
隨著對遠(yuǎn)程工程分析奢求的日益迫切,以及相關(guān)技術(shù)研究的深入,很多軟件公司也都陸續(xù)推出了自己相關(guān)的軟件產(chǎn)品。
MSC公司推出的SimManager是企業(yè)級仿真業(yè)務(wù)管理平臺。其采用了面向服務(wù)架構(gòu)(SOA:Service-Oriented Architecture)的概念,遵循模型-視圖-控制器相分離的MVC模式,將各種應(yīng)用組件部署在一個(gè)共同的服務(wù)平臺上,可通過胖客戶端(基于應(yīng)用程序)或者瘦客戶端(基于瀏覽器)進(jìn)行訪問。
HP公司也推出了自己的遠(yuǎn)程圖形軟件RGS(Remote Graphics Software)。其默認(rèn)使用微軟遠(yuǎn)程桌面協(xié)議(RDP)作為客戶端和服務(wù)器之間的連接協(xié)議。RGS中客戶端對服務(wù)器上計(jì)算資源的調(diào)用會實(shí)時(shí)顯示在客戶端,由于采用比較良好的圖形壓縮技術(shù),客戶端的畫面相對服務(wù)器端畫面并不會有太大的失真,操作直觀。
但是這些軟件價(jià)格昂貴,而且體積龐大,功能臃腫,需要專業(yè)人員操作,且對硬件要求很高,對企業(yè)而言往往是另一種沉重的負(fù)擔(dān)。
對象序列化技術(shù)是Java語言用于實(shí)現(xiàn)輕量級持久性(lightweight persistence)的一種解決方案?!俺志眯浴币馕吨粋€(gè)對象的生存周期并不取決于程序是否正在執(zhí)行,持久化之后它可以生存于程序的調(diào)用之間。
對象序列化的概念加入到語言中是為了支持兩種主要特性,一種是Java的遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RIM),它使存活于其他計(jì)算機(jī)上的資源使用起來就像使用本機(jī)資源一樣。當(dāng)向遠(yuǎn)程對象發(fā)送消息時(shí),需要通過對象序列化來傳輸參數(shù)和返回值。再一個(gè)就是用于Java Beans,使用一個(gè)Bean時(shí),通常要在設(shè)計(jì)階段對它的狀態(tài)信息進(jìn)行配置,并保存,在程序啟動(dòng)時(shí)進(jìn)行后期恢復(fù),這種具體的工作就要對象序列化來完成。
對象序列化一個(gè)重要限制是它只是Java的解決方案:只有Java程序才能反序列化這種對象(有一種更具互操作性的解決方案是將數(shù)據(jù)轉(zhuǎn)換為XML格式,這可以使其被各種各樣的平臺和語言使用)。
Java序列化機(jī)制是通過Serialization API框架來實(shí)現(xiàn)的。只要對象實(shí)現(xiàn)了Serializable接口,對象的序列化處理就較簡單了。要序列化一個(gè)對象,首先要?jiǎng)?chuàng)建某些OutputStream對象,然后將其封裝在一個(gè)ObjectOutputStream對象內(nèi)。這時(shí),只需要調(diào)用writeObject()即可將對象序列化,并將其發(fā)送給OutputStream。反向進(jìn)行,將一個(gè)InputStream封裝在ObjectInputStream內(nèi),然后調(diào)用readObject()即可實(shí)現(xiàn)反序列化。
Servlet(小服務(wù)程序)是一個(gè)與協(xié)議無關(guān)的、跨平臺的Web組件,它基于Java技術(shù)開發(fā),由Servlet容器所管理。和運(yùn)行在客戶端瀏覽器中的Applet相似,Servlet運(yùn)行在服務(wù)器端,可以動(dòng)態(tài)地?cái)U(kuò)展服務(wù)器的功能,并且采用“請求—響應(yīng)”模式提供服務(wù)。
Servlet通過創(chuàng)建一個(gè)框架來擴(kuò)展服務(wù)器的能力,以提供請求和響應(yīng)服務(wù)。當(dāng)客戶機(jī)發(fā)送請求至服務(wù)器時(shí),服務(wù)器可以將請求信息發(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,都不會重復(fù)執(zhí)行init()。
service()方法是Servlet的核心,每當(dāng)一個(gè)客戶請求一個(gè)HttpServlet對象,該對象的service()方法就要被調(diào)用,而且傳遞給這個(gè)方法一個(gè)“請求”(ServletRequest)對象和一個(gè)“響應(yīng)”(ServletResponse)對象作為參數(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)軟件?;谟邢拊椒ǖ腃AE系統(tǒng),其核心思想是結(jié)構(gòu)的離散化。
應(yīng)用CAE軟件對工程和產(chǎn)品進(jìn)行性能分析和模擬時(shí),一般要經(jīng)歷三個(gè)過程:
1)前處理:對工程或產(chǎn)品進(jìn)行建模,建立合適的有限元模型。
2)有限元分析:對有限元模型進(jìn)行計(jì)算求解。
3)后處理:將求解結(jié)果以圖形方式提供給用戶,以輔助判定設(shè)計(jì)方案合理性。
美國的MSC公司開發(fā)的MSC.PATRAN和MSC.NASTRAN軟件為CAE提供了一整套的較為優(yōu)秀的、主流的解決方案。目前對氦氣壓縮機(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解算完畢后,會輸出.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ù)信息和知識等。該系統(tǒng)支持需求分析、設(shè)計(jì)分析流程定義、任務(wù)分配、計(jì)算資源配置與管理和知識重用等。
系統(tǒng)采用JAVA EE架構(gòu),利用ECLIPSE平臺上的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ù)管理平臺,另外一個(gè)就是分布式計(jì)算資源管理系統(tǒng)。PDAE系統(tǒng)通過對設(shè)計(jì)分析過程中的流程、知識和數(shù)據(jù)的系統(tǒng)化集成和整合,實(shí)現(xiàn)了協(xié)同設(shè)計(jì)與相關(guān)計(jì)算資源的無縫對接,構(gòu)成了企業(yè)的產(chǎn)品設(shè)計(jì)研發(fā)管理平臺。
系統(tǒng)采用了三層工程分析支持系統(tǒng)體系框架,分別是應(yīng)用層,管理層和資源層。提供了一個(gè)分布式、跨平臺的集成統(tǒng)一界面,方便工程設(shè)計(jì)分析人員對不同計(jì)算資源的調(diào)用。
NASTRAN計(jì)算資源位于服務(wù)器端,可以通過Servlet技術(shù)對其進(jìn)行調(diào)用。但是NASTRAN運(yùn)行時(shí),要輸入相應(yīng)命令參數(shù),且要指定輸入文件.bdf文件位置所在。因此可以考慮使用NASTRAN所提供的批處理文件的功能,首先將根據(jù)對應(yīng)參數(shù)生成批處理文件,然后用Servlet技術(shù)監(jiān)聽對于此批處理文件的請求,并進(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客戶端完成對需要進(jìn)行網(wǎng)絡(luò)傳輸?shù)目尚蛄谢瘜ο蟮南嚓P(guān)信息的寫入:
1)新建一個(gè)可供網(wǎng)絡(luò)傳輸?shù)目尚蛄谢膶ο?/p>
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è)可序列化對象。
2)對可序列化對象設(shè)置相關(guān)信息及參數(shù)
cmd.setMethodPath(resourcebatpath);
cmd.setServerType(serverType);
…
3)客戶端嘗試向遠(yuǎn)程服務(wù)器端發(fā)送HTTP請求:
客戶端向指定IP發(fā)送請求,以期望被遠(yuǎn)程服務(wù)器端的servlet監(jiān)聽到,并進(jìn)行相應(yīng)響應(yīng)。該過程在ShellExceCommand2對象的sendCommand()方法中完成:
cmd=cmd.sendCommand(“http:// ”+serverip+“:8081/PDAEServer/execute/exe”);
其次,服務(wù)器端部署在容器中的servlet將完成監(jiān)聽連接請求,獲取初始可序列化對象,調(diào)用計(jì)算資源進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果重置可序列化對象相應(yīng)字段等工作。
(1)監(jiān)聽連接請求
Servlet是部署在容器中,容器通過某種映射關(guān)系將servlet映射到每個(gè)具體的URL。在servlet中,所有的這些映射工作都放在項(xiàng)目工程里的WEBINF文件夾下的web-xml文件中。
(2)獲取初始可序列對象
遠(yuǎn)程服務(wù)器端監(jiān)聽到該請求后,獲取序列化對象。部署servlet的容器通過servlet-URL映射關(guān)系找到對象cmd的servlet,加載該servlet的實(shí)例,并調(diào)用對應(yīng)init()方法,之后,調(diào)用service()方法,找到對應(yīng)NASTRAN的批處理文件,運(yùn)行批處理文件,調(diào)用NASTRAN計(jì)算資源進(jìn)行解算。
(3)獲得計(jì)算結(jié)果并重置相應(yīng)字段
獲取可序列化對象,計(jì)算之后,重置可序列化對象中的tempFileOut字段以更新輸出文件結(jié)果。在execute()結(jié)束前,利用傳入execute()方法中的HttpResponse參數(shù)重新獲取可序列化對象的輸出流,并將this實(shí)例重新寫入,從而實(shí)現(xiàn)在完成遠(yuǎn)程計(jì)算后,重置該可序列化對象的功能。
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平臺,用戶可以直接調(diào)用服務(wù)器端的NASTRAN軟件實(shí)現(xiàn)遠(yuǎn)程工程分析,而無須每臺客戶機(jī)都安裝,節(jié)約大量成本。且分析的輸入文件和輸出文件均在服務(wù)器端進(jìn)行統(tǒng)一管理,大大減少了文件管理難度,提高分析效率。
[1] 孫長任,杜家政,盧緒智,石可重.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