本文摘要(由AI生成):
本文介绍了PFC中流固耦合的三种方式,并通过模拟颗粒落入流动的水中的单向耦合例子进行了详细说明。该例子中,使用生成方形网格的小程序生成节点和单元文件,并设置了颗粒和水流的属性。模拟结果显示,粒径大的颗粒先落入河底,粒径小的颗粒随水流飘得比较远,符合常理。同时,还展示了水流对颗粒的拖拽力以及颗粒粒径在x向的分布情况,验证了流固耦合模拟的可行性和准确性。
PFC中流固耦合有三种方式:
1、单向流固耦合(one_way):也就是颗粒受流体作用,但是流体不受影响。
2、利用达西定律实现双向耦合
3、和第三方的算法或者流体软件进行耦合(比如OpenFOAM)
这里做一个单向耦合的小例子——模拟颗粒落入流动的水中。
由于当水比较多的时候,流速不太容易受到下落的颗粒影响,这里简化为单向耦合是合理的。
首先生成cfd网格和颗粒。这里的网格使用我之前帖子中生成方形网格的小程序生成节点和单元文件。
new
domain extent -3 3
wall generate box -2 2 -1 1 -0.5 2
wall delete walls range id 2[x_pos=0.5]
[height=1]
[box_chicun=0.5]
[rdMin=0.01]
[rdMax=0.03]ball generate radius [rdMin] [rdMax] number 1000 tries 2000000 range x [x_pos+rdMin] [x_pos+box_chicun-rdMin] ...
y [-box_chicun*0.5+rdMin] [box_chicun*0.5-rdMin] z [height+rdMin] [height+box_chicun*2-rdMin]
cmat default model linear method deform emod 100e6 kratio 1.5 property fric 0.5
ball attribute density 2.7e3 damp 0.5
set gravity 0 0 -9.8
configure cfd
cfd read nodes Node.dat
cfd read elements Elem.dat
element cfd attribute density 1000.0
element cfd attribute viscosity 1.5
define set_fluid_velocity
loop foreach local ele element.cfd.list
element.cfd.vel.x(ele) = -0.5
element.cfd.vel.y(ele) = 0.0
element.cfd.vel.z(ele) = 0.0
end_loop
end
@set_fluid_velocitysave sample
之后进行一个下落:
这里颗粒的颜色代表粒径,可以看到粒径大的颗粒先落入河底,粒径小的颗粒随水流飘得比较远,这里也是符合常理的。
这里显示一下水流对颗粒的拖拽力:
可以看到大颗粒所受的力比较大,而且拖拽力也是在变化的。
这里显示颗粒粒径在x向的分布:
可以比较数值化的看出不同粒径在水流中的分离。