python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!
0 前言
山體滑坡是常見的自然災害,從理論分析的角度講,滑坡的穩定性分析方法源自于高中物理學,如圖1所示。前者的滑動分析非常簡單,在已知滑塊的重量以及接觸面摩擦系數的基礎上通過計算下滑力和抗滑力的關系即可分析其穩定性;對于后者,情況將變得非常復雜,第一個難題是不知道滑塊的形狀如何,第二個難題是土體材料能提供多大的抵抗力,同時還要考慮周圍環境的影響,比如荷載、地下水等。
圖1 滑動示意圖下面將結合Python介紹黏性土坡穩定性分析程序的實現過程,以最簡單的瑞典條分法(Felenius法)為例,下面簡要的介紹一下該方法,該方法有主要有如下一些假設:
- 1、對于第一個難題,其假設滑動面的形狀為圓弧;
- 2、對于第二個難題,假設土坡滑動時滑動面上滿足庫倫準則;
- 3、剛體滑動、土體材料均質;
- 4、以滑動力矩和抗滑力矩的大小來判斷土坡的穩定性。
如圖2所示,滑動力矩由滑塊的重力產生,而抗滑力矩由土體材料在滑動面上的摩擦力提供?;瑒恿睾苋菀浊蟪?#xff0c;
而抗滑力矩為滑動面上的積分,
根據假定,破壞面上滿足庫倫準則,即破環面上的剪切力
, 和 為土體材料的力學參數, 是破壞面法向方向的正應力,方向與剪切力 垂直,定義安全系數 :
如果
,則表示土坡是安全的,因為抵抗力矩大于滑動力力矩,如果 則 土坡處于極限平衡狀態, 則表示土坡會發生滑動。顯然,對于上式, 是坐標的函數,很難得到解析解的,常用數值方法進行求解,首先將滑塊體離散成若干豎向的條塊,如圖3所示,用直底邊四邊形來代替曲底邊四邊形,先化整為零,然后分析單個豎向條塊的穩定性,最后反過來分析整體穩定性,這種采用豎向條塊離散求解的方法也被稱為豎向條分法。圖3 滑塊離散不難發現,滑塊上的未知力、力作用點數量是大于每個條塊的平衡方程數量,一般每個條塊只有三個平衡方程,
水平方向的力平衡:
豎直方向的力平衡:
,以及力矩平衡:
,三個方程只能求解三個未知數,當未知數大于3時,則需要做出適當的假定來增加方程數或減少未知數的數量來求解,再加上滑動面形狀的假設,從而出現了很多不同的求解方法。不過,作為最早的條分法,瑞典條分法不考慮條間力的平衡,
圖4 瑞典條分法條塊受力- 5、假定 作用點在底邊中點,方向指向圓心, 指向底邊中點,且滑動面上的法向合力 于是 。
最后化零為整,計算安全系數,
對于均質土體,
,,為了讓問題變得不那么復雜,本例不考慮外力和地下水作用。現在雖然知道了滑動面的形狀以及計算安全系數的方法,但滑動面的位置并不清楚,如何找到滑動面的位置呢?最原始的方法是窮舉,認為安全系數
最小的那個滑動面最具有參考價值,也被稱為最危險滑動面,此時計算的安全系數也被稱最小安全系數,窮舉算法如下,可以看到,上面的窮舉法是一個三重循環,需要預先給定圓心位置和半徑的取值范圍。
1 程序
瑞典條分法的理論并不復雜,編程難點是條塊的劃分,涉及到一些幾何運算,如多線段與圓的交點,線段于線段的交點,四邊形的面積運算等,這里采用Python的一個幾何運算庫Shapely實現這些幾何運算。
本例程序需要用到的Python庫包括數組運算庫NumPy,幾何運算庫Shapely以及繪圖庫Matplotlib,使用pip安裝,
pip接下來開始編寫程序,首先定義描述滑動面的類型Circle,由于Shapely中沒有真正的圓類型,而是由多段線來描述,這也導致交點計算時速度會較慢,讀者可以自行改進。下面所有的程序編寫在同一個模塊中,
from然后定義土坡類型Slope,初始化參數為構成土坡輪廓線的點集,
class接下來,定義根據滑動面信息條分滑塊的方法cut(),其需要輸入一個滑動面參數,本例為一個Circle對象,
def在條塊劃分完成后,計算安全系數前需要設定土體的力學參數,定義set_soil_prop()方法,
def然后計算安全系數,定義方法calc_fos(),
def接下來,采用窮舉法找到最小的安全系數,定義solve()方法,該方法需要傳入一個參數search_box = [xmin,ymin,xmax,ymax],用于設置圓心的位置范圍,
def最后定義一個繪圖方法,利用matplotlib庫進行結果輸出,默認輸出最危險滑動面,
def同時,clock_wise_points()函數定義如下,
def2 算例
接下來用上述程序做簡單的算例,
if計算結果如圖5所示,動態搜索見圖6。
圖5 算例結果 圖6 動態搜索修改土體參數,比如增大內摩擦角,結果如圖7所示。
s圖7 計算結果修改圓心邊界,結果如圖8所示。
s圖8 計算結果可以看到,不光是修改土體的力學參數,修改圓心的位置也會影響計算結果。
3 總結
根據上文了解到,一直以來,黏性土坡的穩定性分析理論的研究思路主要集中在以下幾個方面,
- 滑動面形狀研究,目前主要分為圓弧滑動面和任意形狀滑動面;
- 條塊力學平衡假設研究,通過設定假設條件,增加方程數數量或減少未知數的數量來滿足條塊的平衡;
- 最危險滑動面搜索方法研究,窮舉法不僅效率低,而且由于步長的存在,也只是近似解,所以考慮將最優化理論應用于搜索最危險滑動面。
4 說明
- 由于水平有限,筆者無法保證程序在極端幾何條件下運行不會出現bug;
- 本例僅介紹瑞典條分法的基本程序實現,拋磚引玉,未考慮的因素包括地下水影響、荷載作用,多土層分布的情形,后期考慮加入這些功能,也可能會實現更多的條分法,比如常用的Bishop法、Janbu法、Spence法等,歡迎各位同仁交流和指正。
總結
以上是生活随笔為你收集整理的python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动汇总excel_RPA手
- 下一篇: 安装oracle需要多少内存,针对大型内