圆弧条分法土坡稳定分析的VB电算解法5.18(20页).doc

上传人:1595****071 文档编号:37132914 上传时间:2022-08-30 格式:DOC 页数:20 大小:583.50KB
返回 下载 相关 举报
圆弧条分法土坡稳定分析的VB电算解法5.18(20页).doc_第1页
第1页 / 共20页
圆弧条分法土坡稳定分析的VB电算解法5.18(20页).doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《圆弧条分法土坡稳定分析的VB电算解法5.18(20页).doc》由会员分享,可在线阅读,更多相关《圆弧条分法土坡稳定分析的VB电算解法5.18(20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-圆弧条分法土坡稳定分析的VB电算解法5.18-第 18 页圆弧条分法土坡稳定分析的VB电算解法解题思路说明与讲解云南省水利水电学校张华庆圆弧条分法土坡稳定分析的VB电算解法云南省水利水电学校张华庆【摘要】目前,大多数版本的土力学教材在讲到均质粘性土边坡稳定性分析方法时,均采用圆弧条分法,该法存在大量的作图及试算,若用人工求解,则不但会耗费大量宝贵的时间,而且还难以得到精确解。现就介绍作者自编的粘性土边坡简单圆弧条分法的VB电算解法。【关键词】土坡稳定圆弧条分法VB电算全自动可视化引言:迄今为止,求解均质粘性土边坡稳定最小安全系数Ksmin,通常都采用瑞典圆弧法或圆弧条分法,由于该法存在大量的

2、手工作图以及滑弧试算,因此如果采用过去传统的人工方法求解,则因为效率低下,不但浪费稿纸和笔墨、浪费大量宝贵的时间,而且还难以得出较为精确的解答。为此,笔者利用Visual Basic 6.0编写和开发了可视化的土坡稳定分析程序,该程序及解法具有如下特点:作图与试算全过程可视化跟踪显示,其优越性是过去的DOS计算程序所无法比拟的;速度快,能在一分钟之内(一般仅需10秒左右)找到最危险滑弧以及土坡稳定最小安全系数Ksmin;充分体现圆弧条分法的精髓,精确度高;简单易行,并且经过若干教材的例习题演算,证明结果一致;演算过程进行速度可以调节,便于观察和教学;程序大小仅72KB,但却功能完善,完全可以满

3、足教学需要(当然也完全可以用于工程计算);自动化程度高:仅需输入必要的坡高、坡比(或坡度角),土的容重以及土的抗剪强度参数、c的值,即可自动完成计算,因此为全自动化设计,功能上明显优越于目前有的半自动化边坡稳定分析程序(如有的为DOS程序;有的虽然是可视化程序,但却是半自动化的,需要在AutoCAD里人为画出试算滑弧,然后才能让机器去计算土坡稳定最小安全系数,这自然影响时效及精度,因为你不可能有时间和耐心去画多达100条滑弧!就别说更多的);分条数可突破人为影响及限制,例如可以达到1000条之多;无论何种条件下,当分条数逐渐增多时,土坡稳定最小安全系数Ksmin均能趋于一个稳定的极限值,证明计

4、算方法以及计算结果是正确的且是可靠的和稳定的;可以考虑渗透力的影响。下面就本程序的编程思路作一些必要的说明和讲解,以便和有兴趣致力于此方面研究的同仁共同探讨,并希望得到专家的指点,以便使程序变得更加完美和人性化。一、滑弧圆心的确定变得简单化:试算法首先要确定的是滑弧的圆心,由于过去是采用人工作图计算,工作量或者说劳动强度可想而知,于是必须尽可能地缩小滑动圆心的范围,这样一来才需要定出M点坐标(4.5H,2H)、确定O点所需的参数125,235,以及利用十字交叉方法确定滑动圆心Oi点的做法就是必需的和可以理解的;但是对于计算机来说,它最不怕的就是计算,因而这种做法就显得多余或者说不必要了,我们可

5、以让它在平面上可能的区域(即所画圆弧至少有一端能交于坡面、坡顶或坡底,而另一端也不至于悬空的点)在纵横两个方向每间隔一定的点计算一次去寻找最危险滑弧,问题因此有了更为简单而圆满的解决办法。二、分条面积计算简单化:由于分条宽度b是固定的,所以分条面积取决于分条高度hi,笔者采用解析几何方法加以处理:列出坡面及坡顶、坡底的方程,并且列出圆弧的方程,再列出第i个土条的竖线方程;用公式法或试算法(迭代原理)求出交点坐标,再用两点间距离公式计算出hi;分条面积计算公式:Sihi*b(“*”号即“”号);由于分条数可以很多,当分条数多到一定程度(一般当取b=R/100或更大)时滑体两端三角形面积部分对总面

6、积的正负或加减影响可以不予考虑。三、滑弧与坡面的交点分析:程序分别考虑了滑弧与土坡上游交点的两种情况,即交于坡顶和交于上半坡面;滑弧与土坡下游交点的两种情况,即交于坡底和交于下半坡面。这几种情况都是圆弧条分法所要求考虑的,均可由解析几何方法得出其交点坐标,然后由上下两交点之间的水平间距d及b=R/n计算出分条数fts。四、滑弧半径及滑弧长的确定:在滑弧圆心确定后,滑弧半径通过两点间距离公式确定,即;至于滑弧长,可通过公式计算滑弧总长,即在分条数fts确定后,水平方向正负两边圆心角即可用反三角函数算出,然后,这样做的优点比起计算各分条长然后累加的办法来说有二:避免了误差累积,提高了精确度;使计算

7、过程由繁琐变为简单。五、最小安全系数Ks的得出原理:第二次计算得出的Ks和第一次的进行比较,若小于第一次的值则留下作为Kmin的临时值赋给变量Kt,否则用第一次的值作为临时值,第三次计算得出的再和这个临时值亦即变量Kt作比较,若小于则赋给变量Kt,依此类推,最后即可得出最小安全系数Kmin。六、渗透力计算原理:由于渗透力的计算比较麻烦(需要确定的边界条件较多),故考虑作简单化处理,即只考虑两个因素:浸润面积占滑体总面积的百分比;作用方向:一般按平行于坡面方向考虑;力的大小:由于渗透力是体积力,按单宽计算就是面积力,即。七、最小安全系数所对应圆心及滑弧的显示:有两种方法可以实现这一目的:每次计算

8、均用变量来存储滑动圆心、滑弧半径及其两端点的坐标,此法比较麻烦且效率较低,影响计算速度;总体计算完后,再算一次。由于此次只需计算至KsKmin的那一次即可结束,并且此次计算过程不需要图形显示(只需计算完成后显示最终结果),故计算速度非常快,一般不超过1至10秒。八、延时显示功能:考虑到多媒体教学时的需要,编程时用了五种不同的速度来执行计算过程,分别对应键盘上的F1至F5键,并且还可以自定义更慢的速度以方便教学、讲解或观察,如左图和右图所示。九、分条宽度b=R/n:在人工试算时,一般取n=10,但是计算机却可以取n=10、20、40、80、100、甚至n=1000来计算(自定义),例如上面左图是

9、n=100的情形。十、坐标原点的选取:为了能够比较居中地显示图形,选取y轴通过滑面AB中点,x轴通过滑坡底面下距离滑坡底面d=H*(1/3)取整数处。这样,当H20m时,滑面底部B点纵坐标为7m,而滑面顶、底部A、B两点的横坐标始终为负正相反数,如下图。十一、交点坐标的得出:通过直线、圆的方程进行代数求解得出,当有两个解时,由边界条件自动判断具体取哪一个值。十二、安全系数计算公式:滑体内无渗流通过时,计算公式为:滑体内有渗流通过时,计算公式为:以上是编程思路,下面就历界教材上的部分例习题作计算讲解及说明。【例1】中专教材土力学(成都水力发电学校李道荣)第168页例题:某均质粘性土坡,坡高为5m

10、,坡比为1:2,土的有关指标为:,c=9.81kPa,试用圆弧条分法求土坡稳定的最小安全系数Kmin。解:由于计算量太大,为避免出错,教材中采用列表试算,得出其中一次计算的安全系数为Ks1.55;现采用自编程序计算:得Kmin1.524091。如图:【例2】大专教材土力学(黄河水利出版社务新超)第160页例题:一均质粘性土坡,高为20m,坡比为1:3,土的有关指标为:重度,粘聚力c=9.81kPa,内摩擦角,试用太沙基公式(即圆弧条分法)求土坡稳定的最小安全系数Kmin。解:由于计算量太大,为避免出错,教材中采用列表的方法进行试算,得出其中一次计算的安全系数为Ks1.83;现采用自编程序计算:

11、得Kmin1.4878(图略)。本例题也被收录在高等学校教材土力学(中国水利水电出版社天津大学杨进良)第195页中。除边坡稳定分析程序外,本人还编制了赤平投影分析、抗剪强度指标计算、附加应力计算等工程地质与土力学方面的可视化实用小程序,为了方便各位专家和同仁共同研究或探讨,特附上这几个小程序,也可致电邮至:索取。下面列出圆弧条分法边坡稳定分析程序的主要程序代码,以供参考:Option ExplicitPrivate Declaration As StringPrivate Sub bgvuvuti_Click() Form2.Show Form2.FontBold = False Form2.

12、FontSize = 20 Form2.FontName = 隶书 Form2.ForeColor = RGB(50, 100, 200) Form2.Print 本软件适用于圆弧条分法边坡稳定分析 Form2.Print 如需示范演算,请直接单击按纽 Form2.Print 如需了解软件功能,请单击最大化按钮, Form2.Print 软件使用说明书便会呈现于窗体右侧 Form2.FontSize = 15 Form2.Print Copyrihgt : 张华庆 December 9th . 2002End SubPrivate Sub ffliyi_Click() H = 5: a = 2

13、6.565: v = 17.66: fia = 15: c = 9.81End SubPrivate Sub fflioq_Click() H = 25: a = 24.33: v = 17.66: fia = 17.5: c = 9.81End SubPrivate Sub fflisf_Click() H = 120: a = 30: v = 18: fia = 22.5: c = 10End SubPublic Sub Form_Load() Show H = 20: a = 30 v = 18.78: fia = 22.58: c = 9.8 fi = fia / 57.2958 将值

14、转化为弧度 t10 = 10 给分条宽度b=R/t10中的t10赋一初值 jt = 0 给浸润面积系数jt赋一初值零(不考虑其影响) slptime = 0 说明延时默认值为零False Label1.FontSize = 15 Declaration = 软件使用说明书 & Chr(10) & 著作人声明:本软件一切版权属 zhq 所有,未经版权所有人允许,任何单位和个人不得以任何形式复制和传播,否则将依法追究其经济赔偿责任。 & Chr(10) & 功能键及菜单说明: & Chr(10) & 延时功能:F1F5(快慢); & 分条因数:F8、F9、F11、F12(少多,即分条宽由宽到窄)

15、& Chr(10) & 渗透力:由于影响因素较多,仅考虑浸润面积为滑体面积的16、14、12、34等几种情形,作近似计算,且假定A1B1斜率即为渗流水力坡降。 & Chr(10) & 滑体面积:自动计算并显示滑动面以上土体的面积。 & Chr(13) & F5:运行(Start) & Space(2) & F10:暂停继续(BreakContinue) & Chr(10) & Ctrl+F6:设置速度(毫秒) Label1.Caption = DeclarationEnd SubPrivate Sub A0_Click() jt = 0End SubPrivate Sub A2_Click()

16、 jt = 0.2End SubPrivate Sub A4_Click() jt = 0.4End SubPrivate Sub A6_Click() jt = 0.6End SubPrivate Sub A8_Click() jt = 0.8End SubPrivate Sub HtA_Click() Dim S$ S = MsgBox(滑体面积为 & Str$(Sa) & (平方米), 64, 渗流影响分析)End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, Y A

17、s Single) Unload Form2 此语句相当于If Button = 1 or 2 Then Unload Form2 If Button = 2 Then Form1.PopupMenu LPRINT 弹出式菜单应用例子End SubPrivate Sub Fprint_Click() slptime = 0End Sub 打印窗体暂时的不要,改为延时功能Private Sub Cprint_Click() slptime = 200End Sub 打印窗体暂时的不要,改为延时功能Private Sub ft10_Click(Index As Integer) t10 = 10E

18、nd SubPrivate Sub ft20_Click(Index As Integer) t10 = 20End SubPrivate Sub ft40_Click(Index As Integer) t10 = 40End SubPrivate Sub ft80_Click(Index As Integer) t10 = 80End SubPrivate Sub ft100_Click(Index As Integer) t10 = 100End SubPrivate Sub menu1_Click(Index As Integer) On Error Resume Next H = I

19、nputBox(请输入土坡高度H(m):, 输入对话框, 20, 8000, 7500)End SubPrivate Sub Pobi_Click() Dim pbn As Single On Error Resume Next pbn = InputBox(请输入坡比 1:n 中 n 的值:, 输入对话框, 2, 8000, 7500) a = 57.2957795 * Atn(1 / pbn)End SubPrivate Sub Pojk_Click() On Error Resume Next a = InputBox(请输入坡度角():, 输入对话框, 30, 8000, 7500)E

20、nd SubPrivate Sub menu3_Click(Index As Integer) On Error Resume Next v = InputBox(请输入土的容重:, 输入对话框, 18.78, 8000, 7500)End SubPrivate Sub menu4_Click(Index As Integer) On Error Resume Next fia = InputBox(请输入滑面或土的摩擦角:, 输入对话框, 22.58, 8000, 7500)End SubPrivate Sub menu5_Click(Index As Integer) On Error R

21、esume Next c = InputBox(请输入滑面或土的粘聚力c:, 输入对话框, 9.8, 8000, 7500) End SubPrivate Sub SpeedSet_Click() On Error Resume Next slptime = InputBox(请输入延时毫秒数:, 设置速度对话框, 1000, 8000, 7500)End SubSub Start_Click() Call Clsn_Clicklse ra = a / 57.2958 将a值转化为弧度 Ax = -H / Tan(ra) / 2: Bx = H / Tan(ra) / 2 By = CInt(

22、H / 3): Ay = By + H 将坡脚纵坐标四舍五入取整 fi = fia / 57.2958 将值转化为弧度 L = Sqr(Ax - Bx) 2 + (Ay - By) 2) kab = (Ay - By) / (Ax - Bx) Erase Ks: Erase Kn Kmin = 1000 为Kmin赋一初值1000,以便比较 Kjin = 1000 为Kjin赋一初值1000,以便比较 Call SeaCheR 调用过程SeaCheR ,留意参数的传送问题 jn = j Form1.HtA.Enabled = True Beep DangerArc.SetFocusEnd Su

23、bSub SeaCheR() *此过程用来即时显示每一试算圆心时的滑弧及分条图形* 笛卡尔坐标系:过图片框底部向右()为X轴,过坡面中点向上()为Y轴 j = 0 For B1x = Bx - Bx / 4 To Bx + Bx / 4 Step Bx / 8 If B1x Bx Then B1y = g(B1x) ElseIf Bx = B1x Then B1y = By End If For Ox = Ax To Bx + H / 2 Step L / 10 For Oy = Ay + H / 4 To Ay + 4.5 * H Step L / 10 j = j + 1 此句从zhq中提

24、前后便修正了Ksi显示中的错误 Call A1Search 进入用试算法求得A1点坐标过程 Form1.Cls Picture1.Scale (-3 * H, 6 * H)-(3 * H, 0) 第一次定义图片框尺寸比例 Call zhq 进入计算安全系数并绘制分条过程 Call FPsPlay 进入在窗体和图片框中显示文字及数据过程 Ua = Atn(Abs(Oy - A1y) / (Ox - A1x)If Ox B1x Then Ub = 3.14159 - Atn(Abs(Oy - B1y) / (Ox - B1x) 若O点在B1点右侧,则Ub为钝角End IfPicture1.Line

25、 (Ox - H / 12, Oy)-(Ox + H / 12, Oy), RGB(120, 100, 40) 画过圆心的水平线Picture1.Line (Ox, Oy - H / 12)-(Ox, Oy + H / 12), RGB(120, 100, 40) 画过圆心的铅直线Picture1.Circle (Ox, Oy), R, RGB(150, 0, 150), -(3.1416 + Ua), -(6.2832 - Ub) 画滑动面圆弧(含径线)Picture1.DrawStyle = 3Picture1.Line (Ox, Oy - H / 8)-(Ox, f(Ox), RGB(0

26、, 200, 40) 画过滑弧圆心的铅垂点划线Picture1.DrawStyle = 0 DoEvents 当程序运行时允许转让控制权 Sleep (slptime) 增加延时功能下面三条语句的作用是把已画过的圆心和滑弧及时抹掉 Next Oy Next Ox Next B1xEnd SubSub DrawPicture() Picture1.Scale (-3 * H, 6 * H)-(3 * H, 0) *下面语句圈定试算圆心范围* Dim Ix As Single Dim Iy As Single For Ix = Ax To Bx + H / 2 Step L / 10 For Iy

27、 = Ay + H / 4 To Ay + 4.5 * H Step L / 10 Picture1.PSet (Ix, Iy) Next Iy Next Ix Picture1.Line (Ax, Ay)-(Bx, By) 画坡面线 Picture1.Line (Ax - L, Ay)-(Ax, Ay) 画坡肩水平线(自左向右) Picture1.Print A Picture1.Line (Bx + L, By)-(Bx, By) 画坡底水平线(自右向左) Picture1.Print B Picture1.CurrentX = -2.9 * H: Picture1.CurrentY =

28、5.9 * H Picture1.Print 容重=; v; kn/m3; Space(20); 摩擦角 ; CInt(fia * 100) / 100; ; Space(20); 粘聚力c=; c; kPa Picture1.CurrentX = -2.9 * H Picture1.Print Ax=; CSng(Ax); Space(5); Ay=; CSng(Ay); Space(13); Bx=; CSng(Bx); Space(5); By=; CSng(By); Space(18); 坡比为 1:; CInt(100 * (Bx - Ax) / H) / 100Picture1.L

29、ine (Ox - H / 12, Oy)-(Ox + H / 12, Oy), RGB(0, 0, 0) 画过圆心的水平线 Picture1.Print OPicture1.Line (Ox, Oy - H / 12)-(Ox, Oy + H / 12), RGB(0, 0, 0) 画过圆心的铅直线 Ua = Atn(Abs(Oy - A1y) / (Ox - A1x) If Ox B1x Then Ub = 3.14159 - Atn(Abs(Oy - B1y) / (Ox - B1x) 若O点在B1点右侧,则Ub为钝角 End IfPicture1.Circle (Ox, Oy), R,

30、 RGB(250, 50, 140), -(3.1416 + Ua), -(6.2832 - Ub) 画滑动面圆弧(含径向线,若不要径向线,请将-号去掉) Picture1.CurrentX = A1x: Picture1.CurrentY = A1y 注意:A1x、A1y若尚未赋值 Picture1.Print A1 则A1、B1是坐标错误的 Picture1.CurrentX = B1x: Picture1.CurrentY = B1y Picture1.Print B1For y1 = 0 To Oy - H / 10 Step Oy / 20Picture1.Line (Ox, y1)

31、-(Ox, y1 + R / 25) 画过滑弧圆心的铅垂(虚)线Next y1End SubSub A1Search() (本过程主要以计算A1点坐标为目的) OA = Sqr(Ox - Ax) 2 + (Oy - Ay) 2) R = Sqr(Ox - B1x) 2 + (Oy - B1y) 2) (取滑弧半径R=OB1) If OA = R Then A1x = Ax: A1y = Ay ElseIf OA R And OA2 R Then If OAv = R Then A1x = Avx: A1y = A1y Exit For ElseIf OAv R Then A1x = Avx:

32、A2x = A2x: GoTo k End If End If Next A1x ElseIf OA R Then For A1x = Ax To Bx Step 0.4 A1x = A1x: A2x = A1x + 0.4q: Avx = (A1x + A2x) / 2 二分法计算A1点坐标开始(坡面斜线段) A1y = (By - Ay) * (A1x - Ax) / (Bx - Ax) + Ay A2y = (By - Ay) * (A2x - Ax) / (Bx - Ax) + Ay Avy = (By - Ay) * (Avx - Ax) / (Bx - Ax) + Ay OA1 =

33、 Sqr(Ox - A1x) 2 + (Oy - A1y) 2) OA2 = Sqr(Ox - A2x) 2 + (Oy - A2y) 2) OAv = Sqr(Ox - Avx) 2 + (Oy - Avy) 2) If OA1 = R Then A1x = A1x: A1y = A1y Exit For ElseIf OA1 R And OA2 R Then If OAv = R Then A1x = Avx: A1y = Avy Exit For ElseIf OAv R Then A1x = Avx: A2x = A2x: GoTo q End If End If Next A1x E

34、nd IfEnd SubSub FPsPlay() 此过程功能为分别在窗体和图片框中显示文字以下语句在窗体中显示文字 Form1.ForeColor = RGB(0, 0, 250) Form1.Print 坡高为H = ; Format(H, 0.00); 米; Tab(22); 坡度角为; CInt(a * 100) / 100; ; Tab(46); A1点坐标为 (; Format(A1x, 00.0000); ,; Format(A1y, 00.0000); ) Form1.Print 坡面长为L=; Format(L, 0.00); 米; Tab(46); B1点坐标为 (; Fo

35、rmat(B1x, 0.0000); ,; Format(B1y, 0.0000); ) Form1.Print 试算圆心坐标为Oi (; Tab(18); Format(Ox, 0.0000); ,; Format(Oy, 0.0000); ); Tab(48); 计算次数 i=; j; 次 Print 试算滑弧的半径为 R=; CSng(R); Tab(30); 米, 试算滑弧长为 L= ; Format$(SumLi, 0.0000); Tab(70); 米 Form1.Print Form1.Print OA=; Format(OA, 0.0000) Form1.Print OA1=;

36、 Format(OA1, 0.0000) Print Form1.Print Area=; Format(Sa, 0.00) Form1.Print 分条数fts=; fts Print If jt = 0.01 Then Form1.Print 考虑渗流影响时: Form1.Print K(; j; )=; Format(Kn(j), 0.00000) Form1.ForeColor = RGB(250, 0, 180) Print Kjin=; Format(Kjin, 0.000000) End If 以下语句在图片框中显示文字 Form1.ForeColor = RGB(0, 0, 250) Picture1.Scale (-3 * H, 6 * H)-(3 * H, 0) *下

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁