OpenFOAM——设置非均匀边界方法总结

在使用OpenFOAM求解的时候我们经常需要设置非均匀的边界,比如我们在计算层流的时候,很多时候需要入口为充分发展的入口边界,下面我们就以入口处为充分发展的层流速度分布为总结OpenFOAM当中设定不均匀边界条件的方法

OpenFOAM当中对非均匀边界条件设置大致有以下几种方法:

方法一:直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中,详细操作见算例:OpenFOAM——90T型管》,链接: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

        //#};

}

 

对于入口处为充分发展的层流速度分布可如下设置边界条件:

OpenFOAM——设置非均匀边界方法总结_第1张图片

也可以写为下面的形式

首先在0文件夹下设定入口

OpenFOAM——设置非均匀边界方法总结_第2张图片

system目录下新建一个名为codeDict的文件

OpenFOAM——设置非均匀边界方法总结_第3张图片

然后在codeDict当中实现非均匀边界

OpenFOAM——设置非均匀边界方法总结_第4张图片

OpenFOAM——设置非均匀边界方法总结_第5张图片

OpenFOAM——设置非均匀边界方法总结_第6张图片

方法三:编译新的边界条件

翻译整理自:https://pingpong.chalmers.se/public/courseId/7056/lang-en/publicPage.do?item=3209036

 

进入任意目录,在终端中输入:

foamNewBC -f -v parabolicVelocity

OpenFOAM——设置非均匀边界方法总结_第7张图片

OpenFOAM——设置非均匀边界方法总结_第8张图片

编译目录下的文件如下:

OpenFOAM——设置非均匀边界方法总结_第9张图片

具体用途可参加苏老师《运用OpenFOAM编译器wmake编译自己的程序》,链接:http://blog.sina.com.cn/s/blog_5fdfa7e60100dciw.html

简单说一下这些文件的用途:

OpenFOAM——设置非均匀边界方法总结_第10张图片

parabolicVelocityFvPatchVectorField.H包含了编译所需要的头文件,新边界的构造函数

OpenFOAM——设置非均匀边界方法总结_第11张图片

parabolicVelocityFvPatchVectorField.C主要包含了编译边界的构造函数的实现,以及新的边界条件实现的相关函数 

Make文件夹下文件的用途 

files文件主要用于指定编译的文件以及编译完成的库保存的路径

OpenFOAM——设置非均匀边界方法总结_第12张图片

OpenFOAM——设置非均匀边界方法总结_第13张图片

options文件主要用于指定编译所需要链接的库以及编译所包含头文件所在的路径

OpenFOAM——设置非均匀边界方法总结_第14张图片

OpenFOAM——设置非均匀边界方法总结_第15张图片

这里我们只需要修改parabolicVelocityFvPatchVectorField.HparabolicVelocityFvPatchVectorField.C两个文件 

我们修改parabolicVelocityFvPatchVectorField.H文件

首先我们删除parabolicVelocityFvPatchVectorField.H文件下原来的私有成员(这里我们直接将其注释掉)

OpenFOAM——设置非均匀边界方法总结_第16张图片

然后添加我们自己的私有成员

OpenFOAM——设置非均匀边界方法总结_第17张图片

删除掉成员函数autoMaprmap函数(这里我们直接将其注释掉)

OpenFOAM——设置非均匀边界方法总结_第18张图片

完成以上操作保存parabolicVelocityFvPatchVectorField.H,转入parabolicVelocityFvPatchVectorField.C文件的修改,主要是对构造函数的实现、updateCoeffs()函数的实现和write()函数实现

与前面的parabolicVelocityFvPatchVectorField.H当中构造函数相对应的实现 

OpenFOAM——设置非均匀边界方法总结_第19张图片

OpenFOAM——设置非均匀边界方法总结_第20张图片

OpenFOAM——设置非均匀边界方法总结_第21张图片

OpenFOAM——设置非均匀边界方法总结_第22张图片

OpenFOAM——设置非均匀边界方法总结_第23张图片

updateCoeffs()函数的实现 

OpenFOAM——设置非均匀边界方法总结_第24张图片

write()函数实现

OpenFOAM——设置非均匀边界方法总结_第25张图片

进入parabolicVelocity目录下

然后在终端中输入:

wmake libso

OpenFOAM——设置非均匀边界方法总结_第26张图片

    我们进入算例目录下,找到controlDict文件,在其末尾添加libs ("libparabolicVelocity.so"); 

OpenFOAM——设置非均匀边界方法总结_第27张图片

进入算例目录下的0文件夹,将U文件当中的入口边界设置如下

OpenFOAM——设置非均匀边界方法总结_第28张图片

然后回到算例目录,在终端中输入

pyFoamPlotRunner.py simpleFoam

    求解完成

OpenFOAM——设置非均匀边界方法总结_第29张图片

OpenFOAM——设置非均匀边界方法总结_第30张图片

和前面通过直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中的计算结果一致

OpenFOAM——设置非均匀边界方法总结_第31张图片

相关文件下载:https://pan.1dqxMfO 密码:q7os

方法四:使用swak4foam

具体可参加下面的链接:

http://suo.im/2B1Rl7

http://suo.im/p1XDp


转载于:https://www.cnblogs.com/liusuanyatong/p/11259636.html

你可能感兴趣的:(OpenFOAM——设置非均匀边界方法总结)