dylan
1
各位大佬,目前在学习用OpenFOAM模拟波浪与植物的相互作用,在参考这篇文章(Eulerian–Lagrangian flow-vegetation interaction model using immersed
boundary method and OpenFOAM https://doi.org/10.1016/j.advwatres.2019.02.006 )
后发现柔性植物的实现需要采用浸没边界法(IBM,Immersed-boundary methods) 我在foam-extend 4.0版本中找到了IBM的tutorials算例,但是才疏学浅,未能从算例中看出门道
想请问,有无相关的教程或者文献推荐,感谢各位!
2 个赞
我虽然不知道openfoam怎么搞,但我知道有个很棒的开源的matlab库https://github.com/nickabattista/IB2d 。里面是对于三篇论文的实现。以及这个网页https://www.math.nyu.edu/~peskin/ib_lecture_notes/index.html。
不过这个库的代码很多,我之前用python参考这个库写了一个100多行的二维版本在这里https://github.com/clatterrr/NumericalProjectsCollections/blob/master/WaterFlowFluid/ImmersedBoundary/ib2d.py
我所理解的浸没边界法,大致就是先解NavierStokes方程,求解出每个网格的力。而固体由一堆粒子组成,求出网格上的力后,再用插值方法计算固体上每个点的力,然后根据弹簧质点或有限元,或者其它什么模型,算出固体上质点的位移。比如上面那个库里还有NeoHookean模型。然后再由固体质点的位移再算回出网格上需要变化的物理量。
如果只讨论怎么把物理量从网格变换到质点,再从质点变换到网格的话,我觉得和混合网格粒子法挺像的…
6 个赞
如果你安装了foam-extend3.1及以上版本的话(没有的话推荐4.0版本),可以看到里面的算法框架和具体的实现代码,IBM总体上分为连续力方法和离散力方法,这块可以参考论文 Mittal-2005-Immersed Boundary Method,你给的那篇文章里我觉得用的是连续力IBM,extend版本里实现的是离散力IBM。
如果你有兴趣的话可以参考这个Presentation foamextend-IBM,他讲了如何由真实物理边界条件(如无滑移、零梯度等BC)以及周围流体单元的值来插值得到IB单元的值,这是离散力IBM方法的关键,里面提到的最小二乘权重插值方法LSWM
可以参考Mittal的文章 Mittal-2011-JCP,这篇JCP里插值时变量放在网格顶点,而openfoam里变量放在网格体心,推导一下公式再看代码思路就会清晰很多。
6 个赞
贴一个上面提到的presentation里的图,流体单元、固体单元、IB单元、IB点
1 个赞
zty
8
你好,我也是在做流固耦合,装foam-extend4.0(unbuntu18.04)的时候一直出错,请问有什么靠谱安装的方法吗?
dylan
9
zty
10
我也是按照wiki 来的,我装到最后总是报错,有一个HUGE,已经试了好几天了,还没解决😮💨😮💨
dylan
11
zty
12
我搞定了,foam-extend 4.0一直有问题,但是4.1成功装好了,谢谢!