1、FLAC原理实例与应用指南 FLAC3D 实例分析教程 1FLAC3D 实例分析教程 刘 波 韩彦辉(美国)编著FLAC原理实例与应用指南 北京:人民交通出版社,2005.9 Appendix(附录) 版权所有:人民交通出版社,Itasca Consulting Group, USA 说 明: 1本实例分析教程是为方便读者学习、应用FLAC和FLAC3D而编写的,作为FLAC原理、实例与应用指南一书的附录。 2计算算例参考了Itasca Consulting Group的培训算例,命令流的解析旨在方便读者理解FLAC和FLAC3D建模及求解问题的一般原则与步骤。 3实例分析的算例中,FLAC算
2、例是基于FLAC 5.00版本、FLAC 3D算例是基于FLAC 3D 3.00版本实现计算分析的。读者在学习和研究相关算例时,请务必采用Itasca授权的合法版本进行分析计算。 4本实例分析教程仅供读者参考,读者在参考本教程算例进行工程分析时,编者对可能产生的任何问题概不负责。 编 者 2005.10.18 FLAC原理实例与应用指南 FLAC3D 实例分析教程 2实例分析1:基坑开挖 图1:基坑开挖的位移等值线图 例1: ; simple tutorial trench excavation ;简单的隧道开挖方法 ; Step 1: create initial model state ;
3、第一步:初始模型的建立 ; create grid ; 建立网格 gen zone brick size 6 8 8 ;建立矩形的网格区域,其大小为688 ; assign material ;指定材料的性质 model mohr ;采用摩尔-库仑模型 prop bulk 1e8 shear 0.3e8 ;模型的材料性质:体积模量8110 剪切模量80.3 10 prop fric 35 coh 1e3 tens 1e3 ;摩擦角 35粘聚力 3110 抗拉强度3110 ; set global conditions ;设置全局参数 set grav 0,0,-9.81 FLAC原理实例与应用
4、指南 FLAC3D 实例分析教程 3;设置重力加速度,z坐标正方向为正,故为-9.81 ini dens 2000 ;初始密度为 2000 ; set boundary conditions ;设置初始边界情况 fix x range x -0.1 0.1 ;在x 方向上 固定 x = 0边界,为滚动支撑 fix x range x 5.9 6.1 ;在x 方向上 固定 x = 6边界,为滚动支撑 fix y range y -0.1 0.1 ;在y 方向上 固定 y = 0边界,为滚动支撑 fix y range y 7.9 8.1 ;在y 方向上 固定 y = 8边界,为滚动支撑 fix
5、z range z -0.1 0.1 ;在z 方向上 固定 z = 0边界,为滚动支撑 ; monitor model variables to check for equilibrium ;监控模型变量,并控制力学平衡 hist unbal ;监测不平衡力,并保留历史记录(在默认情况下,每十步做一次) hist gp zdisp 4,4,8 ;监测网格坐标点(4,4,8)在z方向的位移,并保留历史纪录 solve ;运算,求解(默认情况下ratio= 5110停止运算) pause ;暂停 save t1.sav ;形成sav文件,并保存为t1.sav pause ;暂停 ; rest t1
6、.sav ;恢复t1.sav文件 ; Step 2: excavate trench ;第二步:开挖隧道 model null range x 2,4 y 2,6 z 5,10 ;在x(2,4)y(2.,6)z(5,10 )范围内建立零模型(即开挖这一部分区域) pause ;暂停 set large ;在全局下设置大应变状态 initial xdis 0.0 ydis 0.0 zdis 0.0 ;把x,y,z重新设置为0(因为我们只为了观察基坑引起的位移变化, ;而不是从施加重力荷载引起的位移变化,这不会影响计算结果) pause FLAC原理实例与应用指南 FLAC3D 实例分析教程 4;
7、暂停 step 1000 ;运算1000步 pause ;暂停 save t2.sav ;形成sav文件,并保存为t2.sav ret ;放在批处理文件的最后,以返回3DFLAC的控制状态 FLAC原理实例与应用指南 FLAC3D 实例分析教程 5实例分析2:浅基础的稳定性分析 图2 :浅基础位移矢量图 例2 : ;- ; -二维的条形基础在Tresca材料中的塑性流动 ;- gen zone brick size 20 1 10 ;建立矩形的网格区域,其大小为20 1 10 model mohr ;采用摩尔-库仑模型 prop bul 2.e8 shea 1.e8 cohesion 1.e5
8、 ;模型的材料性质:体积模量82.0 10 剪切模量 81.0 10 粘聚力51.0 10 prop friction 0. dilation 0. tension 1.e10 ;内摩擦角 0剪胀角 0抗拉强度101.0 10 fix x range x -.1 .1 ;在x方向上固定边界 x =0(即只在x方向上受约束) fix x y z range z -.1 .1 ;在x y z方向上固定边界 z =0(即为固定约束) fix x y z range x 19.9 20.1 ;在x y z方向上固定边界 x =20 fix y FLAC原理实例与应用指南 FLAC3D 实例分析教程 6
9、;约束所有y方向上运动 fix x y z range x -.1 3.1 z 9.9 10.1 ;在x y z方向上固定平面 x =0,3 z= 10 ini zvel -0.5e-5 range x -.1 3.1 z 9.9 10.1 ;在平面 x =0,3 z= 10上初始化z方向的速度为50.5 10 def p_cons ;用fish 语言定义函数p_cons pdis1 = gp_near(0.,0.,10.) ;靠近坐标(0,0,10)的节点的地址赋予pdis1 pdis2 = gp_near(0.,1.,10.) ; ;靠近坐标(0,0,10)的节点的地址赋予pdis2 p_
10、sol = (2. + pi) ; 2 +赋予 p_sol end ;用于fish语言的结尾 p_cons ;运行函数p_cons ;- ; p_load : average footing pressure / c ;场地的平均压力 ; c_disp : magnitude of vertical displacement at footing center / a ;场地中心的垂直沉降量 ;- def actLoad ;定义函数 actLoad(活荷载)(fish语言的起始句) pnt = gp_head ;把网格点指针的首个地址(gp_head)赋予变量 pnt pload = 0.0
11、;定义变量 pload为0 n = 0 ;定义变量 n为0 loop while pnt # null ;loop是循环命令,其条件是0pnt if gp_zpos(pnt) 9.9 then ;当变量 pnt所对应 的z坐标大于9.9 if gp_xpos(pnt) = rad) base = in_def FLAC原理实例与应用指南 FLAC3D 实例分析教程 20;交互式输入隧道中心以下的底部宽度,注意:其值不能大于隧道半径。 ; default = 0.5 msg= tunnel “height“ from base to center (height) height = in_def
12、 ;交互式输入模型底部到隧道中心的的高度,默认为0.5 ; default = 2.0 msg= extent of inner primitive in x-direction (dx: extent = x0-dx to x0+dx) dx = in_def ;在x方向上对内部的原始坐标进行扩展,分别增加、减少dx ; default = 2.0 msg= extent of inner primitive in z-direction (dz: extent = z0-dz to z0+dz) dz = in_def ;在z方向上对内部的原始坐标进行扩展,分别增加、减少dz ; defa
13、ult = 5.0 msg= uniform-grid tunnel maximum in y-direction (y2) y2 = in_def ;统一网格坐标下,y坐标方向上的最大值 ; default = 15.0 msg= radial-grid tunnel maximum in y-direction (y3) y3 = in_def ;放射性网格在y方向上的最到值 ; dummy=out( model inner width = +string(rad+dx) default = 4.0 msg= extent of entire tunnel in x-direction f
14、rom tunnel center (xr: extent = xr-x0) xr = in_def + x0 ;执行命令out(s)是为了在屏幕上显示其后面的信息。string(var)是转化变量 ;为字符串。并在x方向上从隧道中心扩展整个坐标系 ; dummy=out( model inner height = +string(rad+dz) default = 4.0 msg= extent of entire tunnel in z-direction above tunnel center (zt: extent = zt-z0) zt = in_def + z0 ;和上面的命令一样
15、,在z方向上从隧道中心扩展整个坐标系 ; default = 4 msg= number of zones along top of tunnel primitive (nx) nx = in_def ;初始隧道顶部的单元数 ; FLAC原理实例与应用指南 FLAC3D 实例分析教程 21default = 3 msg= number of zones in radial direction (nr) nr = in_def ;放射性网格在方向上的单元个数 ; default = 4 msg= number of zones in tunnel u-shaped wrap (nu) nu =
16、in_def ;u型隧道单元的数量 default = 4 msg= number of zones along bottom rightside (nz1 : must be even number) nz1 = in_def if (nz1/2)*2#nz1 then nz1=nz1+1 end_if ;隧道底部的单元数量,这里用if语句控制nz1的输入 ; if xr-x00 then command ; primitive right of inner primitive - near - lower gen zone brick size nxr ny1 nz1 ratio 1.0
17、1.0 1.0 group g7 primitive right of inner primitive - far - lower gen zone brick size nxr ny2 nz1 ratio 1.0 raty 1.0 group g7 primitive right of inner primitive - near - upper gen zone brick size nxr ny1 nx ratio 1.0 1.0 1.0 group g7 primitive right of inner primitive - far - upper gen zone brick si
18、ze nxr ny2 nx ratio 1.0 raty 1.0 group g7 primitive above inner primitive - near gen zone brick size nx ny1 nzt p0 x0,y1,z2 p1 x2,y1,z2 p2 x0,y2,z2 p3 x0 y1 zt primitive above inner primitive - far gen zone brick size nx ny2 nzt p0 x0,y2,z2 p1 x2,y2,z2 p2 x0,y3,z2 p3 x0 y2 zt primitive above right l
19、ower primitive - near end_command if nxr0 then command gen zone brick size nxr ny1 nzt p0 x2 y1 z2 p1 xr y1 z2 p2 x2 y2 z2 p3 x2 y1 zt primitive above right lower primitive - far gen zone brick size nxr ny2 nzt p0 x2 y2 z2 p1 xr y2 z2 p2 x2 y3 z2 p3 x2 y2 zt below tunnel center (Correct need for ini
20、tial points to match) ;此函数是为了使初始化的网格点相互匹配 kx=(x3-x0)/(x7-x0) ;定义一个常变量 p_gp=gp_head ;把网格点的头指针的地址,赋予变量p_gp loop while p_gp#null ;loop为循环命令,其条件是_0pgp ; if p_gp in group g6, apply delta-x transformation from line to circle if gp_group(p_gp,1)=g6 then xx=gp_xpos(p_gp)-x0 ;这里的gp_xpos(p_gp)是取这个地址中的网格点的x坐标
21、zz=z0-gp_zpos(p_gp) ;同理,这里的gp_zpos(p_gp)是去这个地址中的网格点的z坐标 mu=zz/height x37=x3*mu+x7*(1-mu) kk=x3/x37 gp_xpos(p_gp)=x0+xx*kk end_if p_gp=gp_next(p_gp) ;这里的gp_next(p_gp)是取下一个网格点的地址 end_loop end def map1 ; below tunnel center tanmax=height/(base-(x4-x0) maxang=atan(tanmax) ;这里,atan(tanmax)为tanmax的反正切值 kk=maxang/tanmax cosmaxang=cos(maxang) ;这里,cos(maxang)为maxang余弦的值 p_gp=gp_head ;同理,把网格点的头指针的地址,赋予变量p_gp loop while p_gp#null ;loop为循环命令,其条件是_0pgp ; if p_gp in group g6, apply delta-r transformation from line to circle