simpop

普通会员

关于流固耦合(FSI)模拟

流固耦合FSI(Fluid-Structure-Interaction)用来描述移动或变形的固体与流体内流场或外流场之间相互作用、相互影响的问题。

工程仿真中一般忽略流体对固体的影响(假定固体为无形变的绝对刚体),但在有些问题中,固体变形不可忽略,流体与固体的相互作用对结果起关键作用,因此需要使用流固耦合的方法分析问题。例如,采用流固耦合方法对带有系泊系统的海洋平台的动态分析,心血管仿真分析应用等。

对于不同耦合度的物理问题,可根据图1选用相应的FSI数值模拟方法。例如,可采用单向耦合的方法来处理流固弱耦合问题,双向显式/隐式耦合法处理强耦合问题,双向完全耦合法处理比强耦合更强的问题。


图1 流固耦合分类

其中:

  • 双向显式/隐式法采用分步计算法(Partitioned Method),如图 4所示,流体和固体由各自对应的求解器单独求解,然后通过界面进行信息交换,流体传递给固体压力和粘性力,固体反馈给流体形变和速度。显式计算法中的流体和固体在每个时间步长内只进行一次信息交换,而隐式计算法中的流体和固体在每个时间步长内进行多次交换迭代达到收敛。

  • 完全耦合法则采用整体计算法(Monolithic)将流体和固体的各自的控制方程集成为一组方程进行整体耦合求解。整体计算法相比分步计算法求解准确,但需要开发新的矩阵求解方法且计算量巨大,分布计算法则相对灵活,通过对现有流体和固体求解器进行整合即可使用,因此在工业界应用广泛。


图2 FSI数值计算法


OpenFOAM中的FSI工具包





Tukovic等基于foam-extend版本开发了采用分布计算法的FSI工具包。
foam-extend的下载安装参考https://openfoamwiki.net/index.php/Installation/Linux/foam-extend-4.0/Ubuntu

FSI 工具包的下载安装参考

https://openfoamwiki.net/index.php/Extend-bazaar/Toolkits/Fluid-structure_interaction



以下内容基于foam-extend-4.0版本下的FSI工具包。

FSI工具包在下载解压后会出现FluidSolidInteraction文件夹,其中包含教程run和源代码src子文件夹,如图3所示。

接下来对src文件夹下的fluidSolidInteraction库和fsiFoam求解器进行详细说明,并选取run下的一个算例进行演示。



图3 FSI工具包文件结构


01

fluidSolidInteraction库


fluidSolidInteraction文件夹中含有Make文件夹,编译后会生成libfluidSolidInteraction.so库,库中主要包含三大类(class):

1

fluidSolidInterface类: 流体和固体的信息交换都通过fluidSolidInterface来实现,如插值计算,流场力和固体形变交换,残差控制等。 

2

fluidSolvers内对应的各流体求解器的类:如类比icoFoam的icoFluid,类比pisoFoam的pisoFluid。 

3

solidSolvers内对应的各固体求解器的类:如unsTotalLagrangianSolid。


02

fsiFoam求解器


fsiFoam是基于双向隐式分步计算法求解强耦合问题的求解器,其fsiFoam.中的主程序部分代码如下:


图4 fsiFoam.中的主程序部分代码

Line 51: 创建了fluidSolidInterface类下的fsi对象

Line 76-97: 隐式分步计算法的计算主程序

Line 80: 根据上一步固体解更新固体形变

Line 82: 根据固体形变,移动流体域网格

Line 84: 调取流体求解器

Line 86: 根据流场解更新施加于固体域的流场力

Line 88: 调取固体求解器

Line 90-91: 计算残差值

Line 95-96: 判断残差值是否在指定迭代次数内收敛到指定大小;

若不满足条件,返回重新执行Line76-97;若满足则进入下一个时间步。



图5 fsiFoam求解流程图


03

算例教程


算例教程选用run/fsiFoam下的beamInCrossFlow算例,几何模型见图6,物理条件为模拟下方长方形固体在受到无粘流体在流道内从左往右流动流场下的弹性反应。

图 6 beamInCrossFlow几何模型


图 7展示了OpenFOAM中FSI算例的文件结构,可以看出FSI算例区别于非FSI算例,增加了solid文件夹以及几个相关的links。关联后可以看到在solid文件夹下的出现了fluid内的0和system文件夹,见青色部分。


图7 beamInCrossFlow文件结构


fluid/solid文件夹下的constant内新增了fluidProperties和solidProperties字典文件,用户可以在这两个字典文件中分别指定流体求解器和固体求解器,例如该算例选用了consistentIcoFluid作为流体求解器,unsTotalLagrangianSolid作为固体求解器(图 8)。


图 8 流体/固体求解器的设定

fluid/constant下的fsiProperties字典文件控制流固耦合相关参数(图 9),例如solidPatch/fluidPatch关键字分别指定固体和流体各自耦合面,relaxationFactor关键字设置松弛因子,outerCorrTolerance指定残差收敛容度等。


图 9 流固耦合控制字典

执行fluid文件夹下的Allrun脚本运行算例,其运行结果为:


图 10 运行结果