數值波浪水池構建工具waves2FOAM的安裝與使用
來源:多相流在線
作者: 毛艷軍
在應用 CFD 方法進行 船舶與海洋工程,港口海岸及近海工程等相關工程問題模擬的過程中,首先要做的就是建立數值波浪水槽(Numerical Wave Tank NWT), NWT 需要具備基本的造波和消波功能。waves2Foam 就是一個基于 OpenFOAM 進行二次開發的用于波浪模擬的拓展工具箱。它由丹麥科技大學 Niels Gjol Jacobsen 在2011年9月開源公布,也是目前影響力和知名度較高的一個造波工具箱。
waves2Foam 采用速度入口式造波方法,松弛區消波方式。預設了多種規則波,不規則波,孤立波等造波類型;松弛區消波可以在水槽兩端設置先后消波區從而可以消除尾端波浪以及結構物二次反射波浪。經眾多學者和以及筆者驗證,waves2Foam 造波和消波效果都較為穩定,同時計算效率也表現不錯,因此得到了眾多學者使用。同時,其中包含了較多的前后處理程序也是值得學習和使用的。
圖片來源:https://www.zhihu.com/people/yang-lin-40-50/posts
本篇主要內容:
waves2Foam 安裝過程中容易出現的問題和解決辦法,是waves2Foam手冊的有效補充。
waveDyMFoam 和 overwaveDyMFoam 動網格版本求解器的手動修改,手冊的有效補充和首發內容。
新手學習和使用OF和waves2Foam的建議。
1 waves2Foam的安裝與使用
關于wavesFoam的安裝與使用
http://http://openfoamwiki.net/index.php/Contrib/waves2Foam已做了詳細介紹,其中主要內容都遷移至wave2Foam Manual 。因此對于使用waves2Foam的人員,建議通讀manualwaves2Foam.pdf。其中安裝部分已經把基本安裝流程和所需要的依賴都說明白了,先移步去嘗試嘗試可好?這里主要是點出安裝過程中對于新手常遇到的幾個小坑。
2 支持版本
關于支持版本,手冊中已經寫明了支持的版本,親測2.x ,3.x系列幾乎安裝沒有太大問題,下面小坑有幾個可以學習一下,萬一不幸碰到也好解決,(為什么筆者這么不幸)。
waves2Foam 近期公布了其支持的OF17012_PLUS版本,之前嘗試了N久的在OF1706_PLUS上編譯安裝的工作也算告一段落,在此填坑,是否能夠和重疊網格有效結合有待于進一步驗證,應該問題不大。
由于暫時不會將OF1706_PLUS直接升級為1712,因此強迫癥的我打算再次嘗試OF1706_PLUS上編譯安裝。application/solvers/里面沒有對應1706_PLUS的版本。因此從1712_PLUS版拷貝,從1606拷貝的兼容性極差,似乎版本差異太大,缺失很多聲明文件。
此部分講解較為詳細,希望大家可以耐心閱讀學習整個程序修改和查錯過程,注意程序中的注釋內容,逐漸具備基本的程序修改能力。
設置好其他,編譯發現如下錯誤:
顯示為scAlpha未聲明,查看此變量未找到相關聲明,參考查找icAlpha關鍵字,在OpenFOAMv1706/src/finiteVolume/cfdTools/general/include/alphaControls$中發現此變量,如下:
對比1712代碼,發現了如下關鍵字聲明:
因不方便改動源碼,因此將此聲明放到了alphaEqn.H中,嘗試可以編譯成功,至此此坑填滿。
如下:
3 相關依賴
一定要把manualwaves2Foam中的相關依賴都下載和編譯安裝好之后再進行waves2Foam的安裝。依賴的相關安裝方法自行百度。這里面有個很容易出的問題,就是ThirdParrty里面,關于OceanWave3D-Fortran90的下載,與安裝時采用的git clone.
git clone https://github.com/boTerpPaulsen/OceanWave3D-Fortran90.git ,詳細見ThirdParty/Allwmake
這里面關鍵部分是這部分容易出問題,如果OceanWave3D編譯出現問題,請參考下面這段的介紹:
這一部分由于網絡問題或者git 庫可能遷移,會導致無法下載OceanWave3D,從而引發一系列問題。導致編譯失敗。此部分可以通過閱讀make 文件的操作,進行手動解決OceanWave3D的編譯,主要進行了以下操作:
完成這三步,就相當于手動解決了OCeanWave3D的下載問題,然后可以運行Allmake進行編譯。或者自行閱讀后續過程手動編譯OceanWave3D.
4 環境變量設置
這里按照手冊要求,安裝路徑是 $FOAM_RUN/../applications/utilities,這里使用了OF的環境變量FOAM_RUN,新手一定要將源代碼放入此路徑中,因為默認的環境變量$WAVES_DIR是這個路徑,當然,進一步如果了解到了這個問題,你可以把waves2Foam安裝到任意位置。環境變量設置文件位于\bin\bashrc.org下面,此路徑中定義了所有waves2Foam的環境變量。由于篇幅限制,完整文件請自行查看,下面展示主要部分: #號表示注釋內容
還有一塊叫做Easy navigation,此部分的使用方法是將該bashrc.org的路徑到自己的配置文件中`./.bashrc`中去,參考多版本OF控制的原理,在此不詳述。
剩下的環境變量部分主要是進行的版本的區別和不同進行了一定的修改和設置。
補充:使用默認的路徑編譯好可執行文件后,后續如果自己改動求解器編譯時Make/file 中的路徑盡量不要使用waves2Foam提供了的環境變量,最好使用絕對路徑,雖然麻煩了一些但是不會出現太多的環境變量問題,或者如上文所述,記得將其添加到自己的配置文件中,每次開啟終端即可自動source .bashrc的話也可以。
經過再次編譯安裝前一定要到/bin/里面`source bashrc`,記得設置waves2Foam的環境變量,否則你會得到各種錯誤,如缺少很多include文件以及如下問題:
5 環境變量設置
默認算例可以通過運行Allrun命令來運行算例,此處可以通過閱讀Allrun來了解waves2Foam算例運行過程中的執行的命令,可以手動按順序執行。此處一個小坑,算例換到其他位置后無法運行Allrun。請看代碼注釋部分
6 waveDyMFoam的修改
部分版本中waveDyMFoam需要自己通過interDyMFoam進行修改,此處的主要問題就是需要理解Make文件夾中的兩個文件file和option
file:**.C文件文件名,和可執行文件的存放位置,注意此處最好手動寫絕對路徑。
options:源文件需要引用的相關代碼和庫文件,編譯時,時常出現缺失某些文件的情況,主要是此處路徑的問題,可以在此處添加,include進來,強調一點,一定要注意路徑書寫的正確性,不要換行書寫,注意結尾的 \。 小寫 -i include某個文件,大寫 -I include某個文件夾下所有,同理 -l & -L。
waveDyMFoam.C的改寫方式
由于waves2Foam中未對動網格求解器進行編寫,此部分在manual中給出了部分解釋,但是相對較難理解。manual中的compareFiles.sh后顯示的內容如下,這里面主要是對比了所有的interFoam和waveFoam的區別,作為參考用于waveDyMFOAM的改寫:
首先做最簡單的工作,復制interDyMFoam/ 到waveDyMFoam/ 參見上文
修改file 和option 文件 參見上文
代碼改寫,給出了局部添加代碼行號和上下文位置:
waveDyMFoam.C 的改寫代碼
waveDyMFoam.C
creatFiels.H
createAlphaFluxes.H的定義如下:
總結,此次編譯工作純屬自娛自樂,程序調整較大,個別地方有待于進一步驗證,經過以上修改,驗證后可以正確的將waves2Foam的造波條件應用于interDyMFoam 求解器。 對整個程序有了更進一步的認識,下一步工作將其應用于重疊網格模型overInterFoam和isoInterFoam的新型自由液面的壓縮格式上。
7 overWave DyMFoam solver
相信此部分內容應該屬于全網首發,其實沒什么新鮮東西,一句話,搞清楚什么是造波邊界條件,什么是動網格求解器,兩者算法上應該是相互獨立的,因此上面 waveDyMFoam solver 的修改流程完全適用于 overWaveDyMFoam solver, 此部分工作已經過驗證可以正確應用,需要注意的是相關依賴和include 文件要搞清楚,作者建議 overWaveDyMFoam 求解器最好基于 overInterDyMFoam 進行修改,對于新手不要隨意換目錄,很多 include 文件搞不清楚很容易找不到。 編譯前,記得去 source waves2Foam/bin/bashrc,否則 好多造波的庫是找不到的,另外此處 waves2Foam 的造波邊界條件似乎和 OF -v1706中的 waveModel 邊界條件名稱有所沖突,因此可以將自帶的 waveModel 庫 comment out 掉。
error 提示
1.
2.
如果你覺得本部分對你的研究有借鑒意義,可以使用如下引用:
新手建議,此處是重點
1. 閱讀英文資料,網站,論壇,特別是針對于研究人員,這是使用OpenFOAM這樣程序的基本要求
2. 對于OpenFOAM的學習建議,建議Linux系統,軟件一定要自己安裝幾遍,多去折騰一些,才會有更多的感悟和收獲,此外,Linux系統建立在開源框架下,有更多優秀的開源程序是基于該系統下的,方便后期的程序使用。
3. 熟悉Linux系統的使用,尤其是環境變量的基本意義,就像是全局變量一樣,對于軟件安裝和使用過程大有裨益,回頭看來,這個概念其實在windows下也同樣重要,只是被我們忽略了而已,在很多破解或者編譯軟件的過程過程中都會遇到這個概念的。
4. 戒驕戒躁
5. 對于新手,經常會遇到的``命令不存在``的錯誤提示,思考了一下,大概有一下幾種可能參考:
- 命令輸入不對 可能性:30% 解決方法:核對命令,注意大小寫
- 軟件安裝失敗,命令本身不存在 可能性:30% 解決方法:重新檢查軟件安裝過程,是否出錯
- 部分命令因為版本或者特殊原因安裝失敗,此時可以根據自己的命令到存放可執行文件的文件夾,默認``$FOAM_USER_APPIN``和``$FOAM_USER_LIBBIN``中查看是否存在 可能性:20% 解決方法:如果不存在,則找到對應的源程序,重新嘗試wmake進行編譯,或者重裝整個程序。
- 編譯的可執行文件沒有加入到Linux的搜索PATH中,因此終端無法找到該命令,此概念Windows通用 可能性:10% 解決方法,將可執行文件的目錄通過export命令加入到PATH環境變量中:
> 通過修改.bashrc文件:
> vim ~/.bashrc
> //在最后一行添上:
> export PATH=/usr/local/mongodb/bin:$PATH
> 生效方法:(有以下兩種)
> 1、關閉當前終端窗口,重新打開一個新終端窗口就能生效
> 2、輸入“source ~/.bashrc”命令,立即生效
> 有效期限:永久有效
> 用戶局限:僅對當前用戶。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















