国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Java Web的CEA程序移植

2018-09-19 09:40蒙小龍劉志勤王耀彬
計(jì)算機(jī)測量與控制 2018年9期
關(guān)鍵詞:調(diào)用頁面客戶端

蒙小龍,黃 俊,劉志勤,張 勇,王耀彬

(1.西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川綿陽 621010;2.中國空氣動力研究與發(fā)展中心,四川綿陽 621000)

0 引言

航空航天技術(shù)不斷發(fā)展得益于動力系統(tǒng)的發(fā)展,特別是燃?xì)廨啓C(jī)、噴氣式發(fā)動機(jī)、火箭發(fā)動機(jī)、超燃燒沖壓發(fā)動機(jī)等技術(shù)演進(jìn),工程熱動力是該演進(jìn)過程的關(guān)鍵。CEA程序由NASA研究開發(fā),用于熱力學(xué)、物理化學(xué)反應(yīng)的計(jì)算與分析,如對固體推進(jìn)劑組合能量特性分析,新型氧化劑的熱化學(xué)性能計(jì)算[13]。CEA程序一方面是其計(jì)算結(jié)果成為了相關(guān)航空航天研究人員的標(biāo)準(zhǔn)參照;另一方面逐步成為了一些涉及熱力學(xué)與化學(xué)平衡計(jì)算仿真平臺 (如,飛行器動力仿真系統(tǒng)[4])的編程基礎(chǔ)庫。

現(xiàn)有的CEA程序需要下載安裝到桌面電腦,極大地限制了使用環(huán)境,并且在較新的操作系統(tǒng)中兼容性不佳。運(yùn)用于工程計(jì)算時(shí),通常需要進(jìn)行二次開發(fā)[5],然而該程序沒有提供標(biāo)準(zhǔn)應(yīng)用程序編程接口 (Application Programming Interface,API),為開發(fā)人員增加了難度。

基于上述問題,本文提出采用基于Web技術(shù)實(shí)現(xiàn)CEA桌面程序的二次開發(fā),提高了程序的便攜性,為涉及化學(xué)平衡問題的研究者提供開放便利的計(jì)算平臺。并且為相關(guān)開發(fā)人員提供了API,減少了二次開發(fā)的工作量。

1 CEA化學(xué)平衡計(jì)算程序

在NASA CEA程序官網(wǎng)可以獲得相應(yīng)的程序包,以及兩份程序手冊[6-7]。提供了在 Windows、Mac OS X、Linux、Sun/Solaris、Sgi/Iris系統(tǒng)下的程序包,覆蓋了目前主流桌面操作系統(tǒng)。第一份手冊是詳細(xì)介紹復(fù)雜化學(xué)平衡的數(shù)學(xué)分析和技術(shù),包括計(jì)算指定熱力學(xué)狀態(tài)的化學(xué)平衡、平衡流和凍結(jié)流的火箭能量理論性能,以及入射和反射激波的性質(zhì)以及爆轟性質(zhì)等[8]。第二份是用戶手冊,介紹了程序的詳細(xì)使用方式。

CEA中的化學(xué)平衡計(jì)算代碼包含1個(gè)主程序、24個(gè)子程序以及5個(gè)入口,可以將它們分成8個(gè)不同的模塊[5]。如圖1所示,分別是2個(gè)數(shù)據(jù)前處理模塊,1個(gè)程序輸入模塊,1個(gè)主程序模塊,3個(gè)計(jì)算模塊,1個(gè)輸出模塊。

圖1 NASA-CEA代碼的8個(gè)模塊

以Windows程序包為例,官網(wǎng)提供了3個(gè)壓縮包,其中CEA+Fortran.zip包含CEA算法程序的Fortran源碼文件,CEAexec-win.zip包含CEA程序的算法可執(zhí)行文件和所需的數(shù)據(jù)文件,CEAgui-jar.zip為CEA用戶界面包。將后面兩者解壓放到同一個(gè)文件夾,運(yùn)行.bat腳本便能執(zhí)行CEA圖形程序。整個(gè)程序運(yùn)行過程中涉及到的文件如表1所示。通過分析,原始文件中除去“trans.lib”、 “thermo.lib”、“FCEA2.exe”,其余都是為配置中間生成的問題文件“*.inp”服務(wù),將文件“* .inp”作為核心算法程序“FCEA2.exe”的輸入便可得到結(jié)果輸出文件“*.out”。

表1 官方windows版本壓縮文件及作用

2 基于Java Web的程序移植

由于“CEAgui.jar”只是用于配置問題參數(shù)客戶端界面,因此也可以開發(fā)不同的界面程序,來對配置問題輸入文件,再調(diào)用核心算法程序得到結(jié)果??紤]到跨平臺的各類終端使用,確立使Java Servlet技術(shù)來開發(fā)基于Web的應(yīng)用程序。

2.1 移植可行性分析

程序的移植的方法主要有源代碼移植和二進(jìn)制移植兩種方法,源代碼移植通過修改環(huán)境相關(guān)的部分源代碼,可使程序適應(yīng)多種工作環(huán)境;二進(jìn)制移植是指將軟件從原環(huán)境移植到目標(biāo)環(huán)境,不但能正確運(yùn)行,而且與其在原環(huán)境下表現(xiàn)一致[9]。文獻(xiàn)提到一種基于VC的CEA程序調(diào)用方式,這種方法為源代碼移植。簡而言之是將CEA的Fortran源碼進(jìn)行部分修改然后重新編譯成動態(tài)鏈接庫,使用VC對動態(tài)鏈接庫進(jìn)行調(diào)用。因?yàn)镃EA算法內(nèi)部函數(shù)之間的參數(shù)傳遞復(fù)雜,使用這種方法的弊端在于修改源碼后容易造成不可預(yù)計(jì)的錯(cuò)誤。

圖2 CEA程序用戶界面

CEA算法在半個(gè)世紀(jì)以來,得到了空氣動力學(xué)以及熱力學(xué)研究者的廣泛認(rèn)可。因此為保證移植的可靠性,應(yīng)該在不修改算法源碼的基礎(chǔ)上,對程序進(jìn)行二次開發(fā)。CEA軟件對算法和用戶界面有很好的分層,可以只對用戶界面移植而且不需要修改任何算法源碼。需要解決的問題之一是對算法的可執(zhí)行文件調(diào)用,在 Java中可以使用“java.lang.Runtime”類獲得當(dāng)前程序的運(yùn)行時(shí),使用運(yùn)行時(shí)可以實(shí)現(xiàn)對可執(zhí)行文件“.exe”的調(diào)用并獲得一個(gè)進(jìn)程,同時(shí)在“java.lang.Process”類的配合下能夠與該進(jìn)程進(jìn)行交互;需要解決的另一個(gè)問題是配置文件的生成,Java能夠方便地進(jìn)行文件讀寫操作,并且配置文件的語法格式在用戶手冊[6]中已經(jīng)有詳細(xì)的介紹。

通過研究分析可以得到CEA圖形界面程序的計(jì)算流程,如圖3所示,在程序中配置生成物是可選的,其中包括指定生成物、忽略生成物、插入生成物。插入生成物指選擇可能的凝結(jié)物,雖然不影響最終的計(jì)算結(jié)果,但是在某些情況下能加快算法的收斂?!?.inp”與“*.out”文件在表1中有相應(yīng)的解釋,實(shí)際上可以參照CEA用戶手冊[6]手動對“*.inp”進(jìn)行合法的添加與修改。

軟件良好的交互性與易用性能提高工作的效率,官方的CEA圖形界面程序在新的操作系統(tǒng)兼容性較差,同時(shí)界面組織復(fù)雜對非專業(yè)使用者不友好。使用Web技術(shù)能讓CEA工作在任何支持瀏覽器的終端上面,Java的Servlet技術(shù)能生成動態(tài)Web內(nèi)容并且能夠交互式瀏覽和修改數(shù)據(jù)。

圖3 CEA程序計(jì)算流程

面向?qū)ο缶幊痰腏ava語言除了能對可執(zhí)行文件進(jìn)行調(diào)用,還能夠方便地進(jìn)行文件讀寫操作。在Java EE中,使用已有的基礎(chǔ)能十分便捷地開發(fā)API,將CEA算法程序進(jìn)行封裝,使用一個(gè)Servlet來處理客戶端API請求,API Servlet解析客戶端請求的問題信息,并且將計(jì)算結(jié)果返回給客戶端??蛻舳烁鶕?jù)規(guī)范的接口定義調(diào)用服務(wù)器提供的CEA算法接口,輸入問題描述字符串語句,接口返回計(jì)算結(jié)果數(shù)據(jù)。

根據(jù)以上的分析,將程序使用二進(jìn)制移植方法完整移植到Java Web應(yīng)用中是完全可行的。

2.2 開發(fā)環(huán)境及應(yīng)用框架

選用流行的Eclipse作為開發(fā)平臺,應(yīng)用采用Servlet+JSP技術(shù)開發(fā)。在Java Web的開發(fā)中可以使用多種支持Servlet技術(shù)的服務(wù)器,Tomcat是其中的一個(gè)。因?yàn)殚_源和免費(fèi)的特性,使得用戶可以自由無障礙地下載、安裝、使用Tomcat,這也是Tomcat能夠被廣泛使用的重要原因之一。在項(xiàng)目中我們選用Tomcat作為Web應(yīng)用服務(wù)器。

移植的Web應(yīng)用目標(biāo)框架如圖4所示,客戶端瀏覽器發(fā)出請求;HTTP服務(wù)器處理請求后再將請求遞交給Java虛擬機(jī)中的Servlet對象;Servlet對象將請求的內(nèi)容包裝成配置文件,并且調(diào)用CEA核心算法;CEA算法處理配置文件,并且生成結(jié)果文件;Servlet對象等待結(jié)果文件的生成,接著讀取數(shù)據(jù),將數(shù)數(shù)據(jù)封裝成請求返回給HTTP服務(wù)器;HTTP服務(wù)器收到請求后再將請求傳遞給客戶端瀏覽器。

圖4 移植目標(biāo)整體結(jié)構(gòu)

根據(jù)圖3的流程,設(shè)計(jì)的Web主要包含四類頁面,分別是問題類型配置,反應(yīng)物配置,生成物配置以及輸出結(jié)果配置。每一個(gè)頁面對應(yīng)一個(gè)Servlet,頁面中的數(shù)據(jù)以Form表單的形式提交,一個(gè)頁面可能包含多個(gè)表單。同時(shí),對于每一個(gè)表單對應(yīng)一個(gè)符合JavaBean規(guī)范的實(shí)體對象。在項(xiàng)目中主要有兩個(gè)目錄,一個(gè)是Java源代碼目錄,另外一個(gè)是Web Content目錄。

Java代碼目錄主要包含4個(gè)包,分別是“algorithm”,“servlet”, “entity”, “tools”。 “algorithm”包中主要是對CEA程序的調(diào)用代碼,“entity”中是對應(yīng)頁面表單的數(shù)據(jù)對象,“servlet”中包含的是處理各個(gè)頁面請求的servlet類,“tools”包含的是文件操作等工具類。Web Content目錄中包含四類文件及目錄,“CEAcore”目錄包含的是CEA程序可執(zhí)行文件及依賴數(shù)據(jù)文件;“Download”用于在程序運(yùn)行后為每個(gè)用戶存放臨時(shí)數(shù)據(jù),這些數(shù)據(jù)可供用戶下載;“META-INF”、“WEB-INF”、“static”這3個(gè)目錄包含頁面配置信息,依賴包以及靜態(tài)資源等;根目錄下“*.jsp”文件是相應(yīng)的網(wǎng)頁頁面。

對CEA算法可執(zhí)行文件的調(diào)用是項(xiàng)目中最關(guān)鍵的一步,使用 Java的運(yùn)行時(shí)可以十分方便地實(shí)現(xiàn)。在“java.lang.Runtime”類的“exec”方法中包括3個(gè)參數(shù),第一個(gè)是指令,第二個(gè)是環(huán)境變量設(shè)置,第三個(gè)是當(dāng)前的工作路徑。調(diào)用的流程如下,首先指定指令為包含絕對路徑的“FCEA2.exe”,還指定了當(dāng)前的工作路徑為“java.lang.File”類型的workpath。通過執(zhí)行該指令獲得一個(gè)“java.lang.Process”類型的對象“l(fā)ocalProcess”,也就是CEA算法的子進(jìn)程。然后使用“l(fā)ocalProcess”的“getOutputStream”方法獲得該進(jìn)程的標(biāo)準(zhǔn)輸出流,接著使用“java.io.PrintWriter”類的“println”方法指定帶絕對路徑的輸入文件名,也就是“*.inp”文件的位置。執(zhí)行“FCEA2.exe”,并且輸入“*.inp”文件的路徑。調(diào)用完成后在“*.inp”文件的目錄中會生成一個(gè)前綴相同的“*.out”文件。

2.3 支持多用戶及構(gòu)建API

為保證系統(tǒng)能在多用戶下正常工作,把用戶訪問服務(wù)器Session的唯一ID值作為臨時(shí)工作目錄名,每個(gè)用戶只能訪問對應(yīng)服務(wù)器工作目錄中的資源,在用戶訪問結(jié)束或達(dá)到指定時(shí)限自動刪除臨時(shí)目錄及文件。實(shí)現(xiàn)了多個(gè)用戶獨(dú)立訪問,保證了用戶數(shù)據(jù)的安全。

為提高CEA程序二次開發(fā)的便利性,將所有問題配置封裝成一個(gè)URL API。因?yàn)檎埱蟮臄?shù)據(jù)結(jié)構(gòu)復(fù)雜,所以選用JSON的數(shù)據(jù)格式進(jìn)行封裝,請求端以POST方式向服務(wù)器發(fā)送請求。程序中使用一個(gè)APIServlet來處理API請求,首先解析JSON數(shù)據(jù)為相應(yīng)的Bean對象,然后根據(jù)Bean對象配置輸入問題文件,接著調(diào)用CEA算法處理問題文件,最后將輸入數(shù)據(jù)以及計(jì)算結(jié)果以JSON格式返回給接口調(diào)用者。

3 算例試算

將項(xiàng)目部署到Tomcat服務(wù)器上,便可以使用瀏覽器訪問,目前項(xiàng)目已經(jīng)部署到萬維網(wǎng)服務(wù)器[10]。應(yīng)用的使用流程如圖5,在首頁可以選擇查看示例、上傳問題文件或者新建一個(gè)問題文件,共3個(gè)選項(xiàng)。

圖5 CEA Web應(yīng)用使用流程

圖6為示例問題,第一段以“problem”開始,指定了案例名稱為“Example-1”,問題類型為“tp”(恒溫恒壓),壓力為“1,0.1,0.01”個(gè)大氣壓,溫度為“3000,2000”開爾文,化學(xué)當(dāng)量比為“1,1.5”;第二段以“reac”開始,指定了反應(yīng)物及物質(zhì)的量,燃料為“H2”,量為1摩爾,氧化劑為“Air”(空氣),量為1摩爾;第三段以“only”開始,指定了生成物的成分;第四段以“output”開始,指定輸出數(shù)據(jù)單位;問題以“end”結(jié)束。在輸入文件中,字段“problem”、 “reac”、 “end”是必須的,字段 “only”、“omit”、“insert”、“output”是可選的。

圖6 恒溫恒壓問題配置文本示例

上述問題可以寫入文本文件,并且將后綴改為“.inp”,然后通過上傳選項(xiàng)獲得結(jié)果。也可以使用CEA Web新建問題配置數(shù)據(jù)獲得結(jié)果,Web界面如圖7所示,配置的簡要過程如下:

1)在“problem”頁面輸入ID為“Example-1”;選擇類型為tp;在氧燃混合物中選擇當(dāng)量比并輸入值為“1,1.5”; 保存。

2)在“tp problem”頁面選擇溫度單位為“Kelvin”,值為“3000,2000”;選擇壓強(qiáng)單位為“atm”,值為“1,0.1,0.01”; 保存。

3)在“reactant”頁面選擇成分單位為“moles”,反應(yīng)物為“H2”,“Air”,數(shù)量都為“1”;保存。

4)在“only”頁面指定生成物的成分;保存。

5)在“output”頁面選擇能量單位為“calories”,求解。

6)在“problem and result”頁面可以查看和下載問題文件與求解結(jié)果文件。

圖7 CEA Web應(yīng)用界面

對于API的調(diào)用,在CEA Web[10]上可查看接口規(guī)范。開發(fā)人員只需將配置詳情按照API規(guī)范以JSON格式發(fā)出POST請求,服務(wù)器將返回帶有問題與結(jié)果詳情以及文件下載路徑的JSON數(shù)據(jù)。

JSON數(shù)據(jù)內(nèi)容主要包含兩個(gè)部分,一個(gè)部分是“problempath”,包含文件名以及文件的相對路徑,將輸入/輸出文名與輸入/輸出文件路徑拼接可得到文件在服務(wù)器的相對路徑,進(jìn)一步與服務(wù)器主機(jī)地址拼接可得到輸入/輸出文件的下載地址。因?yàn)槌绦驅(qū)ㄟ^服務(wù)器保留的Session檢驗(yàn)請求者的下載地址是否合法,以此保證數(shù)據(jù)不會被其他用戶獲得,確保了用戶數(shù)據(jù)的安全性。另一個(gè)部分是“problemresult”,包含問題字符串和結(jié)果字符串。開發(fā)人員根據(jù)需要獲得問題與結(jié)果的字符串或者通過下載鏈接得到文本文件。

4 結(jié)束語

CEA是一款開源的計(jì)算化學(xué)平衡程序,廣泛應(yīng)用于空氣動力學(xué)和熱力學(xué)的研究當(dāng)中。本文介紹了CEA桌面應(yīng)用程序的主要結(jié)構(gòu)及工作流程,并且使用Servlet技術(shù)完整移植到了Web平臺中,支持用戶在任何具有瀏覽器的終端使用。同時(shí),對CEA算法進(jìn)行了封裝,為開發(fā)人員提供統(tǒng)一的應(yīng)用程序編程接口API,方便將算法集成到其他大型系統(tǒng)中。接下來,將進(jìn)一步改善用戶交互界面,對輸出結(jié)果文件進(jìn)行分析,把各個(gè)部分用可視化圖表呈現(xiàn)出來。

猜你喜歡
調(diào)用頁面客戶端
你的手機(jī)安裝了多少個(gè)客戶端
“人民網(wǎng)+客戶端”推出數(shù)據(jù)新聞
——穩(wěn)就業(yè)、惠民生,“數(shù)”讀十年成績單
刷新生活的頁面
答案
讓W(xué)ord同時(shí)擁有橫向頁和縱向頁
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
系統(tǒng)虛擬化環(huán)境下客戶機(jī)系統(tǒng)調(diào)用信息捕獲與分析①
媒體客戶端的發(fā)展策略與推廣模式
新華社推出新版客戶端 打造移動互聯(lián)新聞旗艦
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信