PFC案例11,浆-岩充填结构面二维直剪,包含代码源文件、代码解释、曲线分析
实验室的直剪仪见过吧?今天咱们玩点更刺激的——用代码在虚拟世界复现岩体结构面的剪切破坏。打开案例包,先瞄一眼核心参数:法向应力2MPa,剪切速率0.1m/s,胶结强度30MPa...嗯,这配置是要搞事情啊。
先看模型搭建部分,这波操作堪称暴力美学:
; 剪切盒搭建
wall generate box ...
wall attribute density 2600 young 1e9
; 颗粒生成
ball distribute ... radius 0.008 0.012
ball attribute density 2600 young 3e9
; 胶结设置
contact method bond
contact property ... pb_ten 3e7 pb_coh 3e7
这里有个魔鬼细节——胶结参数设置的单位是帕斯卡不是兆帕!当年在这栽过跟头的我,看到数值3e7时DNA动了。颗粒young模量设3e9相当于花岗岩量级,wall用1e9模拟较软的围岩,这种刚度差异会让接触面更易产生滑动。

伺服控制这段代码最有意思:
[servoFlag = 0]
while math.abs(axz - target_stress)/target_stress > 0.02
wall.force(..., component.z)
wall.vel(..., component.z) *= 0.9
end
这段看似简单的循环藏着玄机:当实际应力与目标偏差超过2%时,自动调整墙体速度。就像用脚踩弹簧,踩轻了加点力,踩重了收点劲,直到压力稳定在目标值。调试时记得给速度乘衰减系数0.9,否则系统会像喝了假酒一样震荡。
PFC案例11,浆-岩充填结构面二维直剪,包含代码源文件、代码解释、曲线分析
剪切过程的数据记录堪称灵魂画手:
fish define record_data
global disp = wall.disp(..., component.x)
global shear_force = wall.force(..., component.x)
file.write(disp, shear_force)
end
[extract.step = 1000]
每1000步记录一次位移和剪力,这采样频率就像高速摄像机,既不会漏掉关键帧,也不会被海量数据撑爆内存。偷偷说,把step改到500能看到更丝滑的曲线,当然得做好等咖啡的觉悟。

跑完模拟,来看这张经典的剪应力-位移曲线(此处脑补J型曲线图)。前0.5mm是胶结的倔强抵抗期,曲线像坐火箭往上窜;到1.2mm突然断崖式下跌——这是胶结网络集体崩盘的信号;之后进入摩擦滑动阶段,曲线像心电图一样波动,那是颗粒们在跳摩擦disco呢。
有意思的是,某次把胶结强度从30MPa调到50MPa,结果峰值应力反而下降。后来发现是法向伺服没跟上,导致胶结断裂时法向约束不足。这反直觉的现象说明:参数不是越大越好,系统平衡才是王道。
最后奉上祖传调试秘籍:
- 系统震荡?试试把刚度比从1:3调到1:2
- 曲线出现诡异平台?检查接触是否设置成了bonded
- 法向应力漂移?把伺服循环里的0.9改成0.8~0.95微调
- 计算突然爆炸?八成是剪切速率设成了10m/s这种反人类数值
(代码包见附件,内含隐藏菜单:把颗粒换成多边形,你会打开新世界的大门...)


9677

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



