《多心圆隧道用FLAC3D直接建模的方法.docx》由会员分享,可在线阅读,更多相关《多心圆隧道用FLAC3D直接建模的方法.docx(6页珍藏版)》请在优知文库上搜索。
1、多心圆隧道直接用FLAC3D建模丁其乐2013/6/18多心圆隧道模型使用FLAC3D建模的难点在于FLAC3D中并没有以不规那么曲线为边界的原始3D根本网格,隧道的断面图见图-图一隧道内轮廓线是由多个圆弧做成的,所以内部区域模型只能通过3D根本网格拼接而成,这时我想到了使用cylinder(圆柱体形网格)拼接,但是这个圆弧的圆心并不是一个点,怎么办?这时我想到了通过fish来调整圆心位置,使得各圆弧的圆心都调整到Ol位置,同时又要保证各圆弧的圆弧线不变,且内部网格点的相对位置不变。下面我以一个简单的例子来说明我调整的过程:图:在图二中圆弧OIAB的圆心为Ol,圆心坐标为(XLZl),现在通过
2、坐标调整把圆弧OIAB所占区域调整到02AB(如上图所示),02的坐标为(X2,Z2),同时CHA上面一点Ml,调整之后在O2A上为M2oA和MI的坐标分别为A(Ax,Az)和MI(MIX,Mlz)设:,IOlMIl左一1)IolAlM2的坐标为M2x,M2y那么:M2x-Mlx=k(O2x-O)(3)2z-Mlz=A(Sz-Olz)(4)由(3)、(4)就以求出来M2的坐标。下面用-个简单的例子说明实现代码。newtitle调整圆弧区域到指定位置:定义参数defpara;O1的平面坐标Olx=-2.9Olz=O;O2的平面坐标O2x=0O2z=0rl=5.9;Ol的半径al=O*degrad
3、;A点与X轴的夹角a2=3O*degrad;B点与X轴的夹角;AB点的坐标Ax=rl*cos(a1)+0IxAz=r1*sin(a1)+01ZBx=rl*cos(a2)OlxBz=rl*sin(a2)+01Zendpara;生产模型genzocylp(Olx,0,Olz)pl(Ax,O,Az)p2(Olx,l,Olz)p3(Bx,0,Bz)size416group调整genzocylp(Olx,2,Olz)pl(Ax,2,Az)p2(Olx,3,Olz)p3(Bx,2,Bz)size416group原始;为了比照而建;调整节点位置defdingpg=gp_headloopwhilegp_gro
4、up(pg,l)=调整xx=gp_xpos(pg)zz=gp_zpos(pg)k=sqrt(xx-01x)2+(zz-O1z)2)1kl=l-kgp_xpos(pg)=k1*(O2x-01x)+xxgp_zpos(pg)=k1*(O2z-01z)+zzPg=gPJext(pg)end_loopenddingplblgr结果图三图三从图中可以看出来两个区域的圆弧线完全一样,但是圆心和对应的节点己经调整到了我们想要的位置。克服了这个难关,再建立多心圆隧道的模型就简单多了。下面给出图模型的代码:newtitle隧道建模;定义参数defset_para;O1的平面坐标Olx=OOlz=O;O2的平面坐
5、标O2x=2.9O2z=0;O3的平面坐标03K=L70O3z=L40:O4的平面坐标O4x=0O4z=3.66rl=3.0;O1的半径r2=5.9;O2的半径r3=1.09;O3的半径r4=6.44;O4的半径al=90*degrada2=18O*degrada3=197*degrada4=251*degrada5=27O*degradd=O.5;衬砌的厚度endset_para;各关键点的坐标defkeypoint;衬砌内层关键点xl=rl*cos(al)+01Xzl=rl*sin(al)+Olzx2=r2*cos(a2)+O2xz2=r2*sin(a2)O2zx3=r3*cos(a3)+
6、O3xz3=r3*sin(a3)+O3zx4=r4*cos(a4)+O4xz4=r4*sin(a4)+O4zx5=r4*cos(a5)+O4xz5=r4*sin(a5)O4z;衬砌外层关犍点x6=(rl+d)*cos(al)+01Xz6=(r1+d)*sin(a1)+0Izx7=(r2+d)*cos(a2)+O2xz7=(r2+d)*sin(a2)O2zx8=(r3+d)*cos(a3)+O3xz8=(r3+d)*sin(a3)O3zx9=(r4+d)*cos(a4)+O4xz9=(r4+d)*sin(a4)+O4zX10=(r4+d)*cos(a5)+O4xZ10=(r4+d)*sin(a5
7、)+O4z;围岩外层关键点xll=OZIl=6X12=-6z12=6X13=-6z13=0X14=-6z14=-24x15=-6z15=-4.8x16=-6z16=-6x17=-4.8z17=-6x18=-24z!8=-6x19=0z19=-6endkeypoint;调整节点位置defsexpositionpg=gp_headloopwhilepg#nullinnerlD=int(gp_group(pg,1)caseofinnerIDcase1Bef_centreX=O1X;调整前的圆心坐标Bef_centreZ=O1zEnd-CentreX二OIX;调整后的圆心坐标Een_centreZ=O
8、1zR=rlcase2Bef_centreX=O2x;调整前的圆心坐标Bef-centreZ=O2zEnd_centreX=Olx;调整后的圆心坐标Een_centreZ=O1zR=r2case3Bef_centreX=O3x;调整前的圆心坐标Bef_centreZ=O3zEnd_centreX=O1X;调整后的圆心坐标Een_centreZ=O1zR=r3case4Bef_centreX=O4x;调整前的圆心坐标Bef_centreZ=O4zEnd_centreX=O1X;调整后的圆心坐标Een_centreZ=O1zR=r4endcasexx=gp_xpos(pg)zz=gp_zpos(p
9、g)dist=sqrt(xx-BefLcentreX)A2+(zz-Bef_centreZ)A2)k=distRkl=l-kgp_xpos(pg)=(End_centreX-Befl_centreX)*kl+xxgp_zpos(pg)=(End_centreZ-Bef_centreZ)*k1+zzpg=gp_next(pg)end_loopend;生成模型;生成内部洞室区域genzocylp(Olx,0,Olz)pl(xl,O,zl)p2(Olx,l,Olz)p3(x2,0,z2)size6110group1;01扇形genzocylp(O2x,0,O2z)pl(x2,0,z2)p2(O2x,
10、I,O2z)p3(x3,O,z3)size614group2;O2扇形genzocylp(O3x,0,O3z)pl(x3,O,z3)p2(O3x,l,O3z)p3(x4,0,z4)size612group3;O3扇形genzocylp(O4x,0,O4z)pl(x4,0,z4)p2(O4x,kO4z)p3(x5,O,z5)size614group4;O4扇形set_position;调整节点位置groupinner;重命名;生成衬砌genzocshellp(Olx,0,Olz)pl(x6,0,z6)p2(Olx,l,Olz)p3(x7,0,z7)p8(x1,0,ZI)p9(x2,0,z2)&p
11、l(xl,l,zl)plI(x2,ltz2)size11106group!inner;01圆环genzocshellPO(O2x,0,O2z)pl(x7,0,z7)p2(O2x,1,02z)p3(x8,O,z8)p8(x2,0,z2)p9(x3,0,z3)&pl(x2,l,z2)plI(x3,l,z3)size1146group!inner;02圆环genzocshellp(O3x,0,O3Z)pl(x8,0,z8)p2(O3x,1,03z)p3(x9,0,z9)p8(x3,O,z3)p9(x4,0,z4)&pl(x3J,z3)pll(x4,l,z4)size1126group!inner;0
12、3圆环genzocshellp(O4x,0,O4z)pl(x9,0,z9)p2(O4x,l,O4z)p3(xl,zl)p8(x4,0,z4)p9(x5,0,z5)&plO(x4,l,z4)pll(x5,l,z5)size1146groupIinncr;04圆环;生成围岩genzoradcylp(01x,0,01z)PI(XIl,O,ZII)p2(Olx,l,Olz)p3(x13,0,z13)p6(x12,0,z12)p7(xl2,l,zl2)p8(x6,0,z6)&p9(x7,0,z7)pl(x6,l,z6)p11(x7,l,z7)size71103grouprock;01围岩genzorad
13、cylp(O2x,0,O2z)PI(Xl3,0,zl3)p2(O2x,l,O2z)p3(x15,0,z15)p6(x14,0,z14)p7(xl4,l,zl4)p8(x7,0,z7)&p9(x8,0,z8)pl(x7,l,z7)plI(x8,l,z8)size7143grouprock;02围岩genzoradcylp(O3x,0,O3Z)pl(xl5,0,zl5)p2(O3x,1,03z)p3(x17,0,z17)p6(x16,0,z16)p7(xI6,lfzl6)p8(x8,0,z8)&p9(x9,0,z9)pl(x8,l,z8)plI(x9,l,z9)size7123grouprock;
14、03围岩genzoradcylp(O4xt0,O4z)pl(xl7,0,z!7)p2(O4x,1,04z)p3(xl9,0,zl9)p6(xl8,0,zl8)p7(xl8,l,zl8)p8(x9,0,z9)&p9(xl,zl)pl(x9,l,z9)pll(xlj,zl)size7143grouprock;04围岩genmerge0.01;合并同一位置节点genzorefnorm1OO;映射plblgr模型结果如图四所示:图四:ylinder模块建模,他们往往是直接指定几个关键点,把每个圆弧区域的圆心都指定在Ol处,我以在仿真论坛里看到很多网友这样的实例。下面我以他们的思路来建立02区域的模型。
15、他们也许是这样:Genzocylp000pl-3OOp2O1Op3-2.742O-1.725groupfctheir,再给出原始的扇形区域作为参考Genzocylp2.93Opl-33Op22.94Op3-2.7423-1.725grouptprimitive比照图如图五图五。,从图_llt叱P歹官LUrttgTt必迎工CrJ俣生牝WPJfet-J好NtrJua*r*人,gn匕是工的模型只能算作种与设计图的近似,究竟这种近似与真实的情况相差多少还没人研究,所以我认为这种建模方法有待商榷。当然,我列举的方法是非常麻烦的,通常大家都不直接用FLAC3D建复杂模型,而是通过ansys,abquse等第三方软件建立模型,然后导入到FLA