PFC2D5.0颗粒流直剪试验代码及成样预压加载全过程
PFC2D5.0颗粒流 直剪试验 代码 成样预压加载全过程。 可以自己更改试样尺寸、孔隙率、围压大小、加载速率等参数。 本案例提供参考可以自行修改参数或者按照要求二次加工部分代码有注释可以参考学习。最近在折腾PFC2D直剪试验模拟发现这玩意儿真是颗粒流分析的利器。今天就带大家手搓一个从成样到剪切全流程的脚本咱们边写代码边唠嗑保准让你改参数像调火锅蘸料一样顺手。先整点硬菜——环境搭建。咱这砂土试样就像包饺子得先和面生成颗粒; 成样阶段 domain extent -5 5 -5 5 ;地盘大小随便改比如2x2米就改成0 2 0 2 wall generate box ... width [sample_width] height [sample_height] ;试样尺寸开关在这 ball distribute porosity 0.3 ... radius 0.01 0.02 ;粒径分布看这里 ball attribute density 2650 damp 0.7这孔隙率0.3看着不顺眼直接改porosity后面的数值0.25到0.4随你折腾。不过注意粒径别太极端小心颗粒要么挤成沙琪玛要么散成芝麻饼。PFC2D5.0颗粒流 直剪试验 代码 成样预压加载全过程。 可以自己更改试样尺寸、孔隙率、围压大小、加载速率等参数。 本案例提供参考可以自行修改参数或者按照要求二次加工部分代码有注释可以参考学习。压密阶段得像揉面团得慢慢来; 预压加载 fish define apply_confining(stress) loop local i (1,wall.count) if wall.isServo(i) wall.servo.stress stress ;围压大小在这儿调戏 endif endloop end [apply_confining(1e5)] ;默认100kPa围压想模拟深海就加俩零 cycle 5000 calm 50 ;冷静期防止颗粒蹦迪 solve ratio 1e-5 ;平衡判据强迫症可以改成1e-6这里藏着个彩蛋wall.isServo(i)这货其实在控制边界墙的伺服机制。要是发现试样乱跑八成是这里的判断没写对建议加个print调试大法。重头戏剪切阶段得稳准狠; 剪切加载 fish define shear_speed local top_wall wall.find(3) ;假设上剪切墙编号是3 wall.vel.x(top_wall) 0.01 ;剪切速率暗门在此 end [shear_speed] cycle 10000 ;加载步数看试样大小 result export ... stress_strain.txt ;数据输出记得定期保存加载速率这玩意儿别太虎建议从1e-5开始试。见过新手直接怼0.1结果颗粒集体起飞跟放烟花似的——好看是好看数据全废了。最后安利几个私藏调试技巧孔隙率死活达不到预期在ball distribute后面加个max 1000试着重生成剪切时出现大裂缝把contact method改成pb_linear试试数据突变别慌先plot hist stress看力链变化这脚本就像乐高骨架搭好了随便改装。比如要模拟粗粒土把粒径上限调到0.05想做应变软化在剪切阶段插个速度反向循环。反正源码在手天下我有记得改参数前备份就好——别问我怎么知道的都是血泪教训啊