文档介绍:多心圆隧道直接用FLAC3D建模丁其乐2013/6/18多心圆隧道模型使用FLAC3D建模的难点在于FLAC3D中并没有以不规则曲线为边界的原始3D基本网格,隧道的断面图见图一图一隧道内轮廓线是由多个圆弧做成的,所以内部区域模型只能通过3D基本网格拼接而成,这时我想到了使用cylinder(圆柱体形网格)拼接,但是这个圆弧的圆心并不是一个点,怎么办?这时我想到了通过fish来调整圆心位置,使得各圆弧的圆心都调整到O1位置,同时又要保证各圆弧的圆弧线不变,且内部网格点的相对位置不变。下面我以一个简单的例子来说明我调整的过程:图二在图二中圆弧O1AB的圆心为O1,圆心坐标为(X1,Z1),现在通过坐标调整把圆弧O1AB所占区域调整到O2AB(如上图所示),O2的坐标为(X2,Z2),同时O1A上面一点M1,调整之后在O2A上为M2。A和M1的坐标分别为A(Ax,Az)和M1(M1x,M1z)。设:(1)(2)M2的坐标为M2x,M2y则:(3)(4)由(3)、(4)就以求出来M2的坐标。下面用一个简单的例子说明实现代码。newtitle调整圆弧区域到指定位置;定义参数defpara;O1的平面坐标 O1x=- O1z=0;O2的平面坐标 O2x=0 O2z=0 r1=;O1的半径 a1=0*degrad;A点与X轴的夹角 a2=30*degrad;B点与X轴的夹角;AB点的坐标 Ax=r1*cos(a1)+O1x Az=r1*sin(a1)+O1z Bx=r1*cos(a2)+O1x Bz=r1*sin(a2)+O1zendpara;生产模型genzocylp0(O1x,0,O1z)p1(Ax,0,Az)p2(O1x,1,O1z)p3(Bx,0,Bz)size416group'调整'genzocylp0(O1x,2,O1z)p1(Ax,2,Az)p2(O1x,3,O1z)p3(Bx,2,Bz)size416group'原始';为了对比而建;调整节点位置defding pg=gp_head loopwhilegp_group(pg,1)='调整' xx=gp_xpos(pg) zz=gp_zpos(pg) k=sqrt((xx-O1x)^2+(zz-O1z)^2)/r1 k1=1-k gp_xpos(pg)=k1*(O2x-O1x)+xx gp_zpos(pg)=k1*(O2z-O1z)+zz pg=gp_next(pg) end_loopenddingplblgr结果图三图三从图中可以看出来两个区域的圆弧线完全一样,但是圆心和对应的节点已经调整到了我们想要的位置。克服了这个难关,再建立多心圆隧道的模型就简单多了。下面给出图一模型的代码:newtitle隧道建模;定义参数defset_para;O1的平面坐标 O1x=0 O1z=0;O2的平面坐标 O2x= O2z=0;O3的平面坐标 O3x=- O3z=-;O4的平面坐标 O4x=0 O4z= r1=;O1的半径 r2=;O2的半径 r3=;O3的半径 r4=;O4的半径 a1=90*degrad a2=180*degrad a3=197*degrad a4=251*degrad a5=270*degrad d=;衬砌的厚度en