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

        ?

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

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

        車霖源

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

        0 引 言

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

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

        1 基本技術(shù)路線

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

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

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

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

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

        2 R-Shiny功能

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

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

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

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

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

        圖4 半船的阻力時(shí)歷曲線

        表1 處理后的全船阻力

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

        3 腳本功能

        3.1 執(zhí)行計(jì)算

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

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

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

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

        (1)

        判斷標(biāo)準(zhǔn)為

        <01

        (2)

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

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

        圖6 腳本處理流程

        3.3 信息收集與匯總

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

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

        4 OpenFOAM計(jì)算策略模板化

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

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

        模板中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替換為對(duì)應(yīng)的數(shù)值。x1min和x1max是與船模長(zhǎng)有關(guān)的變量,本文取

        x1min=-pp

        (3)

        x1max=1.5pp

        (4)

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

        5 應(yīng)用情況

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

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

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

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

        6 結(jié) 語(yǔ)

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

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

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

        猜你喜歡
        配置文件腳本阻力
        酒駕
        提示用戶配置文件錯(cuò)誤 這樣解決
        鼻阻力測(cè)定在兒童OSA診療中的臨床作用
        安奇奇與小cool 龍(第二回)
        零阻力
        搭建簡(jiǎn)單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機(jī)root密碼怎么辦
        數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
        別讓摩擦成為學(xué)習(xí)的阻力
        成熟丰满熟妇高潮xxxxx视频| 亚洲长腿丝袜中文字幕| 日本中文一区二区在线| 亚洲成av人在线播放无码| 黑人玩弄人妻中文在线| 岛国熟女一区二区三区| 女同另类一区二区三区| 国产小视频在线看不卡| 最近中文字幕视频完整版在线看 | 一本色道久久综合无码人妻| 肉体裸交丰满丰满少妇在线观看| 亚洲无码美韩综合| 免费在线视频亚洲色图| 久久不见久久见免费影院国语| 玩弄放荡人妻一区二区三区 | 人妻体体内射精一区中文字幕 | 色老头久久综合网老妇女| 高清亚洲精品一区二区三区| 国产一级内射视频在线观看| 国产丝袜视频一区二区三区| 91爱爱视频| 丝袜美腿亚洲综合一区| 日日拍夜夜嗷嗷叫国产| 国产免费又色又爽又黄软件| 国产自产拍精品视频免费看| 亚洲中文字幕久久精品色老板| 色爱无码av综合区| 亚洲小说图区综合在线| 久久精品伊人久久精品| 亚洲日韩精品a∨片无码加勒比| 少妇厨房愉情理伦片免费| 18禁国产美女白浆在线| 国产精品成人av一区二区三区| 国产伦理一区二区| 小12箩利洗澡无码视频网站| 男女视频在线观看一区二区| 加勒比一本heyzo高清视频| 美女高潮无遮挡免费视频| 亚洲精品国产av一区二区| 亚洲av网一区二区三区| 日韩亚洲av无码一区二区不卡|