练习块体子接触(sub-contact)
早期的3DEC模型不可以同时使用刚性块和可变形块,也就是说,要么只包含刚性块,要么把模型的所有刚性块划分为可变形的单元,不过现在的3DEC可以同时使用刚性块和可变形块,这使得块体之间的接触,特别是刚性块和可变形块界面上的子接触判别变得更为复杂。在大位移运行中(model large-strain on),当相关的顶点穿过了另一个块体的面边界时,程序自动重新定位每个子接触,默认情况下,子接触点的位置和权重每10个时步更新一次,同时检测新的子接触和子接触类型。如果删除一个块体,则重新分配子接触,以确保相邻状态之间的平稳过渡。详细论述参看《Background - the 3D Distinct Element Method》。通过练习块体子接触,不仅可以加强对3DEC机理的深入理解,而且可以提取模型的许多信息,扩展3DEC的应用能力。在3DEC中,子接触面积(subcontact area)定义为0.01*0.5*平均面面积(average face area),平均面面积等于所有面的面积(block.face.area)之和除以所有面的数目(block.face.num)。不过,有一种更简便的方法是使用FISH函数block.subcontact.area,或者在Python中使用it.block.subcontact类的area()函数(import itasca as it)。
与上例相似的算法可应用于block.subconact的所有函数,这些函数既可以在FISH中使用,也可以在Python中使用,不过,我个人的体会是在Python中使用更简洁一些。
block.subcontact.apini
block.subcontact.disp.norm block.subcontact.disp.shear block.subcontact.disp.shear.max block.subcontact.energy.total block.subcontact.excavated block.subcontact.flowplane.vertex block.subcontact.flowplane.zone block.subcontact.force.norm block.subcontact.force.pp block.subcontact.force.shear block.subcontact.fromindexblock.subcontact.group.removeblock.subcontact.near.listblock.subcontact.state.string block.subcontact.stress.norm block.subcontact.stress.shear block.subcontact.vel.shear
(1) 一般情况下,在单元生成结束时会自动产生子接触,但如果单元生成失败,则需要在分配节理属性之前手动执行此操作,使用下面的命令产生子接触
block contact generate-subcontacts
(2) 当进行充填模拟时,使用下面的命令在充填块体和开挖块体之间产生子接触