欢迎光临散文网 会员登陆 & 注册

OpenFOAM修改湍流模型之后出现#duplicate entry的解决办法

2021-06-04 16:32 作者:线代制霸  | 我要投稿

文章是发在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

然后复制到个人的文件夹中,具体复制方法随便查一下就有了。

复制完成后是这样

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210604160335188.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzcwODA5,size_16,color_FFFFFF,t_70)

我这里的界面是用”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)


OpenFOAM修改湍流模型之后出现#duplicate entry的解决办法的评论 (共 条)

分享到微博请遵守国家法律