3DEC V1.0 到V9.0---岩石顶板楔稳定性分析(Falling Wedge)的命令演化
1 引言
在查阅顶板岩石楔【地下开挖岩石楔形体稳定性分析(Rock Wedges stability)】的过程中,再次翻到了3DEC V1.0的用户手册。在这个最早的用户手册中包含着一个3DEC的验证分析---Falling Wedge,这个例子仍然包含在最新的V9.0版本中。本文通过3DEC的3个版本回顾了3DEC用户手册的演化过程。
2 3DEC 1.0
3DEC V1.00用户手册正式诞生于1988年,共178页,带有4个验算例子,其中一个是Falling Wedge,用来验证由Goodman等人(1982)[Calculations of Support for Hard, Jointed Rock Using the Keyblock Principal]使用关键块理论得出的解析解,这个例子也包含在Hart等人(1988)[Formulation of a three-dimensional distinct element model - Part II. Mechanical calculations for motion and interaction of a system composed of many polyhedral blocks]的论文中。
顶板楔块由三组节理组成,倾角均为 60°,倾向分别为 30°、150° 和 270°。楔形体的高度为1米。原位水平应力平行于开挖顶板(-0.05 MPa),垂直主应力为零。通过固定楔形体周围的块体,同时设置楔形体与周围块体之间的摩擦力来求解楔稳定的摩擦系数。解析解的结果是0.685, 3DEC的模拟结果为0.684. 3DEC V1.0的命令格式沿用了当时UDEC的命令格式,如上图所示。
3 3DEC 5.0
2013年发布的V5.0增加了许多新的功能,其中最显著的一个功能是包含了DFN计算,到了2016年的V5.2,3DEC的用户手册已经发展到800多页。主要命令与V1.0基本相同,但摩擦角使用jfric代替了初始的fric。此外,可以使用hide/seek命令隐藏或显示块体。FISH语言可以计算Goodman的解析解。
alpha_ = (90.-alpha_)*degrad w_ = 0.5*sqrt(3)*height_^3*tan(alpha_)*tan(alpha_)*unitweight_ a_ = 1.5*sqrt(3)*height_^2*tan(alpha_)/cos(alpha_) coef_ = (w_+sigma_*a_*sin(alpha_)) coef_ = coef_/(sigma_*a_*cos(alpha_)-w_*tan(alpha_)) fang_ = atan(coef_)/degrad ii = out('Analytic solution = '+string(fang_))set @height_ 1.0 @alpha_ 60. @sigma_ 0.05 @unitweight_ 0.02
4 3DEC 9.0
2022年发布的9.0与2020年发布的7.0在命令格式上基本没有变化,但从V7.0开始,命令发生了重大变化。如同其它现代工程软件一样,从7.0开始3DEC不再提供pdf用户手册,仅提供网页版的帮助文件,应部分同学的要求,《计算岩土力学》已经制作了最新的3DEC帮助文件pdf版,目前共由大约1950个分离的pdf文件组成,将逐步代替目前的Itasca笔记数据库版本。
model new [3DEC Working with FISH]model large-strain on [Sliding and Toppling Blocks]program call 'fall.fis' [3DEC Natural Modes of Oscillation]block create brick -2 2 -2 2 -1 1 [3DEC Generating Zones]block cut joint-set dip 60 dip-direction 30 ori 0 0 1block cut joint-set dip 60 dip-direction 150 ori 0 0 1block cut joint-set dip 60 dip-direction 270 ori 0 0 1 [Assessment of Fault Slip Potential from Sill Pillar Mining]block delete range pos-z -1,0block group 'wedge' range pos-x -0.2,0.2 pos-y -0.2,0.2 pos-z 0.0,0.3 ; this will create subcontactsblock insitu stress -0.05 -0.05 0 0 0 0block contact jmodel assign mohrblock contact property stiffness-normal 10 stiffness-shear 10 friction 89 block contact mat-table default prop stiffness-normal 10 ... stiffness-shear 10 friction 34.4block fix range position-x -2.0 2.0 position-y -2.0 2.0 position-z 0.3 1.0block hide range group 'wedge' notblock hist vel-z pos -0.5774,-1,0 history name '1' label 'Z Velocity of Wedge'block contact prop fric=34.402block contact prop fric=34.401 global unitweight_ = 0.02 alpha_ = (90.-alpha_)*math.degrad ; [Example_ Shear and tension test for rockbolt crossing a joint] local w_ = 0.5*math.sqrt(3)*height_^3* ... [3DEC Dynamic Verification Examples] math.tan(alpha_)* ... [Falling Wedge] math.tan(alpha_)*unitweight_ local a_ = 1.5*math.sqrt(3)*height_^2*math.tan(alpha_)/math.cos(alpha_) [3DEC Structural Elements] local coef_ = (w_+sigma_*a_*math.sin(alpha_)) [3DEC Structural Elements] coef_ = coef_/(sigma_*a_*math.cos(alpha_)-w_*math.tan(alpha_)) global fang_ = math.atan(coef_)/math.degrad [math.atan2] local status = io.out('Analytic solution = '+string(fang_)) [Sleeved Triaxial Test of a Bonded Material]