1 引言
采矿岩石破碎学(Rock Fragmentation)主要处理通过钻孔和爆破破碎岩石的理论与实践,在一些情形下它与爆破工程联系在一起,研究炸药和起爆系统,露天边坡和地下采场爆破设计,巷道掘进以及岩石破碎对环境的影响、安全和风险评估。岩石破碎研究的一个主要兴趣是与崩落采矿(block caving)【采矿引起地表沉降的影响因素(Factors Influencing Surface Subsidence);崩落采矿诱发地表沉降预测的经验方法(Caving Angle)地下采矿引起的地表沉降分析】相关,包括脆性岩体的原岩断裂,节理扩展以及岩桥破坏。
2 研究范围
岩石破碎的其中一个研究方向是使用合成岩体模型(Synthetic Rock Mass Model)来表征节理化岩体,进而研究岩石和岩桥的断裂。主要的研究方向包括:
(1) 使用体积断裂强度(Volumetric Fracture Intensity)评估岩体特征和破碎性能;
(2) 使用离散断裂网络DFN描述岩体的破碎特征以及对工程地质力学的影响;
(3) 使用合成岩体模型估算几何的和力学的REV【代表性元素体积REV (Representative Elemental Volume)】,研究节理化岩体的强度和变形行为, 例如围压对变形模量的影响;
(4) 使用合成岩体模型模拟节理化岩体强度的各向异性以及岩石尺度对强度的影响;
(5) 爆破产生的微震对合成岩体模型的影响;
(6) 合成岩体中UJRM(Ubiquitous Joint Rock Mass)对崩落行为的影响【UJRM数据集---Ubiquitous Joint Rock Mass Modelling; Ubiquitous节理岩体模拟(Ubiquitous Joint Rock Mass Modelling)】;
3 研究途径
PFC和3DEC用于研究岩体的破碎特征,其中建立合成岩体的思路是相同的,不同之处在于完整岩石的表示方式。在PFC中,完整岩石表示为粘合颗粒的集 合体,即所谓的BPM(Bonded Particle Modeling);而在3DEC中完整岩石表示为粘合块体的集 合体,即所谓的BBM(Bonded Block Modeling)【粘合块体模拟BBM---Bonded Block Modeling】。在完整岩石模型中嵌入离散断裂网络DFN就生成合成岩体【节理化岩石的合成岩体模型[A SRM Model for Jointed Rock]; 合成岩体模拟[Synthetic Rock Mass (SRM) modeling]】。这项技术可以进行岩石从微观到宏观的强度研究,估计岩体的峰前特征(变形模量、损伤阈值和峰值强度)和峰后特征(脆性断裂、残余强度和破碎量估计)。
4 计算指标
在PFC和3DEC特定的语境中,一个fragment指的是完整连接(bond)的块体或块体的集 合,链接点处没有发生剪切或拉伸破坏。PFC和3DEC在fragment的处理上有少许不同,在此我们仅强调3DEC中fragment的计算指标。在3DEC中,主要使用如下三个命令计算破碎指标:
block fragment compute
block fragment fill-group slot 'fragments'
block fragment dump filename 'fragments.txt'
破碎信息保存在文件fragments.txt中,包括Fragment, NumBlocks, Volume和 AspectRatio,这些数值也可以使用下面的FISH函数来获取:
block.fragment.volume
block.fragment.id
block.fragment.blocks
block.fragment.aspect
block.fragment.list
5 计算考虑
一个由合成岩体构成的立方体试件,进行单轴抗压强度试验,最后生成949个fragment,如下图所示。合成岩体的数值模拟对计算机硬件的要求相对要高,这样的高要求是由两个因素决定的:(1)当使用block zone list poly产生BBM块体时,如果块体边长取得太小,这将生成非常多的块体(block zone generate edgelength 1.0);(2) 当插入DFN(fracture generate template 'dfn1' dfn 'mwu_1' fracture-count 100)时,如果设置的断裂数目(fracture-count)太多, 这也将增加块体的数目。这两方面的因素导致程序运行占用大量的CPU, 严重时系统会发生崩溃。
进行试验的计算机CPU的配置应该不算太低,Intel i7-10700 @ 2.90GHz(2904 MHz), CPU核心数是16, 目前还不清楚如果在python下设置多线程是否会改善运行效果。
import itasca as it
it.command("python-reset-state false")
import multiprocessing
max_threads = multiprocessing.cpu_count()