• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Java Web的CEA程序移植

    2018-09-19 09:40:40蒙小龍劉志勤王耀彬
    關(guān)鍵詞:調(diào)用頁(yè)面客戶端

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

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

    0 引言

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

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

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

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

    在NASA CEA程序官網(wǎng)可以獲得相應(yīng)的程序包,以及兩份程序手冊(cè)[6-7]。提供了在 Windows、Mac OS X、Linux、Sun/Solaris、Sgi/Iris系統(tǒng)下的程序包,覆蓋了目前主流桌面操作系統(tǒng)。第一份手冊(cè)是詳細(xì)介紹復(fù)雜化學(xué)平衡的數(shù)學(xué)分析和技術(shù),包括計(jì)算指定熱力學(xué)狀態(tài)的化學(xué)平衡、平衡流和凍結(jié)流的火箭能量理論性能,以及入射和反射激波的性質(zhì)以及爆轟性質(zhì)等[8]。第二份是用戶手冊(cè),介紹了程序的詳細(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)行過(guò)程中涉及到的文件如表1所示。通過(guò)分析,原始文件中除去“trans.lib”、 “thermo.lib”、“FCEA2.exe”,其余都是為配置中間生成的問(wèn)題文件“*.inp”服務(wù),將文件“* .inp”作為核心算法程序“FCEA2.exe”的輸入便可得到結(jié)果輸出文件“*.out”。

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

    2 基于Java Web的程序移植

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

    2.1 移植可行性分析

    程序的移植的方法主要有源代碼移植和二進(jìn)制移植兩種方法,源代碼移植通過(guò)修改環(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)用方式,這種方法為源代碼移植。簡(jiǎn)而言之是將CEA的Fortran源碼進(jìn)行部分修改然后重新編譯成動(dòng)態(tài)鏈接庫(kù),使用VC對(duì)動(dòng)態(tài)鏈接庫(kù)進(jìn)行調(diào)用。因?yàn)镃EA算法內(nèi)部函數(shù)之間的參數(shù)傳遞復(fù)雜,使用這種方法的弊端在于修改源碼后容易造成不可預(yù)計(jì)的錯(cuò)誤。

    圖2 CEA程序用戶界面

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

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

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

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

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

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

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

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

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

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

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

    Java代碼目錄主要包含4個(gè)包,分別是“algorithm”,“servlet”, “entity”, “tools”。 “algorithm”包中主要是對(duì)CEA程序的調(diào)用代碼,“entity”中是對(duì)應(yīng)頁(yè)面表單的數(shù)據(jù)對(duì)象,“servlet”中包含的是處理各個(gè)頁(yè)面請(qǐng)求的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è)目錄包含頁(yè)面配置信息,依賴包以及靜態(tài)資源等;根目錄下“*.jsp”文件是相應(yīng)的網(wǎng)頁(yè)頁(yè)面。

    對(duì)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)用的流程如下,首先指定指令為包含絕對(duì)路徑的“FCEA2.exe”,還指定了當(dāng)前的工作路徑為“java.lang.File”類型的workpath。通過(guò)執(zhí)行該指令獲得一個(gè)“java.lang.Process”類型的對(duì)象“l(fā)ocalProcess”,也就是CEA算法的子進(jìn)程。然后使用“l(fā)ocalProcess”的“getOutputStream”方法獲得該進(jìn)程的標(biāo)準(zhǔn)輸出流,接著使用“java.io.PrintWriter”類的“println”方法指定帶絕對(duì)路徑的輸入文件名,也就是“*.inp”文件的位置。執(zhí)行“FCEA2.exe”,并且輸入“*.inp”文件的路徑。調(diào)用完成后在“*.inp”文件的目錄中會(huì)生成一個(gè)前綴相同的“*.out”文件。

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

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

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

    3 算例試算

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

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

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

    圖6 恒溫恒壓?jiǎn)栴}配置文本示例

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

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

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

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

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

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

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

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

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

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

    4 結(jié)束語(yǔ)

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

    猜你喜歡
    調(diào)用頁(yè)面客戶端
    大狗熊在睡覺(jué)
    刷新生活的頁(yè)面
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
    孵化垂直頻道:新聞客戶端新策略
    基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
    基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
    利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
    客戶端空間數(shù)據(jù)緩存策略
    龙州县| 淮南市| 金乡县| 安吉县| 北辰区| 保德县| 阿克陶县| 长兴县| 全椒县| 玉树县| 珠海市| 大化| 株洲市| 卫辉市| 新乡市| 柏乡县| 七台河市| 宁强县| 黄陵县| 阿鲁科尔沁旗| 大方县| 阜平县| 平潭县| 海丰县| 梁平县| 准格尔旗| 郴州市| 彩票| 巴林左旗| 华池县| 昌黎县| 西充县| 宜阳县| 马公市| 海原县| 北流市| 延吉市| 满洲里市| 黎川县| 鹤壁市| 焦作市|