本文主要是介绍PFC流固耦合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
流固耦合
浮力的实现
流体网格生成
流体框架实现浮力
达西流案例简介
流固耦合
浮力的实现
首先生成盒子和ball,然后定义水位线,通过浮力计算公式求解出浮力。
new
domain extent -10 10 wall generate box -5 5ball create id 1 position 0 4 radius 0.5
ball attribute density 0.9e3 damp 0.7
cmat default model linear property kn 1e7def fuli(V_underWater)fuli=V_underWater*1e3*9.8 ;浮力计算公式,定义成fish函数
end[bp=ball.find(1)] ;给出指针
def get_Vpos_y=ball.pos.y(bp) ;参数必须要给定指针fuliOnKeli=0if pos_y+0.5 <= 0 then ;球体完全浸入水中V_water=math.pi*0.5*0.5fuliOnKeli=fuli(V_water)else if pos_y-0.5>0 then ;球体未在水中fuliOnKeli=0else ;讨论只有一部分球体在水中的情况h = 0.5 - math.abs(pos_y-zf_)Vcap=math.pi*h^2*(3*0.5 - h) /3.0 ;算帽子部分的体积if pos_y>0 thenfuliOnKeli=fuli(Vcap)elsefuliOnKeli=fuli(math.pi*0.5*0.5-Vcap) ;总体积减去帽子部分的体积endif endif ball.force.app.y(bp)=fuliOnKeli ;force applyvel=ball.vel.y(bp)
endset gravity 9.8 ;给出重力,让球体下降set timestep fix 1e-4set fish callback -1.0 @get_Vgeometry generate box -5 5 -0.1 0.1
;在中间部分使用geometry来生成一个box表示水位线
history id 1 @vel ;记录速度的变化
solve time 15 ;solve 15秒
流体网格生成
使用create_mesh程序来生成node文件和element文件。
在pfc3d中实现
new domain extent -10 10configure cfd cfd read nodes Node.dat cfd read elements Elem.dat
流体框架实现浮力
element cfd attribute keyword ... <range>
设置cfd元素的属性
new
domain extent -10 10 wall generate box -5 5 ;生成box
ball create id 1 position 0 0 4 radius 0.5
cmat default model linear property kn 1e7
ball attribute density 0.1e3 damp 0.7 ;生成ball,并分配属性
configure cfd
cfd read nodes Node.dat
cfd read elements Elem.dat ;生成流体网格cfd buoyancy on ;打开浮力开关
element cfd attribute density 1000.0
element cfd attribute viscosity 1.5[bp=ball.find(1)]def jiancevel=ball.vel.z(bp)end ;监测速度set gravity 9.8set timestep fix 1e-4set fish callback -1.0 @jiance ;得到实时监测结果history id 1 @vel
solve time 15
达西流案例简介
darcy.py
使用达西求解器
改变网格大小
self.mesh = fp.Grid3D(nx=10, ny=20, nz=10, dx=0.01, dy=0.01, dz=0.01)
定义流体边界和压力
solver.inlet_mask = fy == 0 solver.outlet_mask = reduce(np.logical_and,(fy==0.2, fx<0.06, fx>0.04, fz>0.04, fz<0.06)) solver.set_inflow_rate(1e-5) solver.set_pressure(0.0, solver.outlet_mask)
一个网格里至少要放50个颗粒,如果颗粒数过少,在计算孔隙率时会有较大误差,甚至报错。
这篇关于PFC流固耦合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!