OpenFOAM——设置非均匀边界方法总结
在使用OpenFOAM求解的时候我们经常需要设置非均匀的边界,比如我们在计算层流的时候,很多时候需要入口为充分发展的入口边界,下面我们就以入口处为充分发展的层流速度分布为总结OpenFOAM当中设定不均匀边界条件的方法
OpenFOAM当中对非均匀边界条件设置大致有以下几种方法:
方法一:直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中,详细操作见算例:《OpenFOAM——90度T型管》,链接:http://blog.sina.com.cn/s/blog_14d64daa10102xh4r.html
方法二:使用codedFixedValue边界
codedFixedValue
基本格式为:
边界名称
{
type codedFixedValue;
value uniform 0;
name rampedFixedValue; // name of generated BC
code
#{
operator==(min(10, 0.1*this->db().time().value()));
#};
//codeInclude
//#{
// #include "fvCFD.H"
//#};
//codeOptions
//#{
// -I$(LIB_SRC)/finiteVolume/lnInclude
//#};
}
对于入口处为充分发展的层流速度分布可如下设置边界条件:
也可以写为下面的形式
首先在0文件夹下设定入口
在system目录下新建一个名为codeDict的文件
然后在codeDict当中实现非均匀边界
方法三:编译新的边界条件
翻译整理自:https://pingpong.chalmers.se/public/courseId/7056/lang-en/publicPage.do?item=3209036
进入任意目录,在终端中输入:
foamNewBC -f -v parabolicVelocity
编译目录下的文件如下:
具体用途可参加苏老师《运用OpenFOAM编译器wmake编译自己的程序》,链接:http://blog.sina.com.cn/s/blog_5fdfa7e60100dciw.html
简单说一下这些文件的用途:
parabolicVelocityFvPatchVectorField.H包含了编译所需要的头文件,新边界的构造函数
parabolicVelocityFvPatchVectorField.C主要包含了编译边界的构造函数的实现,以及新的边界条件实现的相关函数
Make文件夹下文件的用途
files文件主要用于指定编译的文件以及编译完成的库保存的路径
options文件主要用于指定编译所需要链接的库以及编译所包含头文件所在的路径
这里我们只需要修改parabolicVelocityFvPatchVectorField.H和parabolicVelocityFvPatchVectorField.C两个文件
我们修改parabolicVelocityFvPatchVectorField.H文件
首先我们删除parabolicVelocityFvPatchVectorField.H文件下原来的私有成员(这里我们直接将其注释掉)
然后添加我们自己的私有成员
删除掉成员函数autoMap和rmap函数(这里我们直接将其注释掉)
完成以上操作保存parabolicVelocityFvPatchVectorField.H,转入parabolicVelocityFvPatchVectorField.C文件的修改,主要是对构造函数的实现、updateCoeffs()函数的实现和write()函数实现
与前面的parabolicVelocityFvPatchVectorField.H当中构造函数相对应的实现
updateCoeffs()函数的实现
write()函数实现
进入parabolicVelocity目录下
然后在终端中输入:
wmake libso
我们进入算例目录下,找到controlDict文件,在其末尾添加libs ("libparabolicVelocity.so");
进入算例目录下的0文件夹,将U文件当中的入口边界设置如下
然后回到算例目录,在终端中输入
pyFoamPlotRunner.py simpleFoam
求解完成
和前面通过直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中的计算结果一致
相关文件下载:https://pan.1dqxMfO 密码:q7os
方法四:使用swak4foam
具体可参加下面的链接:
http://suo.im/2B1Rl7
http://suo.im/p1XDp