pfc5.0,双向流固耦合作用下岩体劈裂注浆
最近在搞岩体注浆模拟的时候,发现PFC5.0的流固耦合模块真香。特别是遇到高压注浆导致岩层劈裂的情况,传统软件要么算不动,要么得拆分成独立步骤计算。今天就拿双向流固耦合这事儿唠唠,怎么用颗粒流方法还原注浆管怼进岩体时"浆液劈叉"的现场。
先整点硬核的,看看流体域初始化怎么搞。PFC里玩流体得先搭个管道网络,下面这几行代码决定了浆液能浪多远:
fish define create_flow_network
loop foreach local ball ball.list
if ball.pos.z > 30 then
ball.group = 'injection_pipe'
ball.fix = 1
endif
endloop
flow_domain create ...
flow_domain permeability 1e-12 # 岩体渗透率别瞎设,实测数据往里怼
end
这里把注浆管区域颗粒固定住,相当于给注浆嘴定位。渗透率参数建议直接抄工地抽水试验报告,手滑多输个零能让模拟直接跑偏到姥姥家。
浆液推进过程中最带劲的就是看裂缝怎么分叉。这时候得盯着颗粒间接触力变化,上个小脚本实时抓取应力集中区:
fish define crack_monitor
local max_stress = 0
loop foreach local cnt contact.list
if cnt.force > max_stress then
max_stress = cnt.force
io.out('爆裂预警!接触力峰值:' + string(max_stress))
endif
endloop
end
这玩意儿跑起来控制台会跟抽风似的狂刷数据,但关键时刻真能逮住裂缝起裂点。记得配合domain的stress计算结果交叉验证,防止颗粒离散性带来的误判。
双向耦合最玄学的是压力回弹。某次模拟发现注浆压力曲线跟过山车似的,后来查代码发现漏了动态粘度修正:
material 'grout' viscosity = 1.0 * (1.0 + 0.05*global.time) # 时间硬化特性
flow_domain fluid_modulus = 2e9 # 别拿水参数糊弄水泥浆
浆液粘度随凝固时间变化的特性不加进去,模拟结果比童话还美好。实际注浆时泵压表指针会抽搐,对应到代码里就得让模量参数跟着颗粒位移量动态调整。
后处理阶段推荐用自带Python API整活,导出裂缝拓扑图比直接看GUI更带感:
import matplotlib.pyplot as plt
broken_bonds = [c for c in pfc.contact.list() if c.is_broken]
x = [c.pos.x for c in broken_bonds]
y = [c.pos.y for c in broken_bonds]
plt.scatter(x, y, c='r', s=0.1)
plt.savefig('crack_pattern.png', dpi=300)
这把操作能生成比甲方汇报PPT里更真实的裂缝分布图,注意把散点尺寸调小点,不然密集恐惧症患者当场去世。
最后说个踩坑经验:流固耦合计算步长不是玄学,得满足库朗数条件。试过暴力设置cycle 100000,结果流体直接穿透岩体跟穿模似的。后来老老实实用自动步长+动态阻尼才稳住,具体参数得看岩体颗粒级配情况。
搞完一套流程最大的成就感,是看到模拟结果里浆液像树根分叉一样在岩层里蔓延,和现场取芯照片能对上七八成。当然,要是电脑配置不够,可能分分钟钟教你做人——上次跑三维模型把工作站显卡都干烧了,那焦糊味至今难忘...

945

被折叠的 条评论
为什么被折叠?



