PFC(5.0)模拟:GBM模型grain- based model pb-sj或pb-pb 单轴压缩。 模拟花岗岩等矿物晶体岩石多种矿物晶体模型其中矿物种类 数量分布可以自定义。 可以监测sj裂纹和各矿物内裂纹。PFC5.0的GBM模型玩岩石破裂是真有意思。这玩意儿能模拟花岗岩这类多矿物岩石的破裂过程特别是晶间裂纹和矿物内部裂纹的演化比传统连续介质模型带劲多了。咱们直接上干货看看怎么用代码实现花岗岩单轴压缩模拟。先整点基础设定矿物种类得先配置好。比如花岗岩常见的三种矿物; 矿物库配置 mineral create quartz density 2650 young 95e9 poisson 0.08 mineral create feldspar density 2630 young 75e9 poisson 0.22 mineral create biotite density 3000 young 35e9 poisson 0.25这段代码把石英、长石、黑云母的物理参数都定好了。注意黑云母的弹性模量明显低这会影响后续裂纹扩展路径。实际项目里这些参数得查文献或者做实验标定。构建晶粒结构是重头戏。用voronoi算法生成晶粒时得控制晶粒尺寸分布; 生成花岗岩试样 block create brick 0 0.1 0 0.1 0 0.02 grain generate voronoi diameter 2e-3 4e-3 number 200 grain attribute mineral quartz 45 feldspar 50 biotite 5diameter参数控制晶粒尺寸在2-4mm之间符合真实花岗岩的晶粒特征。矿物配比这里设的是45%石英50%长石5%黑云母这个比例可以根据实际岩样调整。重点来了最后记得用grain contact命令把晶界(pb-sj)和晶内(pb-pb)的接触类型区分开。PFC(5.0)模拟:GBM模型grain- based model pb-sj或pb-pb 单轴压缩。 模拟花岗岩等矿物晶体岩石多种矿物晶体模型其中矿物种类 数量分布可以自定义。 可以监测sj裂纹和各矿物内裂纹。加载条件设置要特别注意应变率控制地质材料模拟最忌讳加载速度太快; 单轴压缩设置 wall create id 1 plane position 0 0 0 normal 1 0 0 wall create id 2 plane position 0.1 0 0 normal -1 0 0 wall attr velocity-x 1e-5 cycle 1000这里让右侧墙以1e-5 m/step的速度移动相当于准静态加载。实际跑的时候要配合伺服控制防止系统失稳。监测裂纹可以用内置的crack监控器; 裂纹监测配置 measure create id 1 name sj_crack type contact measure create id 2 name pb_crack type grain history interval 100这样就能分别追踪晶界裂纹sjcrack和矿物内部裂纹pbcrack的发展情况。跑完模拟后用plot命令生成裂纹分布图能看到裂纹优先沿着黑云母晶界扩展——这和野外观察到的现象一致。有个坑得提醒晶界接触的强度参数设置直接影响裂纹类型。比如长石-黑云母晶界的粘结强度应该比石英-石英晶界低contact cmat default model linearpbond contact property lin_force 1e8 pb_ten 5e7 pb_coh 7e7这里的pbten是抗拉强度pbcoh是粘结强度。建议不同矿物间接触用不同cmat比如黑云母相关的接触强度参数可以调低30%。这样模拟出来的裂纹分布会更接近真实岩石的破裂模式。跑完模拟别急着关程序用fish脚本导出应力应变数据fish define save_data local file open(stress_strain.txt, w, 1) loop foreach local h his_id if h#type stress local s h#value local t h#time write(file, t, s) endif endloop close(file) end生成的应力应变曲线会出现典型的脆性岩石特征弹性段→裂纹萌生→应力降→残余强度。对比晶界裂纹和矿物内裂纹的发展时序能发现低强度矿物如黑云母总是最先出现裂纹。最后说个实战技巧想模拟真实花岗岩的各向异性可以通过调整晶粒长轴方向分布来实现。用grain attribute orientation命令设置晶粒取向配合不同矿物组的各向异性弹性参数能搞出相当有意思的破裂模式。不过这个属于进阶操作新手建议先把各向同性模型玩明白了再尝试。