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

?

基于R-Shiny和腳本的OpenFOAM遠程應(yīng)用開發(fā)

2022-03-16 11:14車霖源
關(guān)鍵詞:配置文件腳本阻力

車霖源

(上海船舶運輸科學(xué)研究所 a.航運技術(shù)與安全國家重點實驗室; b.航運技術(shù)交通行業(yè)重點實驗室,上海 200135)

0 引 言

在船型優(yōu)化工作中,計算流體力學(xué)(Computational Fluid Dynamics,CFD)工具已成為不可或缺的計算工具之一。為獲得性能優(yōu)良的船舶線型,需借助經(jīng)驗或優(yōu)化算法對多個方案進行對比。CFD計算需耗費大量的計算資源,一般在計算機集群或?qū)S玫姆?wù)器上通過相應(yīng)的軟件實現(xiàn),這些高性能計算機通常采用linux系統(tǒng)。CFD計算對CFD工具使用者有較高的要求,不僅要求其熟悉計算機系統(tǒng),而且要求其能很好地把握軟件的參數(shù)設(shè)置,保證計算的合理性和準確性。在實際工作中,這會影響一部人使用CFD工具的效率,任務(wù)多時還會出現(xiàn)浪費計算資源的問題,影響工作進度。因此,需在船型優(yōu)化設(shè)計人員與計算工具之間建立一座“橋梁”,使船型優(yōu)化設(shè)計人員將更多精力投入到優(yōu)化設(shè)計工作中,減少對計算工具的關(guān)注。

R語言的Shiny包可用來構(gòu)建交互式網(wǎng)頁,便于部署,能滿足常用的交互式應(yīng)用的需求。OpenFOAM是一款CFD開源平臺,從本質(zhì)上看是采用C++語言編寫的面向?qū)ο蟮念悗?,具有極強的擴展性和強大的底層數(shù)學(xué)場量操作類庫,可實現(xiàn)大規(guī)模的并行計算。OpenFOAM已在多個領(lǐng)域得到深入研究,在船舶水動力領(lǐng)域得到了廣泛應(yīng)用。本文以O(shè)penFOAM為求解器,以Shiny為操作界面界面,以linux腳本為控制后臺,建立針對船模阻力計算的遠程應(yīng)用。

1 基本技術(shù)路線

基本技術(shù)路線示意見圖1。首先,用戶利用瀏覽器輸入計算參數(shù),并將其與幾何文件一同上傳至服務(wù)器端;隨后,腳本執(zhí)行相關(guān)動作,實現(xiàn)計算和信息展示等功能。

圖1 基本技術(shù)路線示意

R-Shiny在整個技術(shù)路線中起到傳遞數(shù)據(jù)和信息的作用,連接用戶與服務(wù)器。輸入數(shù)據(jù),在服務(wù)器端生成可供腳本使用的,用于生成OpenFOAM計算策略的參數(shù)文件。調(diào)用生成的結(jié)果文件和計算排隊文件,返回至瀏覽器,供用戶參考。

腳本功能分為3部分,即:執(zhí)行計算;監(jiān)測計算收斂情況,控制OpenFOAM;收集、匯總信息。提交計算方案之后,腳本探測到新的文件,調(diào)用OpenFOAM執(zhí)行網(wǎng)格劃分和計算等任務(wù)。同時,根據(jù)計算的阻力時歷數(shù)據(jù)判斷計算是否收斂,以及是否結(jié)束本案例的計算,實現(xiàn)對多個方案的自動、連續(xù)計算,生成計算結(jié)果和多個方案的計算排隊文件。

OpenFOAM設(shè)置以模板的形式存儲在服務(wù)器內(nèi),其中參數(shù)設(shè)置隨計算條件的改變而改變,計算條件來源于用戶提交的參數(shù)文件。腳本自動生成供OpenFOAM計算使用的參數(shù),如邊界條件和網(wǎng)格劃分參數(shù)等。

2 R-Shiny功能

Shiny的代碼由ui和server組成,其中:ui用于設(shè)計瀏覽器展示內(nèi)容的布局和用戶交互的信息;server用于處理相應(yīng)的邏輯關(guān)系,對輸入的信息進行處理,對輸出的信息進行控制,對用戶的操作作出反應(yīng),產(chǎn)出對應(yīng)的結(jié)果。

網(wǎng)頁界面由信息輸入和信息展示2個區(qū)域組成。信息輸入?yún)^(qū)域見圖2,計算參數(shù)可通過讀取文件和在頁面中填寫2種方式提交;上傳的幾何文件為stl格式的文件,可通過三維建模軟件(如Rhino)導(dǎo)出獲得。通過下載數(shù)據(jù)功能可獲得當前輸入的參數(shù)文件和結(jié)果查詢編號,方便下次計算時直接讀取參數(shù)文件,不需要重新在界面中填寫;同時,可通過查詢編號查詢本方案的計算結(jié)果和排隊情況。圖3為查詢編號輸入?yún)^(qū)域。

當計算完成之后,輸入查詢編號即可獲得計算結(jié)果,包括阻力值和收斂過程。在阻力計算中采用半船,圖4為半船的阻力時歷曲線,表1為處理后的全船阻力。若查詢的方案沒有計算結(jié)束或沒有開始計算,則顯示該方案的排隊情況。

圖2 信息輸入?yún)^(qū)域

圖3 查詢編號輸入?yún)^(qū)域

圖4 半船的阻力時歷曲線

表1 處理后的全船阻力

server負責從讀入的文件或界面中獲取數(shù)據(jù),并將其轉(zhuǎn)換為可被腳本讀入的格式,同時將參數(shù)文件和幾何文件放在指定位置,供腳本調(diào)用。對于信息展示的處理,則是從指定位置讀取結(jié)果文件,并將其傳遞給網(wǎng)頁。

3 腳本功能

3.1 執(zhí)行計算

在執(zhí)行計算的腳本中,參考OpenFOAM的官方示例,將計算過程分為幾何特征提取、背景網(wǎng)格劃分、多次局部加密、有幾何物體的網(wǎng)格劃分、網(wǎng)格檢查、多相流設(shè)置、計算域拆分、并行計算和計算結(jié)果組合等過程。由于要在不同情況下應(yīng)用計算策略,在執(zhí)行上述計算任務(wù)之前,根據(jù)提交的參數(shù)文件獲得OpenFOAM配置文件中不同參數(shù)的數(shù)值,并對模板文件進行替換,得到當前算例的完整計算文件。具體腳本執(zhí)行計算流程見圖5。

3.2 監(jiān)測收斂,控制OpenFOAM

在進行數(shù)值模擬過程中,需高效利用計算資源和時間資源,及時判斷模擬結(jié)果是否穩(wěn)定收斂,結(jié)束當前過程,并對后續(xù)方案進行計算。OpenFOAM中的控制文件controlDict可在計算過程中進行修改并立即起效。利用該特性修改controlDict中的endTime,使計算立即結(jié)束。

利用腳本監(jiān)測計算總阻力,以最新的300個計算步的變異系數(shù)為評估變量,設(shè)定的準則為變異系數(shù)等于0.1。變異系數(shù)用于反映一組數(shù)據(jù)的離散程度,本文借此概念評估計算阻力的振蕩情況,進而判斷計算是否穩(wěn)定。變異系數(shù)的表達式為

(1)

判斷標準為

<01

(2)

若當前進行了1 000個時間步的計算,則計算700~1 000個時間步內(nèi)總阻力的變異系數(shù),判斷其數(shù)值是否小于0.1。若該變異系數(shù)的值小于0.1,則自動修改配置文件controlDict中的endTime字段數(shù)值為當前對應(yīng)的模擬時間,結(jié)束本方案的計算;若該變異系數(shù)的值大于等于0.1,則繼續(xù)計算,以此類推,直至計算穩(wěn)定。腳本處理流程見圖6。

圖5 腳本執(zhí)行計算流程

圖6 腳本處理流程

3.3 信息收集與匯總

計算結(jié)束之后,原始的計算結(jié)果被存儲到了服務(wù)器中,用戶無法直接讀取,需通過Shiny將計算結(jié)果傳遞到瀏覽器端,實現(xiàn)信息展示。腳本對阻力時歷結(jié)果中的最后300個時間步的數(shù)據(jù)取平均值,將其存儲在相應(yīng)的文件中和特定的位置上,內(nèi)容包括壓阻力、黏性阻力和總阻力。同時,腳本控制Gnuplot繪圖工具,處理得到阻力時歷曲線,為用戶提供收斂過程,幫助其判斷計算是否正常。

獲取多個方案的計算排隊情況有助于用戶合理規(guī)劃工作時間。應(yīng)用腳本監(jiān)測待計算文件夾內(nèi)的方案和正在計算的方案,形成排隊情況信息匯總,以表格的形式在瀏覽器中展示。

4 OpenFOAM計算策略模板化

OpenFOAM的配置文件包含眾多內(nèi)容,軟件的使用門檻較高。本文針對船舶阻力計算,基于大量水池試驗,總結(jié)一套可靠的計算策略,建立相應(yīng)的模板文件。用戶無需知道參數(shù)如何設(shè)置,在瀏覽器中填寫好計算條件之后,腳本自動生成符合當前方案的配置文件。

下面以網(wǎng)格加密的參數(shù)設(shè)置說明如何利用模板和腳本生成計算配置文件。文件topoSetDict.1用于對船體周圍的某個長方形區(qū)域進行1次加密標記,因此區(qū)域的大小與船模尺度有關(guān),否則將導(dǎo)致加密區(qū)域過大,網(wǎng)格數(shù)量過多,或沒有將船模包圍進去,在劃分網(wǎng)格時出現(xiàn)錯誤。

模板中topoSetDict.1文件中的box字段按以下方式編寫:

box (x1min y1min-3) (x1max 0 z1max);

腳本中采用以下命令:

sed-i "s/x1min/$x1min/g" system/topoSetDict.1

sed-i "s/x1max/$x1max/g" system/topoSetDict.1

將模板中的x1min和x1max替換為對應(yīng)的數(shù)值。x1min和x1max是與船模長有關(guān)的變量,本文取

x1min=-pp

(3)

x1max=1.5pp

(4)

式(3)和式(4)中:pp為船模垂線間長,根據(jù)實船垂線間長和縮尺比計算得到。其他的字段采用類似的方式替換,最終獲得用于計算的配置文件。

5 應(yīng)用情況

首先校核計算精度,為后續(xù)改進提供基礎(chǔ)。從上海船舶運輸科學(xué)研究所的模型試驗數(shù)據(jù)庫中隨機抽取31艘船的試驗數(shù)據(jù)作為樣本,選擇設(shè)計吃水和設(shè)計航速狀態(tài),采用該應(yīng)用進行計算校核,得到的誤差分布柱形圖和核密度估計曲線見圖7。

圖7 誤差分布柱形圖和核密度估計曲線

計算誤差基本集中在±4%以內(nèi),占總計算樣本的93.5%,且在0附近比例最高,均值為-0.42%,說明該應(yīng)用對船模阻力具有很好的模擬效果,可作為船型優(yōu)化和性能評估的輔助工具。

在該應(yīng)用發(fā)布之后的20 d內(nèi)共對4艘船的近50個方案進行了計算,包括1艘客船、2艘多用途船和1艘大型散貨船,幫助完成了相關(guān)的優(yōu)化選型和性能評估工作。

6 結(jié) 語

為合理利用計算資源,方便船型優(yōu)化設(shè)計人員使用CFD工具評估船舶性能,結(jié)合R-Shiny和linux腳本實現(xiàn)了基于OpenFOAM的遠程應(yīng)用開發(fā)。該應(yīng)用在輸入計算參數(shù)和幾何文件之后能自動配置好OpenFOAM所需文件并執(zhí)行計算;計算過程中可判斷收斂情況,在保證結(jié)果穩(wěn)定的情況下,結(jié)束當前算例并進行后續(xù)計算。該應(yīng)用能極大地提高計算資源的使用效率,縮短不必要的模擬時間;同時,能為用戶反饋必要的信息,實現(xiàn)關(guān)鍵信息展示。

該應(yīng)用使用簡單,計算精度高,展示結(jié)果清晰,方便用戶進行批量多方案計算;輸入的參數(shù)較少且能重復(fù)利用,同時對輸入的幾何文件要求低,無需額外進行修整。

本文涉及到的服務(wù)器端的信息是在文件中存儲和傳遞的,在處理過程中略顯繁瑣。后續(xù)將考慮采用數(shù)據(jù)庫技術(shù),通過數(shù)據(jù)庫實現(xiàn)信息存儲,高效地管理輸入信息和輸出信息。此外,可融入幾何變形工具和優(yōu)化算法,實現(xiàn)自主或半自主式優(yōu)化,提升船型優(yōu)化效率。

猜你喜歡
配置文件腳本阻力
基于正交試驗的整車驅(qū)動輪滾動阻力因素分析
掌握顏色查找表的魔力
Explore wild skating on nature
從Windows 10中刪除所有網(wǎng)絡(luò)配置文件
用軟件處理Windows沙盒配置文件
豬猴跳傘
互不干涉混用Chromium Edge
自動推送與網(wǎng)站匹配的腳本
舉一反三新編
捕風捉影新編
佳木斯市| 镇赉县| 唐山市| 英吉沙县| 崇信县| 兴宁市| 秦皇岛市| 武陟县| 宽城| 乌海市| 盖州市| 运城市| 卓资县| 平顺县| 鄂托克旗| 扶余县| 福安市| 建昌县| 临猗县| 邮箱| 盐亭县| 华安县| 综艺| 松潘县| 鲁山县| 宜兴市| 赤水市| 白城市| 腾冲县| 兰西县| 长宁县| 天祝| 镇江市| 怀集县| 丽江市| 富蕴县| 宁晋县| 馆陶县| 阿克陶县| 巴塘县| 滕州市|