亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java Web的CEA程序移植

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

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

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

        0 引言

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

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

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

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

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

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

        圖1 NASA-CEA代碼的8個模塊

        以Windows程序包為例,官網(wǎng)提供了3個壓縮包,其中CEA+Fortran.zip包含CEA算法程序的Fortran源碼文件,CEAexec-win.zip包含CEA程序的算法可執(zhí)行文件和所需的數(shù)據(jù)文件,CEAgui-jar.zip為CEA用戶界面包。將后面兩者解壓放到同一個文件夾,運行.bat腳本便能執(zhí)行CEA圖形程序。整個程序運行過程中涉及到的文件如表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 移植可行性分析

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

        圖2 CEA程序用戶界面

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

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

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

        圖3 CEA程序計算流程

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

        根據(jù)以上的分析,將程序使用二進制移植方法完整移植到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是其中的一個。因為開源和免費的特性,使得用戶可以自由無障礙地下載、安裝、使用Tomcat,這也是Tomcat能夠被廣泛使用的重要原因之一。在項目中我們選用Tomcat作為Web應(yīng)用服務(wù)器。

        移植的Web應(yīng)用目標(biāo)框架如圖4所示,客戶端瀏覽器發(fā)出請求;HTTP服務(wù)器處理請求后再將請求遞交給Java虛擬機中的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è)計的Web主要包含四類頁面,分別是問題類型配置,反應(yīng)物配置,生成物配置以及輸出結(jié)果配置。每一個頁面對應(yīng)一個Servlet,頁面中的數(shù)據(jù)以Form表單的形式提交,一個頁面可能包含多個表單。同時,對于每一個表單對應(yīng)一個符合JavaBean規(guī)范的實體對象。在項目中主要有兩個目錄,一個是Java源代碼目錄,另外一個是Web Content目錄。

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

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

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

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

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

        3 算例試算

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

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

        圖6為示例問題,第一段以“problem”開始,指定了案例名稱為“Example-1”,問題類型為“tp”(恒溫恒壓),壓力為“1,0.1,0.01”個大氣壓,溫度為“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”,然后通過上傳選項獲得結(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”;選擇壓強單位為“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)容主要包含兩個部分,一個部分是“problempath”,包含文件名以及文件的相對路徑,將輸入/輸出文名與輸入/輸出文件路徑拼接可得到文件在服務(wù)器的相對路徑,進一步與服務(wù)器主機地址拼接可得到輸入/輸出文件的下載地址。因為程序?qū)ㄟ^服務(wù)器保留的Session檢驗請求者的下載地址是否合法,以此保證數(shù)據(jù)不會被其他用戶獲得,確保了用戶數(shù)據(jù)的安全性。另一個部分是“problemresult”,包含問題字符串和結(jié)果字符串。開發(fā)人員根據(jù)需要獲得問題與結(jié)果的字符串或者通過下載鏈接得到文本文件。

        4 結(jié)束語

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

        猜你喜歡
        調(diào)用頁面客戶端
        大狗熊在睡覺
        刷新生活的頁面
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
        客戶端空間數(shù)據(jù)緩存策略
        免费无码肉片在线观看| 东北女人一级内射黄片| 午夜天堂精品久久久久| 内射囯产旡码丰满少妇| 在线精品无码一区二区三区| 国产黑色丝袜在线观看网站91| 一区二区三区日韩亚洲中文视频| 天堂中文最新版在线中文| 免费人成视频在线观看视频 | 国产内射视频在线播放| 亚洲自拍偷拍一区二区三区| 尤物在线精品视频| 精品久久久久久久久久久aⅴ| 久久国产av在线观看| 亚洲一区第二区三区四区| 日本特黄特色特爽大片| 欧美日韩中文制服有码| 国产精品99久久不卡二区| 国产一区二区视频在线免费观看| 久久99久久99精品中文字幕| 亚洲电影一区二区三区| 青青草视频在线观看9| 亚洲 日韩 激情 无码 中出| 国产成人精品一区二区三区免费| 午夜免费福利一区二区无码AV| 99精品人妻少妇一区二区三区 | 日本50岁丰满熟妇xxxx| 中文字幕乱码亚洲无线精品一区| 亚洲av无吗国产精品| 久久久亚洲欧洲日产国码aⅴ | 日本丰满少妇裸体自慰| 拍摄av现场失控高潮数次| 色综合久久久久综合一本到桃花网| av天堂手机免费在线| 午夜福利啪啪片| 产国语一级特黄aa大片| 国产一区二区三区小向美奈子| 中文无码成人免费视频在线观看| 亚洲AV成人无码久久精品老人| 91青青草免费在线视频 | 国产超碰人人爽人人做人人添|