openFoam4.0 学习记录(四):Tutorials 之 Stress analysis of a plate with a hole (后续)

在第二篇学习记录里,我们探讨了Stress analysis of a plate with a hole,设置了拉应力,求平板内部的压力。这一次,我想试着用mesh grading 的方法,让结果更接近解析解。

第二篇学习记录传送门:

https://blog.csdn.net/weixin_39124457/article/details/89186816

mesh grading 的介绍在第三篇学习记录里也有讲到,传送门:

https://blog.csdn.net/weixin_39124457/article/details/89503962

———————————————————————————-分割线——————————————————————————————–

先到run的目录里,将上次做的备份:

cd $FOAM_RUN
cp -r plateHole plateHole_meshgrading

还能看到上一次的“残骸”,输入:

./Allclean

Allclean是一个指令集,帮我们将结果清零,效果如下:

打开system里的blockMeshDict文件,具体代码就不一一放啦!

这里可以看到,后面的simpleGrading的设置。下面放张图,方便看对应区域:

在第二篇学习记录里,应力是这样的:

可以看到,在洞口周围分辨率不高,除了提高整体的网格分辨率之外,我们还可以应用meshGrading的方法,让贴近洞口的网格更小,从而提高那个区域的分辨率。

看上图,我们可以这样调整:0区调成(2 0.5 1),1区调成(2 0.5 1),运行blockMesh,却报错了:

注意这个inconsistent grading,可能是因为我只修改了0区,但是忽略了4区!

为了更深入理解这个meshgrading的使用方式,我作了一些修改:

这次我只对x1方向(可以参考上方的区域图)作了meshgrading,这次blockMesh后,成了

终端的输出

用paraFoam指令打开看看:

变更后

这个是变更前的

主要观察跟洞口接壤的两个区域,不难看出距离洞口近的格子比远端的要小一些。

另外,我也发现了上面出错的原因。我对0区的x2方向做了grading,但是没有对4区的也做,这就导致了网格的坐标在两区域之间的交界处对不上。

我先按照这个网格去运行一下,在运行之前,也要调整controlDict里面的一些参数:

还记得第一篇文章说的Courant数吗?我们必须要保证这个数小于一,可以理解为,这是运行求解器之前要保证的基本条件之一。

对于均匀网格,Courant数可以这么计算:

其中deltax是固定不变的;而当我们使用了meshgrading对网格进行一些缩放,此时deltax就不是固定了的,就得按照下面的公式:(来源:OPENFOAM USERGUIDE)

其中R是调整的比例(这里R=2),n是该方向的网格数(这里n=10),l是该方向的长度(l=0.5m)。

计算得deltaxs约为0.035m,可以看出比meshgrading之前的deltax=0.5m要小,在deltat和速度U不变的情况下,Courant的确会增大。但由于这次的例子是静态的,我们先不作修改。

结果很清晰,没有过多的网格的感觉。但是很奇怪,因为这个的效果比我增加网格数4倍的效果还要好:

增加网格分辨率时的效果

我很肯定是哪个地方出问题啦!

这是与解析解的比较。

这是增加网格分辨率后的比较

本章小结:

(1)学会用meshgrading(SimpleGrading)去改变网格在某个方向上的大小。

(2)meshgrading时要注意相邻区域也要同步。

(3)提高网格分辨率和做更好的grading的结果,贴近解析解的效果不明显。

下一次,我将继续这个案例,改变plate的尺寸,看看结果与解析解是否更接近。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片