亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的ABAQUS有限元強度折減法程序在邊坡穩(wěn)定性分析中的應(yīng)用

        2021-09-08 02:53:36榮光旭
        關(guān)鍵詞:關(guān)鍵字代碼邊坡

        榮光旭,彭 艷,田 凱

        (1. 安徽工業(yè)經(jīng)濟職業(yè)技術(shù)學(xué)院 地質(zhì)與建筑工程學(xué)院,安徽 合肥 230051;2. 中國地質(zhì)調(diào)查局成都地質(zhì)調(diào)查中心,四川 成都 610081)

        0 引 言

        邊坡穩(wěn)定性分析計算的目的是為了判斷邊坡穩(wěn)定狀態(tài)進而對發(fā)展趨勢做出預(yù)測,以防止災(zāi)害的發(fā)生. 強度折減法是邊坡穩(wěn)定性分析的方法之一,它通過定義當(dāng)前土體強度與避免結(jié)構(gòu)破壞所需的最小抗剪強度之比來計算安全系數(shù),或者可定義為即將發(fā)生破壞時,在Mohr-Coulomb破壞準則下的土體強度最小值.

        有限元強度折減法(Strength Reduction Finite Element Method,SRFEM)理論首先由Zienkiewicz O.C[1]提出. SRFEM可應(yīng)用于非均值材料,如土體破壞的研究[2],但主要還是應(yīng)用于邊坡穩(wěn)定性分析[3]. Yuan等[4]根據(jù)邊坡土體內(nèi)聚力折減參數(shù)和內(nèi)摩擦角折減參數(shù)的比值不同,提出了基于雙參數(shù)的折減方式,唐芬等[5]等討論了黏性土和砂土c,φ不同的衰減速度,陳國慶等[6]研究了邊坡強度折減的范圍,Griffiths D.V等[7]提出了邊坡失穩(wěn)判據(jù),曹先鋒等[8]提出了基于溫控參數(shù)的強度折減有限元法; 孫超偉等[9]利用強度折減法基于Hoek-Brown準則提出了一套邊坡穩(wěn)定性分析的圖表法求解思路; 朱文煒等[10]綜合分析了強度折減法與重度增加法對穩(wěn)定性系數(shù)的影響; 李寧等[11-12]利用二分法來求解邊坡的安全系數(shù),同時利用Fortran編制程序并結(jié)合“基于場變量的有限元強度折減法”實現(xiàn)了ABAQUS的二次開發(fā). Wei等[13]完成了單排樁加固的強度折減分析,Shi等[14]以等效塑性應(yīng)變帶連接作為破壞準則,利用SRFEM研究了鋼管樁加固前后土坡的安全系數(shù),Mohammad Reza Arvin等[15]利用SRFEM考慮了三維模型的情形下,對采用了土工格柵加固的邊坡的安全系數(shù)進行了研究,同時對影響邊坡穩(wěn)定的主要因素進行了分析,Mehdipour I等[16]用極限平衡水平切片法分析了土工格柵加筋邊坡的穩(wěn)定性. 以上研究均從不同角度利用強度折減法對穩(wěn)定性系數(shù)的求解過程進行了論述,但是關(guān)于如何在建模以及邊坡穩(wěn)定性分析過程中進行控制以利于計算過程的收斂,以及在邊坡參數(shù)化建模分析等研究方面未做分析.

        ABAQUS是一款功能強大的有限元模擬軟件. 曹偉等、 張文東等、 秦宇等、 冷伍明等、 竇遠明等[17-21]基于ABAQUS平臺利用UMAT子程序及Python腳本分別完成了凍土蠕變模型、 材料裂紋模擬、 切削仿真模擬的二次開發(fā),驗證了Python腳本程序完成二次開發(fā)的可行性. 但是,利用Python編寫腳本程序在ABAQUS中實現(xiàn)邊坡穩(wěn)定性分析的研究較少. 本文基于ABAQUS平臺,利用具有高效率數(shù)據(jù)結(jié)構(gòu)的Python語言進行二次開發(fā),基于Mohr-Coulomb破壞準則,利用Python中字符串索引方式修改關(guān)鍵字,完整討論了程序編寫過程及要點,實現(xiàn)了基于場變量邊坡穩(wěn)定性系數(shù)的自動提交分析計算. 通過工程實例驗證了程序的可行性.

        1 有限元強度折減法

        1.1 失穩(wěn)判據(jù)

        根據(jù)邊坡失穩(wěn)的定義,利用有限元強度折減法計算邊坡穩(wěn)定性系數(shù)有多種不同的解釋. 本文采用常用的三種判據(jù):

        1) 塑性區(qū)從坡腳至坡頂貫通;

        2) 數(shù)值求解不收斂;

        3) 用戶定義的某個節(jié)點出現(xiàn)大變形,即突變點,通常用于分析具體問題.

        以上三種判據(jù)盡管存在不足[22-25],但是經(jīng)過不斷改進[26-27],在理論方面和實踐方面均取得良好的效果. 塑性區(qū)貫通和位移突變點所得穩(wěn)定性系數(shù)相差不大,據(jù)文獻[27]可知,以位移突變標準作為失穩(wěn)判據(jù)有其合理性,因此,本文以邊坡特征點位移突變點作為失穩(wěn)的評價標準.

        1.2 強度折減理論

        在外荷載不變的情況下,強度折減法認為邊坡失穩(wěn)主要是巖土體的剪切破壞. 在極限狀況下,邊坡內(nèi)巖土體自身抗剪強度與巖土體抵御外荷載所發(fā)揮的最低抗剪強度的比值定義為邊坡整體穩(wěn)定性系數(shù). 基本原理是將c,φ同時折減,折減后的抗剪強度參數(shù)可表示為

        cm=c/Fr,

        (1)

        (2)

        式中:c和φ是土體所能提供的抗剪強度;cm和φm是維持平衡所需要的或者土體實際發(fā)揮的抗剪強度;Fr是折減系數(shù).計算過程中不斷增加Fr,當(dāng)邊坡達到臨界狀態(tài)時,折減系數(shù)Fr就是邊坡穩(wěn)定性系數(shù)Fs.

        2 二次開發(fā)思路

        ABAQUS是巖土工程領(lǐng)域常用的有限元軟件之一. Python作為面向?qū)ο蟮母呒壵Z言,亦是ABAQUS內(nèi)核腳本語言. ABAQUS為用戶提供了Python接口,用戶可以利用Python繞過ABAQUS/CAE GUI,從而直接進行內(nèi)核操作.

        ABAQUS中未預(yù)置強度折減法,在進行邊坡穩(wěn)定性分析時,每次都需要將巖土體材料參數(shù)值及折減后的值代入進行試算,在滿足前述失穩(wěn)判據(jù)時得到最終邊坡的穩(wěn)定性系數(shù)值,效率較低. 對于幾何形狀相同但是特征參數(shù)變化的邊坡穩(wěn)定性分析,可以在ABAQUS中預(yù)先定義場變量,將土體材料黏聚力及內(nèi)摩擦角隨場變量折減,只需要一次提交即可完成計算過程,避免了重復(fù)仿真工作,實現(xiàn)了參數(shù)化分析,大大提高了工作效率.

        當(dāng)通過定義材料參數(shù)值隨場變量變化的程序進行分析時,需要編輯修改關(guān)鍵字,在關(guān)鍵字中添加關(guān)于場變量的描述語句. 本文擬通過字符串索引方式,利用字符串修改添加分析步中場變量變化范圍語句,真正實現(xiàn)自動提交分析. 本文討論邊坡穩(wěn)定性分析中前處理及后處理模塊中所有步驟的二次開發(fā)代碼,采用圖1 所示的結(jié)構(gòu)框架.

        圖1 穩(wěn)定性計算流程圖

        邊坡穩(wěn)定性分析二次開發(fā)基本思路是:前處理時建立集合Set,用于邊界條件的設(shè)定; 在定義材料屬性時設(shè)置場變量為1,并在0.5~2范圍內(nèi)變化; 修改關(guān)鍵字,將定義場變量語句添加到inp文件中; 計算完成后得到所需的數(shù)據(jù)及圖件.

        3 代碼實現(xiàn)及應(yīng)用實例

        本文以二維邊坡建模分析為例,所用環(huán)境如下:ABAQUS平臺版本為6.13版本,Python為Anaconda自帶的Python3.7,編譯器采用PyCharm社區(qū)版. 因部分代碼書寫形式在ABAQUS6.13和6.14版本有所區(qū)別,且Python2.6和Python3.7版本語法形式亦有所不同,故此處寫明代碼適用版本. 以文獻[28]中燕山集滑坡為例,該滑坡位于重慶市萬州區(qū)燕山集鎮(zhèn),平面形狀呈“長舌狀”,高程405 m~406 m,前緣至燕山場鎮(zhèn)沿江公路邊,剪出口高程為328 m~329 m 左右. 縱向長305 m,橫向?qū)捈s155 m,如圖2 所示. 該滑坡相關(guān)參數(shù)見表1.

        (a) 地理位置

        (b) 現(xiàn)場示意圖

        表1 燕山集滑坡物理力學(xué)指標及幾何參數(shù)

        3.1 模塊導(dǎo)入

        導(dǎo)入abaqus,abaqusConstants,visualization模塊以便腳本訪問對象并可以使用對象成員和函數(shù). 需要導(dǎo)入的模塊較多,此處僅列舉幾個:

        from abaqus import *

        import regionToolset

        此處可以使用changeKey更改模型名稱,但需注意命名空間,代碼如下:

        myMdb.models.changeKey(fromName=“Model-1”,toName=“slope”)

        slopeModel=mdb.models[“slope”]

        3.2 建模

        模型的建立需導(dǎo)入sketch和part模塊,因為是二維模型,所以只需要依據(jù)實際幾何模型建立點與點之間的連線后成為規(guī)則的圖形,部分代碼如下:

        slopeSketch=slopeModel.ConstrainedSketch(name=“2D_slope_sketch”, sheetSize=10.0)

        slopeSketch.Line(point1=(0,0),point2=(305.0,0))

        slopeSketch.Line(point1=(305.0,0),point2=(305.0,16.0))

        slopeSketch.Line(point1=(0,78),point2=(0,0))

        為了作圖方便,也可以通過ConstructionLine和FixedConstraint建立輔助線及約束.

        3.3 材料

        對材料命名并利用Material對象中的Density和Elastic對土體材料賦值,同時定義材料的c,φ隨場變量的變化. 源碼如下:

        slopeMaterial.Denstity(table=((1.958,),))

        slopeMaterialElastic(table=((100E6,0.30),))#彈性模量100 MPa,泊松比0.30

        slopeMaterial.MohrCoulombPlasticity(dependencies=1, table=((18.208 4,0,0.5),(12.369 0,0,0.75),(9.34,0,1),(7.495 8,0,1.25),(6.257 4,0,1.5),(5.369 2,0,1.75),(4.701 2,0,2)))

        slopeMaterial.MohrCoulombPlasticity.MohrCoulombHardening(dependencies=1,table=((19.62,0,0.5),(13.08,0,0.75),(9.81,0,1),(7.848,0,1.25),(6.54,0,1.5),(5.606,0,1.75),(4.905,0,2)))

        后兩句代碼是定義變化范圍0.5~2的場變量,并根據(jù)式(1)、 式(2)計算得出不同場變量下的c,φ值. 本部分代碼在書寫時需注意所有數(shù)據(jù)為元組(tuple)形式,當(dāng)僅有一個數(shù)據(jù)時,后面一定要有逗號.

        3.4 截面

        通過HomogeneousSolidSection對截面命名,并指定材料名稱為前述名稱,對整個區(qū)域賦予截面屬性,部分代碼如下:

        slope_region=(slope.faces,)

        slopePart.SectionAssignment(region=slope_region,sectionName=“slopesection”,offset=0.0,offsetType=MIDDLE_SURFACE,offsetField=“”,thicknessAssignment=From_Section)

        3.5 裝配及分析步

        利用根裝配(rootAssembly)對象中的Instance方法將多個部件裝配為一個實體,并命名,代碼如下:

        slopeInstance=slopeModel.rootAssembly.Instance(name=“slope instance”,part = slopePart,dependent = ON)

        在定義分析步步驟中,定義兩個分析步,分別命名為“l(fā)oad”,“reduce”; 增加輸出結(jié)果場變量“FV”:

        slopeModel.StaticStep(name=“l(fā)oad”,previous=“Initial”, initialInc=0.1, matrixSolver=DIRECT, matrixStorage = UNSYMMETRIC)#定義分析步“l(fā)oad”

        slopeModel.StaticStep(name=“reduce”,previous=“l(fā)oad”,initialInc=0.1,matrixSolver=DIRECT,matrixStorage = UNSYMMETRIC)#定義分析步“l(fā)oad”

        slopeModel.fieldOutputRequests.changeKey(fromName=“F-Output-1”,toName=“selected field outputs”)

        slopeModel.fieldOutputRequests[“selected field outputs”].setValuesInStep(stepName=“reduce”,variables=(“S”,“PE”, “PEEQ”,“PEMAG”,“LE”,“U”,“RF”,“CF”,“CSTRESS”,“CDISP”,“FV”))#增加“FV”

        ABAQUS中已經(jīng)自定義initial分析步,本步驟中設(shè)置初始增量步為0.1,將Matrix storage選擇為非對稱分析(UNSYMMETRIC).

        3.6 邊界條件定義

        在定義邊界條件時,需要用到區(qū)域(regions), 它可以是集合、 表面對象或臨時區(qū)域?qū)ο骩29]. 本節(jié)使用findAt方法查找邊(edge),findAt方法的參數(shù)可以是邊上的任意一點,返回值為包含該點ID的對象邊,然后即可對邊施加位移約束. 在邊坡穩(wěn)定性分析中,一般左、 右邊界均限制水平位移,邊坡底部限制水平和縱向兩個方向的位移. 以下僅列舉左邊界限制水平位移的代碼[30-31]:

        left_edge=slopeModel.rootAssembly.instances[“slope instance”].edges.findAt(((0,40.0,0),))#查找左邊界上的點

        left_region=regionToolset.Region(edges=left_edge)#確定左邊界

        slopeModel.DisplacementBC(name=“l(fā)eftBC-1”,createStepName=“reduce”,region=left_region,u1=0.0,u2=UNSET,ur3=UNSET, amplitude=UNSET,fixed=OFF,distributionType=UNIFORM,fieldName=“”,localCsys=None)#u1=0.0即為限制水平位移,底部邊界為u1=0.0,u2=0.0

        邊坡的重力載荷通過施加體力的方式來實現(xiàn). 對所有區(qū)域施加體力,需首先利用findAt方法確定面(face),同樣地,參數(shù)可以是面上任意一點,然后通過regionToolset賦給相應(yīng)區(qū)域,施加體力. 代碼如下:

        Body_Force_faces=slopeModel.rootAssembly.instances[“slope instance”].faces.findAt(((120,43,0),))

        Body_Force_region=regionToolset.Region(faces=Body_Force_faces)

        slopeModel.BodyForce(name=“bodyforce”,createStepName=“reduce”,region=Body_Force_region,comp2=-20.0)

        3.7 網(wǎng)格劃分

        首先利用3.6節(jié)所述的findAt方法確定面以后,賦予指定的區(qū)域,然后進行網(wǎng)格的劃分. 本文中網(wǎng)格類型采用自由網(wǎng)格劃分形式,單元為四節(jié)點平面應(yīng)變減縮積分單元. 部分代碼如下:

        slope_mesh_elemType=mesh.ElemType(elemCode=CPE4R,elemLibrary=STANDARD)

        slopeMeshFace=slopeInstance.faces.findAt(((120,35,0),))

        slopeMeshFaceRegion=regionToolset.Region(faces=slopeMeshFace)

        slopePart.setElementType(regions=slopeMeshFaceRegion,elemTypes=(slope_mesh_elemType,))

        slopeModel.parts[“slope”].generateMesh()

        燕山集滑坡二維有限元模型經(jīng)過劃分網(wǎng)格后,如圖3 所示.

        圖3 劃分網(wǎng)格后的模型

        3.8 關(guān)鍵字修改及工作提交

        ABAQUS中通過定義場變量實現(xiàn)強度折減法時需要定義“initial conditions”,因此,需要修改關(guān)鍵字(keywords)[32]. 本文通過文件處理的方式,利用Python中的字符串索引來確定需要修改的關(guān)鍵字的行數(shù),然后插入替代的內(nèi)容. 部分代碼如下:

        originstr = “**STEP:Reduce ”

        newstr = “**STEP:Reduce Field,VARIABLE=1 slope-1.slope,2; ”#替代的關(guān)鍵字字符串

        strindex = lines.index(originstr)#索引確定需要修改關(guān)鍵字的行數(shù)

        lines[strindex]= newstr

        lines.insert(strindex+1,newstr)#插入替代的內(nèi)容

        3.9 后處理

        導(dǎo)入visualization模塊,打開結(jié)果數(shù)據(jù)文件,查看穩(wěn)定性系數(shù)及滑動面位置. 本算例在第二個分析步t=0.437 73時無法收斂,計算終止. 此時等效塑性應(yīng)變云圖如圖4 所示,繪制場變量-位移曲線,即燕山集滑坡特征點的水平位移隨折減系數(shù)變化的曲線,如圖5 所示. 依據(jù)前述失穩(wěn)判據(jù)理論,位移突變點所對應(yīng)的FV1為0.99,即為燕山集滑坡的穩(wěn)定性系數(shù),這與剩余推力法所得的計算結(jié)果 1.012 基本一致. 從輸出數(shù)據(jù)庫讀取數(shù)據(jù)部分代碼如下:

        from odbAcesss import *

        from visualization import XYData

        odb=visualization.openOdb(path=yanshanji.odb)#打開燕山集odb文件

        xyData=session.XYData(plotName,data)

        SafetyCurve=session.Curve(xyData)#繪制曲線

        xyp=session.XYPlot(plotName)

        chart = xyp.charts.values()[0]

        chart.setValues(curvesToPlot=(SatyCurve, ), )

        vp=session.viewports[“Viewport:1”]

        vp.odbDisplay.setPrimaryVariable(variableLabel=“PEMAG”,outputPosition=INTEGRATION_POINT)#顯示PEMAG云圖

        vp.odbDisplay.setPrimaryVariable(variableLabel=“U”)#顯示計算終止時增量位移等值線云圖,如圖6 所示.

        圖4 t=0.437 73時的塑性區(qū)分布圖

        圖5 特征點水平位移隨FV變化的曲線

        圖6 t=0.437 73時的增量位移等值線云圖

        上述為獲取常規(guī)結(jié)果數(shù)據(jù)輸出的文件,一般邊坡穩(wěn)定性分析中只需要分析得到以上結(jié)果. 在某些特定分析中還可以利用getSubset獲取邊坡不同位置,如坡頂或坡中土體的位移場數(shù)據(jù)以判斷邊坡破壞類型,或者通過Viewport函數(shù)創(chuàng)建一個新的視圖窗口,代碼舉例如下:

        myOdb.step[“Step-1”].frames[1].fieldOutputs[“RF”].getSubset(region=myodb.rootAssembly.nodeSets[“setsname”]).values

        myOdb=visualization.openOdb(path=jobName.job)

        myViewport.setValues(displayedObject=myOdb)

        myDisplacement=frame.fieldOutputs[“U”]

        myStress=frame.fieldOutputs[“S”]

        將上述代碼保存為后綴名.py文件后從編譯器退出. 運行該腳本程序的方法有多種,可以在ABAQUS/CAE中直接在菜單中選擇從保存路徑下Run Script.

        4 結(jié) 論

        本文以燕山集滑坡為例,完整討論了利用Python語言進行有限元軟件ABAQUS的二次開發(fā),通過定義材料參數(shù)隨場變量的變化以及利用字符串索引修改關(guān)鍵字的方式實現(xiàn)了邊坡穩(wěn)定性自動提交分析,使用方便,得到結(jié)果與極限平衡法基本一致. 主要結(jié)論有以下幾點:

        1) 基于場變量的邊坡穩(wěn)定性分析,避免了需多次修改基于cae產(chǎn)生的inp文件中的c和φ值,以及每次均需要提交工作才能獲得最終的穩(wěn)定性系數(shù)的問題,分析過程得以簡化,達到參數(shù)化分析的目的.

        2) 通過編寫Python腳本程序,調(diào)用ABAQUS內(nèi)核分析實現(xiàn)穩(wěn)定性系數(shù)計算過程的自動化. 腳本程序文件便于研究人員更為深入地理解響應(yīng)機理,建模以及分析過程中對模型的調(diào)試和診斷更有利于計算過程的收斂.

        3) 本文通過Python語言中字符串索引方式修改關(guān)鍵字,順利完成了模型輸入文件的修改,實現(xiàn)了自動提交分析.

        猜你喜歡
        關(guān)鍵字代碼邊坡
        這邊山 那邊坡
        履職盡責(zé)求實效 真抓實干勇作為——十個關(guān)鍵字,盤點江蘇統(tǒng)戰(zhàn)的2021
        華人時刊(2022年1期)2022-04-26 13:39:28
        成功避開“關(guān)鍵字”
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        水利水電工程高邊坡的治理與加固探討
        基于SLOPE/W的邊坡穩(wěn)定分析
        基于不同軟件對高邊坡穩(wěn)定計算
        中文在线8资源库| 国产福利一区二区三区在线观看 | 色先锋资源久久综合5566| 免费国产h视频在线观看86| 日本精品av中文字幕| 丰满人妻一区二区三区视频| 久久久久亚洲av无码专区首jn| 不卡日韩av在线播放| 最新亚洲人成网站在线观看| 麻豆精品久久久久久久99蜜桃 | 成人偷拍自拍视频在线观看| 久久久久久亚洲av无码蜜芽| 日本高清www无色夜在线视频| 精品欧美久久99久久久另类专区| 白白白色视频在线观看播放 | 国产在线观看免费一级| 亚洲丰满熟女乱一区二区三区 | 亚洲人成人影院在线观看| 成美女黄网站18禁免费| 尤物国产一区二区三区在线观看| 国产午夜福利久久精品| 免费啪啪视频一区| 久久婷婷国产五月综合色| 在线观看高清视频一区二区三区| 国产大屁股视频免费区| 99热久久精里都是精品6| 另类欧美亚洲| 一区二区亚洲精美视频| 最新欧美精品一区二区三区| 国产人妻精品一区二区三区不卡 | 亚洲中文字幕av天堂自拍| 思思久久96热在精品国产| 国产激情无码Av毛片久久| 深夜福利国产精品中文字幕| 一本色道无码不卡在线观看| 丰满人妻在公车被猛烈进入电影| 香蕉亚洲欧洲在线一区| 免费av在线 国产精品| 好大好湿好硬顶到了好爽视频 | a√无码在线观看| 在线播放草猛免费视频|