OpenFOAM修改湍流模型之后出現(xiàn)#duplicate entry的解決辦法
文章是發(fā)在CSDN中的,鏈接是https://blog.csdn.net/qq_42370809/article/details/117563354?spm=1001.2014.3001.5501
下邊是正文,
## OpenFOAM修改湍流模型之后出現(xiàn)#duplicate entry的解決辦法
參考文章:
*OpenFOAM-Duplicate Entry 解決辦法*:[link](https://zhuanlan.zhihu.com/p/356859133)
?*如何在OF6中添加新的湍流模型?* :[link](https://forum.cfdac.com/t/topic/103/2)
?主要流程和第二篇文章基本一致,因?yàn)樵趯?shí)際操作過(guò)程中遇到過(guò)一些博主也沒(méi)有遇到的問(wèn)題,所以從頭到尾記錄一下。
使用的平臺(tái)是WSL的Ubuntu20.04,OpenFOAM版本是OpenFOAM-v8
1. 首先拷貝文件
因?yàn)橐话銇?lái)講openfoam的源文件是被鎖住的,不允許操作,所以首先進(jìn)入root用戶
sudo -i
輸入密碼
找到MomentumTransportModels文件夾的位置,我這里是下邊的地址。
\\wsl$\Ubuntu-20.04\opt\openfoam8\src\MomentumTransportModels
然后復(fù)制到個(gè)人的文件夾中,具體復(fù)制方法隨便查一下就有了。
復(fù)制完成后是這樣

我這里的界面是用”explorer.exe .“打開(kāi)的,可以百度一下這個(gè)的含義,這里不過(guò)多贅述。
2.接下來(lái)是創(chuàng)建一個(gè)自己的湍流模型
這里以kEpsilon模型為例,在其中添上一點(diǎn)小小的輸出
具體做法如下,找到MomentumTransportModels\momentumTransportModels\RAS文件夾,里邊是RANS湍流模型的源文件,新建一個(gè)叫做kEpsilon_NEW的文件夾,將文件夾kEpsilon中的兩個(gè)文件,kEpsilon.H和kEpsilon.C復(fù)制到kEpsilon_NEW文件夾中,改名為mykEpsilon.H , mykEpsilon.C,
打開(kāi).H .C文件,將所有kEpsilon關(guān)鍵詞改為mykEpsion我這里的操作是通過(guò)文檔的關(guān)鍵詞替換功能實(shí)現(xiàn)的,這樣不容易出錯(cuò)。在mykEpsilon.C文件中隨便一個(gè)位置,只要不會(huì)報(bào)錯(cuò),打上? Info << nl << "This is THE new turbulent model :mykEpsilon" << nl << nl;? ?
至此,我們完成的新的湍流模型的創(chuàng)建。
3.創(chuàng)建軟鏈接ln -s
回到上級(jí)文件夾MomentumTransportModels\momentumTransportModels,進(jìn)入lnInclude文件,在該文件中輸入
ln -s ../RAS/kEpsilon_NEW/mykEpsilon.H mykEpsilon.H
以及
ln -s ../RAS/kEpsilon_NEW/mykEpsilon.C mykEpsilon.C
就創(chuàng)建了兩個(gè)文件的軟鏈接,軟連接的含義就是一個(gè)變化另一個(gè)也變化,如果想知道是否鏈接成功,就使用ls -l命令,看對(duì)應(yīng)的文件是否有鏈接到位,像這樣:
lrwxrwxrwx 1 zsz-linux zsz-linux? 42 Jun? 4 14:57 mykEpsilon.C -> ../RAS/kEpsilon_NEW/mykEpsilon.C
lrwxrwxrwx 1 zsz-linux zsz-linux? 42 Jun? 4 14:57 mykEpsilon.H -> ../RAS/kEpsilon_NEW/mykEpsilon.H
至此,鏈接成功。
4.修改創(chuàng)建庫(kù)的位置和添加實(shí)例化
由于創(chuàng)建的是不可壓的湍流模型,
在MomentumTransportModels\incompressible\kinematicMomentumTransportModels目錄下,打開(kāi)
kinematicMomentumTransportModels.C文件
添加上
// -------------------------------------------------------------------------- //
// RAS models
// -------------------------------------------------------------------------- //
#include "SpalartAllmaras.H"
makeRASModel(SpalartAllmaras);
#include "kEpsilon.H"
makeRASModel(kEpsilon);
**#include "mykEpsilon.H"
makeRASModel(mykEpsilon);**
返回到MomentumTransportModels\incompressible目錄,打開(kāi)Make文件夾的file文件,同樣修改最后一行:
LIB = $(FOAM_USER_LIBBIN)/libincompressibleMomentumTransportModels
至此,一切準(zhǔn)備就緒。
5.wmake
在MomentumTransportModels\incompressible目錄下輸入wmake
6.找個(gè)算例試試
找個(gè)使用kEpsilon湍流模型的案例,把constant中的momentumTransport文件中的湍流模型改為
simulationType? RAS;
RAS
{
? ? model? ? ? ? ? ?mykEpsilon;
? ? turbulence? ? ? on;
? ? printCoeffs? ? ?on;
}
然后運(yùn)行,如果有
This is THE new turbulent model :mykEpsilon
這句話,就代表成功,而且沒(méi)有重復(fù)導(dǎo)入的錯(cuò)誤。
如果想看會(huì)有報(bào)錯(cuò)的情況參考這篇文章:
*教學(xué)兼求教:如何在OF5/6中初步修改一個(gè)湍流模型*[link](https://forum.cfdac.com/t/topic/197)