OpenFOAM修改湍流模型之后出现#duplicate entry的解决办法
文章是发在CSDN中的,链接是https://blog.csdn.net/qq_42370809/article/details/117563354?spm=1001.2014.3001.5501
下边是正文,
## OpenFOAM修改湍流模型之后出现#duplicate entry的解决办法
参考文章:
*OpenFOAM-Duplicate Entry 解决办法*:[link](https://zhuanlan.zhihu.com/p/356859133)
*如何在OF6中添加新的湍流模型?* :[link](https://forum.cfdac.com/t/topic/103/2)
主要流程和第二篇文章基本一致,因为在实际操作过程中遇到过一些博主也没有遇到的问题,所以从头到尾记录一下。
使用的平台是WSL的Ubuntu20.04,OpenFOAM版本是OpenFOAM-v8
1. 首先拷贝文件
因为一般来讲openfoam的源文件是被锁住的,不允许操作,所以首先进入root用户
sudo -i
输入密码
找到MomentumTransportModels文件夹的位置,我这里是下边的地址。
\\wsl$\Ubuntu-20.04\opt\openfoam8\src\MomentumTransportModels
然后复制到个人的文件夹中,具体复制方法随便查一下就有了。
复制完成后是这样

我这里的界面是用”explorer.exe .“打开的,可以百度一下这个的含义,这里不过多赘述。
2.接下来是创建一个自己的湍流模型
这里以kEpsilon模型为例,在其中添上一点小小的输出
具体做法如下,找到MomentumTransportModels\momentumTransportModels\RAS文件夹,里边是RANS湍流模型的源文件,新建一个叫做kEpsilon_NEW的文件夹,将文件夹kEpsilon中的两个文件,kEpsilon.H和kEpsilon.C复制到kEpsilon_NEW文件夹中,改名为mykEpsilon.H , mykEpsilon.C,
打开.H .C文件,将所有kEpsilon关键词改为mykEpsion我这里的操作是通过文档的关键词替换功能实现的,这样不容易出错。在mykEpsilon.C文件中随便一个位置,只要不会报错,打上 Info << nl << "This is THE new turbulent model :mykEpsilon" << nl << nl;
至此,我们完成的新的湍流模型的创建。
3.创建软链接ln -s
回到上级文件夹MomentumTransportModels\momentumTransportModels,进入lnInclude文件,在该文件中输入
ln -s ../RAS/kEpsilon_NEW/mykEpsilon.H mykEpsilon.H
以及
ln -s ../RAS/kEpsilon_NEW/mykEpsilon.C mykEpsilon.C
就创建了两个文件的软链接,软连接的含义就是一个变化另一个也变化,如果想知道是否链接成功,就使用ls -l命令,看对应的文件是否有链接到位,像这样:
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.修改创建库的位置和添加实例化
由于创建的是不可压的湍流模型,
在MomentumTransportModels\incompressible\kinematicMomentumTransportModels目录下,打开
kinematicMomentumTransportModels.C文件
添加上
// -------------------------------------------------------------------------- //
// RAS models
// -------------------------------------------------------------------------- //
#include "SpalartAllmaras.H"
makeRASModel(SpalartAllmaras);
#include "kEpsilon.H"
makeRASModel(kEpsilon);
**#include "mykEpsilon.H"
makeRASModel(mykEpsilon);**
返回到MomentumTransportModels\incompressible目录,打开Make文件夹的file文件,同样修改最后一行:
LIB = $(FOAM_USER_LIBBIN)/libincompressibleMomentumTransportModels
至此,一切准备就绪。
5.wmake
在MomentumTransportModels\incompressible目录下输入wmake
6.找个算例试试
找个使用kEpsilon湍流模型的案例,把constant中的momentumTransport文件中的湍流模型改为
simulationType RAS;
RAS
{
model mykEpsilon;
turbulence on;
printCoeffs on;
}
然后运行,如果有
This is THE new turbulent model :mykEpsilon
这句话,就代表成功,而且没有重复导入的错误。
如果想看会有报错的情况参考这篇文章:
*教学兼求教:如何在OF5/6中初步修改一个湍流模型*[link](https://forum.cfdac.com/t/topic/197)