多心圆隧道用FLAC3D直接建模的方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

多心圆隧道直接用FLAC3D建模丁其乐2013/6/18多心圆隧道模型使用FLAC3D建模的难点在于FLAC3D中并没有以不规则曲线为边界的原始3D基本网格,隧道的断面图见图一37°R643,68O1O2O417°R590O3R30054°R109隧道内轮廓线是由多个圆弧做成的,所以内部区域模型只能通过3D基本网格拼接而成,这时我想到了使用cylinder(圆柱体形网格)拼接,但是这个圆弧的圆心并不是一个点,怎么办?这时我想到了通过fish来调整圆心位置,使得各圆弧的圆心都调整到O1位置,同时又要保证各圆弧的圆弧线不变,且内部网格点的相对位置不变。下面我以一个简单的例子来说明我调整的过程:O1O2M1M2AB在图二中圆弧O1AB的圆心为O1,圆心坐标为(X1,Z1),现在通过坐标调整把圆弧O1AB所占区域调整到O2AB(如上图所示),O2的坐标为(X2,Z2),同时O1A上面一点M1,调整之后在O2A上为M2。A和M1的坐标分别为A(Ax,Az)和M1(M1x,M1z)。设:图一图二|11||1|OMkOA(1)'|1|1|1|MAkkOA(2)M2的坐标为M2x,M2y则:'21(21)MxMxkOxOx(3)'21(21)MzMzkOzOz(4)由(3)、(4)就以求出来M2的坐标。下面用一个简单的例子说明实现代码。newtitle调整圆弧区域到指定位置;定义参数defpara;O1的平面坐标O1x=-2.9O1z=0;O2的平面坐标O2x=0O2z=0r1=5.9;O1的半径a1=0*degrad;A点与X轴的夹角a2=30*degrad;B点与X轴的夹角;AB点的坐标Ax=r1*cos(a1)+O1xAz=r1*sin(a1)+O1zBx=r1*cos(a2)+O1xBz=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'原始';为了对比而建;调整节点位置defdingpg=gp_headloopwhilegp_group(pg,1)='调整'xx=gp_xpos(pg)zz=gp_zpos(pg)k=sqrt((xx-O1x)^2+(zz-O1z)^2)/r1k1=1-kgp_xpos(pg)=k1*(O2x-O1x)+xxgp_zpos(pg)=k1*(O2z-O1z)+zzpg=gp_next(pg)end_loopenddingplblgr结果图三从图中可以看出来两个区域的圆弧线完全一样,但是圆心和对应的节点已经调整到了我们想要的位置。克服了这个难关,再建立多心圆隧道的模型就简单多了。下面给出图一模型的代码:newtitle隧道建模;定义参数defset_para;O1的平面坐标O1x=0O1z=0图三;O2的平面坐标O2x=2.9O2z=0;O3的平面坐标O3x=-1.70O3z=-1.40;O4的平面坐标O4x=0O4z=3.66r1=3.0;O1的半径r2=5.9;O2的半径r3=1.09;O3的半径r4=6.44;O4的半径a1=90*degrada2=180*degrada3=197*degrada4=251*degrada5=270*degradd=0.5;衬砌的厚度endset_para;各关键点的坐标defkeypoint;衬砌内层关键点x1=r1*cos(a1)+O1xz1=r1*sin(a1)+O1zx2=r2*cos(a2)+O2xz2=r2*sin(a2)+O2zx3=r3*cos(a3)+O3xz3=r3*sin(a3)+O3zx4=r4*cos(a4)+O4xz4=r4*sin(a4)+O4zx5=r4*cos(a5)+O4xz5=r4*sin(a5)+O4z;衬砌外层关键点x6=(r1+d)*cos(a1)+O1xz6=(r1+d)*sin(a1)+O1zx7=(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)+O4z;围岩外层关键点x11=0z11=6x12=-6z12=6x13=-6z13=0x14=-6z14=-2.4x15=-6z15=-4.8x16=-6z16=-6x17=-4.8z17=-6x18=-2.4z18=-6x19=0z19=-6endkeypoint;调整节点位置defset_positionpg=gp_headloopwhilepg#nullinnerID=int(gp_group(pg,1))caseofinnerIDcase1Bef_centreX=O1x;调整前的圆心坐标Bef_centreZ=O1zEnd_centreX=O1x;调整后的圆心坐标Een_centreZ=O1zR=r1case2Bef_centreX=O2x;调整前的圆心坐标Bef_centreZ=O2zEnd_centreX=O1x;调整后的圆心坐标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(pg)dist=sqrt((xx-Bef_centreX)^2+(zz-Bef_centreZ)^2)k=dist/Rk1=1-kgp_xpos(pg)=(End_centreX-Bef_centreX)*k1+xxgp_zpos(pg)=(End_centreZ-Bef_centreZ)*k1+zzpg=gp_next(pg)end_loopend;生成模型;生成内部洞室区域genzocylp0(O1x,0,O1z)p1(x1,0,z1)p2(O1x,1,O1z)p3(x2,0,z2)size6110group1;01扇形genzocylp0(O2x,0,O2z)p1(x2,0,z2)p2(O2x,1,O2z)p3(x3,0,z3)size614group2;O2扇形genzocylp0(O3x,0,O3z)p1(x3,0,z3)p2(O3x,1,O3z)p3(x4,0,z4)size612group3;O3扇形genzocylp0(O4x,0,O4z)p1(x4,0,z4)p2(O4x,1,O4z)p3(x5,0,z5)size614group4;O4扇形set_position;调整节点位置groupinner;重命名;生成衬砌genzocshellp0(O1x,0,O1z)p1(x6,0,z6)p2(O1x,1,O1z)p3(x7,0,z7)p8(x1,0,z1)p9(x2,0,z2)&p10(x1,1,z1)p11(x2,1,z2)size11106grouplinner;01圆环genzocshellp0(O2x,0,O2z)p1(x7,0,z7)p2(O2x,1,O2z)p3(x8,0,z8)p8(x2,0,z2)p9(x3,0,z3)&p10(x2,1,z2)p11(x3,1,z3)size1146grouplinner;02圆环genzocshellp0(O3x,0,O3z)p1(x8,0,z8)p2(O3x,1,O3z)p3(x9,0,z9)p8(x3,0,z3)p9(x4,0,z4)&p10(x3,1,z3)p11(x4,1,z4)size1126grouplinner;03圆环genzocshellp0(O4x,0,O4z)p1(x9,0,z9)p2(O4x,1,O4z)p3(x10,0,z10)p8(x4,0,z4)p9(x5,0,z5)&p10(x4,1,z4)p11(x5,1,z5)size1146grouplinner;04圆环;生成围岩genzoradcylp0(O1x,0,O1z)p1(x11,0,z11)p2(O1x,1,O1z)p3(x13,0,z13)p6(x12,0,z12)p7(x12,1,z12)p8(x6,0,z6)&p9(x7,0,z7)p10(x6,1,z6)p11(x7,1,z7)size71103grouprock;01围岩genzoradcylp0(O2x,0,O2z)p1(x13,0,z13)p2(O2x,1,O2z)p3(x15,0,z15)p6(x14,0,z14)p7(x14,1,z14)p8(x7,0,z7)&p9(x8,0,z8)p10(x7,1,z7)p11(x8,1,z8)size7143grouprock;02围岩genzoradcylp0(O3x,0,O3z)p1(x15,0,z15)p2(O3x,1,O3z)p3(x17,0,z17)p6(x16,0,z16)p7(x16,1,z16)p8(x8,0,z8)&p9(x9,0,z9)p10(x8,1,z8)p11(x9,1,z9)size7123grouprock;03围岩genzoradcylp0(O4x,0,O4z)p1(x17,0,z17)p2(O4x,1,O4z)p3(x19,0,z19)p6(x18,0,z18)p7(x18,1,z18)p8(x9,0,z9)&p9(x10,0,z10)p10(x9,1,z9)p11(x10,1,z10)size7143grouprock;04围岩genmerge0.01;合并同一位置节点genzorefnorm100;映射plblgr模型结果如图四所示:从图四中可以看出隧道的内轮廓线和设计的一致,符合实际情况。然而有很多人直接用cylinder模块建模,他们往往是直接指定几个关键点,把每个圆弧区域的圆心都指定在O1处,我以在仿真论坛里看到很多网友这样的实例。下面我以他们的思路来建立O2区域的模型。他们也许是这样:Genzocylp0000p1-300p2010p3-2.7420-1.725group‘their’再给出原始的扇形区域作为参考Genzocylp02.930p1-330p22.940p3-2.7423-1.725group‘primitive’对比图如图五图四从图五中能够看出用这种方法建立的模型轮廓线已经与原来的圆弧形不一致,这种方法建立的模型只能算作一种与设计图的近似,究竟这种近似与真实的情况相差多少还没人研究,所以我认为这种建模方法有待商榷。当然,我列举的方法是非常麻烦的,通常大家都不直接用FLAC3D建复杂模型,而是通过ansys,abquse等第三方软件建立模型,然后导入到FLAC3D中。同时也已经有很多人开发了很多第三方模型导入到flac3d的接口程序,比如河海大学郑文棠的ansys-flac3d就是一个使用很广泛的接口程序。我在这里写这个东西并没有建议使用flac3d直接建立多心圆隧道模型的意思,仅仅是提供一种建多心圆隧道模型的方法,以及对已知的某种建模方法的质疑。由于知识储备和能力有限,难免出错,希望大家多多批评指正。图五

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功