OpenFOAM——设置自定义非均匀场区域

在使用OpenFOAM进行计算的时候,我们需要对计算域设置非均匀场,比如最典型的溃坝算例,在开始计算以前,我们需要首先设定某一区域的水的体积分数为1,就是下面这样的:

 

有可能我们在计算传热问题的时候,会在计算域内设置一块高温(低温)区域,比如下面这样的:

 

我们一般可以采用setField来针对比较规则的区域进行非均匀场的设置,而针对比较复杂的区域,我们也可以采用funkySetFields来设定(具体可见苏老师的博文:http://blog.sina.com.cn/s/blog_5fdfa7e60100gy0e.html)。其实除了上面的方法,是否还有其他方法呢?答案当然是肯定的,下面就以在计算域当中设置一块三角形区域的非均匀场为例。

我的几何很简单,就是一个四四方方的正方形,网格见下:

 

正方形的边长为10米,每条边上设置500个节点,将边界全部设置为WALL

然后我们在OpenFOAM的安装目录下,找到溃坝算例(我的目录为/opt/openfoam5/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/),拷贝出来。

然后我们用命令将.msh格式的网格转换为OpenFOAM能够接受的网格:

 

 

 

 

然后我们转到0文件夹下:

p_rgh文件修改为:

 

U文件为:

 

alpha.water文件为:

 

 

然后我们编写如下的python脚本:

 

 

说明一下:其实和前面设置非均匀入口的方法是一致的,首先我们采用postProcess -time 0 -func writeCellCentres将边界和内部单元的坐标写出到文件当中,然后我们通过脚本去判断符合我们设置的区域,从而设置非均匀场。这里的设置条件就是三角形的三条边,三角形的三条边的方程分别是

 

 

 只要坐标点落在三条边以内,就满足我们的条件

非均匀场设置完成,我们可在paraview当中查看设置的结果:

 

posted @ 2017-09-25 00:00  硫酸亚铜  阅读(2341)  评论(0编辑  收藏  举报