0 前言
巖土工程中常用的數(shù)值計(jì)算方法主要有有限元法睦番、有限差分法和離散元法等假勿,今天我們要用到的FLAC3D軟件采用的就是有限差分法。有限差分法歷史悠久,其最初的使用甚至可以追溯的第一臺電子計(jì)算機(jī)出現(xiàn)之前。有限差分法并不是為了電腦編程而出現(xiàn)的侦铜,而是計(jì)算機(jī)使用者后來發(fā)現(xiàn)有限差分法易于編程實(shí)現(xiàn),使得有限差分法在數(shù)值計(jì)算領(lǐng)域得到不斷推廣和進(jìn)一步發(fā)展钟鸵。
越是彌足珍貴的軟件泵额,外表看上去,往往越是平常無奇携添,仿真模擬給全身心帶來的幸福,從來也是如此篓叶。??????????????? ??????????????????????????????? ? ? ?? --指尖上的仿真
FLAC3D軟件主要用于解決巖土工程問題烈掠,由美國的ITASCA公司開發(fā)。ITASCA是1981年由美國明尼蘇達(dá)大學(xué)5位教師聯(lián)合創(chuàng)辦的巖石力學(xué)技術(shù)機(jī)構(gòu)缸托,這些創(chuàng)始人當(dāng)初在北美首創(chuàng)了巖石力學(xué)學(xué)科左敌,并組織創(chuàng)立了國際巖石力學(xué)學(xué)會,因此俐镐,在業(yè)界ITASCA被認(rèn)為是世界巖石力學(xué)學(xué)科發(fā)源地之一矫限。
接下來介紹一下我們要解決的問題,就是地下硐室或通道結(jié)構(gòu)的錨網(wǎng)噴支護(hù)問題佩抹。地下硐室或者通道開挖后引起地層內(nèi)應(yīng)力的重新分布叼风,面臨穩(wěn)定性風(fēng)險(xiǎn),因此需要及時(shí)支護(hù)棍苹,而錨網(wǎng)噴就是常用的方法之一无宿。錨網(wǎng)噴支護(hù)方法自上世紀(jì)60年代以來,已被廣泛采用枢里。錨桿和噴射混凝土與圍巖共同形成一個(gè)承載結(jié)構(gòu)孽鸡,可有效地限制圍巖變形的自由發(fā)展,調(diào)整圍巖的應(yīng)力分布栏豺,防止巖體松散墜落彬碱。它既可以用作施工過程中的臨時(shí)支護(hù),也可以在圍巖穩(wěn)定性較好情況下奥洼,代替永久支護(hù)或襯砌巷疼。該方法在煤礦巷道、地下硐室和公路隧道中都有廣泛應(yīng)用灵奖。錨網(wǎng)噴支護(hù)的實(shí)景照片和某設(shè)計(jì)圖如圖1皮迟、2所示搬泥。
由于支護(hù)結(jié)構(gòu)數(shù)量多,支護(hù)構(gòu)件間存在復(fù)雜的相互作用伏尼,對支護(hù)有效性的分析多借助數(shù)值仿真方法進(jìn)行忿檩。目前絕大多數(shù)數(shù)值計(jì)算軟件并沒有直接的相應(yīng)內(nèi)置單元來模擬錨桿,而FLAC3D內(nèi)置了cable單元用于模擬錨桿或錨索支護(hù)結(jié)構(gòu)爆阶,同時(shí)其強(qiáng)大的Fish語言允許用戶通過編程實(shí)現(xiàn)大量錨桿的自動創(chuàng)建燥透、連接的建立、屬性參數(shù)的設(shè)置等工作辨图,代碼一旦編寫完成只需少量修改即可反復(fù)使用班套,可以分析不同支護(hù)參數(shù)下的支護(hù)效果以便進(jìn)行參數(shù)優(yōu)化。
本文作者之前在國內(nèi)兩家著名仿真論壇公布了錨網(wǎng)噴支護(hù)的部分代碼故河,獲得了大量的點(diǎn)擊和關(guān)注吱韭,當(dāng)時(shí)公布的代碼已經(jīng)進(jìn)行了簡化,并未公開其中錨桿與噴層混凝土間連接的相關(guān)操作鱼的。在本文中理盆,將較詳細(xì)的介紹該結(jié)構(gòu)單元節(jié)點(diǎn)上的連接的自動刪除和新建方法,并公開相應(yīng)的核心計(jì)算代碼凑阶,該部分內(nèi)容對于在模擬中獲得真實(shí)的支護(hù)效果非常重要猿规。
本文在接下來的第1節(jié)將介紹FLAC3D中結(jié)構(gòu)單元的部分基礎(chǔ)知識,尤其是單元間連接建立的一般方法宙橱,然后介紹在需要建立大量連接時(shí)姨俩,如何利用內(nèi)置函數(shù)實(shí)現(xiàn)連接的建立。在第二節(jié)將介紹一個(gè)實(shí)例师郑,在實(shí)例中具體演示連接的自動建立环葵。第三節(jié)將給出該實(shí)例對應(yīng)的完整代碼。有了前面各節(jié)的鋪墊宝冕,讀者將更容易理解和掌握第三節(jié)的代碼积担。
1 FLAC3D中連接的建立
1.1基礎(chǔ)介紹
FLAC3D中的結(jié)構(gòu)單元主要包括:錨桿(錨索)單元(cable)、梁單元(beam)猬仁、殼體單元(shell)帝璧、襯砌單元(liner)和土工格柵(geogrid)。這些結(jié)構(gòu)單元一般在普通實(shí)體單元(zone)表面(圖3)或內(nèi)部建立(圖4)湿刽,結(jié)構(gòu)單元在創(chuàng)建時(shí)單元節(jié)點(diǎn)(node)會自動與鄰近的實(shí)體單元建立連接(link)以實(shí)現(xiàn)與周圍實(shí)體單元的相互作用的烁。結(jié)構(gòu)單元的單元與單元之間也通過節(jié)點(diǎn)(node)上的link實(shí)現(xiàn)共同作用。因此诈闺,link有兩種類型渴庆,即:節(jié)點(diǎn)-實(shí)體單元(node-zone)(圖4)、節(jié)點(diǎn)-節(jié)點(diǎn)(node-node)。默認(rèn)情況下不同類型結(jié)構(gòu)單元各自由度的link的類型襟雷,如表1所示:
其中刃滓,free和rigid分別表示該自由度上可以自由位移和剛性的,SY代表剪切屈服彈簧耸弄,NY代表法向屈服彈簧咧虎,PY代表樁屈服,PYDP代表依賴彈簧的樁屈服计呈。
當(dāng)有新的結(jié)構(gòu)單元被創(chuàng)建時(shí)砰诵,會有新的節(jié)點(diǎn)出現(xiàn)在實(shí)體單元表面或內(nèi)部,新的節(jié)點(diǎn)與實(shí)體單元間會按照表1中的默認(rèn)屬性自動建立node-zone連接捌显,進(jìn)而實(shí)現(xiàn)結(jié)構(gòu)單元與實(shí)體單元間的相互作用茁彭。也就是說,結(jié)構(gòu)單元與實(shí)體單元間的相互作用是通過node-zone連接實(shí)現(xiàn)的扶歪。
1.2 cable與liner的連接
在后面的建模中會利用cable單元模擬錨桿理肺,用liner單元模擬含鋼筋網(wǎng)片的混凝土噴層,因此善镰,在此以cable和liner的連接妹萨,演示結(jié)構(gòu)單元間node-node連接的建立方法。
如圖6所示的cable和liner單元媳禁,圖中紫色圓圈代表結(jié)構(gòu)單元的node,圓圈內(nèi)數(shù)字表示節(jié)點(diǎn)編號画切,這些編號是結(jié)構(gòu)單元被創(chuàng)建時(shí)自動分配的竣稽。圖中節(jié)點(diǎn)57和節(jié)點(diǎn)69被拉開了距離,主要是方便觀察節(jié)點(diǎn)編號霍弹,實(shí)際建模時(shí)兩個(gè)node是重合的毫别。需要注意的是:結(jié)構(gòu)單元在被創(chuàng)建時(shí),其節(jié)點(diǎn)會自動與鄰近的zone按表1的屬性建立連接典格,兩個(gè)結(jié)構(gòu)單元的節(jié)點(diǎn)即使重合也不會自動建立連接岛宦。
因此,節(jié)點(diǎn)69和節(jié)點(diǎn)57都與liner后的實(shí)體單元(zone)自動建立了連接耍缴。在人為建立節(jié)點(diǎn)69和節(jié)點(diǎn)57間的連接前需要人為的刪除節(jié)點(diǎn)與zone自動建立的連接砾肺。但連接的刪除需要知道link的ID。命令清單提供了連接刪除和建立的方法防嗡。
從上述代碼可以看出兩個(gè)node間的連接就需要多行代碼才能完成变汪,涉及兩個(gè)link的刪除,1個(gè)新link的建立以及屬性的設(shè)置多個(gè)過程蚁趁,尤其是當(dāng)創(chuàng)建的連接很多時(shí)無法每個(gè)節(jié)點(diǎn)都通過print來人為的觀察確定link的ID裙盾,這個(gè)過程過于繁瑣。所以當(dāng)需要?jiǎng)h除和創(chuàng)建的link數(shù)量多時(shí),必須利用FLAC3D內(nèi)置的Fish語言番官,通過內(nèi)置函數(shù)來完成相關(guān)操作庐完。
一個(gè)成功的分析師,并不只依賴好的軟件徘熔,更仰仗厚重的經(jīng)驗(yàn)门躯。
--指尖上的仿真
一個(gè)好的模擬分析,不是所有的操作都依靠鼠標(biāo)近顷,而更依賴于鍵盤生音。很多工作,寫好代碼就讓它自己去算吧……
1.3通過Fish刪除指定坐標(biāo)處liner節(jié)點(diǎn)的link
采用如下代碼完成與cable外端節(jié)點(diǎn)重合的節(jié)點(diǎn)的定位窒升、link的確定以及l(fā)ink的刪除缀遍。
代碼片段2中,nd_near(_x0, _y0, _z0)獲得指向位置(_x0, _y0, _z0)處的節(jié)點(diǎn)的指針(圖7中指針1)饱须,nd_link(_ndLPTR)則是根據(jù)節(jié)點(diǎn)指針獲得指向該節(jié)點(diǎn)的link的指針(圖7中指針2)域醇,此處的link是liner與鄰近的zone間自動建立的連接。lk_id(_lkPTR)則根據(jù)指針2獲得link的ID蓉媳。命令:seldeletelinkrangeid_linkID根據(jù)link的ID刪除該link譬挚。nd_id(_ndLPTR)根據(jù)指向位置(_x0, _y0, _z0)處的節(jié)點(diǎn)的指針1獲得該節(jié)點(diǎn)的ID。
刪除錨桿最外側(cè)靠近liner的節(jié)點(diǎn)上的link酪呻,F(xiàn)ish代碼如下:
1.4刪除靠近liner的錨桿節(jié)點(diǎn)的link
刪除錨桿最外側(cè)靠近liner的節(jié)點(diǎn)上的link减宣,F(xiàn)ish代碼如下:
在上述代碼中,由s_near(_x1,_y1,_z1)獲得指向指定坐標(biāo)位置處的結(jié)構(gòu)單元的指針玩荠,即獲得指向cable單元的指針漆腌,再由該指針獲得該結(jié)構(gòu)單元的cid,然后按照FLAC3D生成cable單元的編號特征阶冈,獲得靠近liner的一個(gè)節(jié)段的cable單元的cid號闷尿,再由該cid號通過s_find函數(shù)獲得指向靠近liner處的cable單元的指針,由該指針通過s_node函數(shù)獲得單元的第一個(gè)節(jié)點(diǎn)的指針女坑,由該指針通過nd_id函數(shù)獲得節(jié)點(diǎn)的ID填具。整個(gè)過程相對比較復(fù)雜,可以參考圖8進(jìn)行理解匆骗。從圖8中圍巖內(nèi)最內(nèi)側(cè)的錨桿節(jié)點(diǎn)坐標(biāo)(_x1, _y1, _z1)開始劳景,沿著箭頭的方向利用適當(dāng)?shù)膄ish函數(shù),最終可以獲得錨桿最外側(cè)節(jié)點(diǎn)的id碉就。之后刪除這個(gè)節(jié)點(diǎn)創(chuàng)建時(shí)自動建立的link(對應(yīng)命令:seldeletelinkrangeid_linkID)枢泰。
面的代碼看得頭暈,有木有铝噩?這個(gè)可以有衡蚂。慢慢理解吧窿克,話說我在寫這個(gè)代碼時(shí)也是犧牲了很多腦細(xì)胞的。為什么這么繞呢毛甲?是因?yàn)閘iner的node與cable的node在錨桿的最外側(cè)節(jié)點(diǎn)(_x0, _y0, _z0)處重合了年叮。通過nd_near(_x0,_y0,_z0)函數(shù)只能獲得重合位置處一個(gè)節(jié)點(diǎn)的指針,無法同時(shí)獲得另外一個(gè)節(jié)點(diǎn)的指針玻募。nd_near()函數(shù)在重合的2個(gè)node處是返回哪個(gè)node的指針只损,主要根據(jù)node的創(chuàng)建順序,同一位置處的多個(gè)node七咧,哪個(gè)先創(chuàng)建的跃惫,nd_near()返回指向它的指針。在本文的分析中艾栋,liner始終先于cable創(chuàng)建爆存,所以可以利用nd_near()獲得處liner的節(jié)點(diǎn)的指針。而同一位置處cable節(jié)點(diǎn)的指針則需要如圖8中那樣蝗砾,通過最內(nèi)側(cè)的錨桿結(jié)構(gòu)單元利用fish函數(shù)向外找到最外側(cè)的節(jié)點(diǎn)先较。
1.5建立cable節(jié)點(diǎn)與liner節(jié)點(diǎn)間的link
建立cable節(jié)點(diǎn)與liner節(jié)點(diǎn)間的link并設(shè)置link屬性,代碼如下:
到此悼粮,我們就完成了錨桿與襯砌結(jié)構(gòu)單元間在重疊的節(jié)點(diǎn)處刪除各自原有連接闲勺、新建node-node連接并設(shè)置相應(yīng)屬性這一最困難的工作。
2 應(yīng)用實(shí)例
接下來將以一個(gè)煤礦巷道錨網(wǎng)噴支護(hù)的實(shí)例來演示上述結(jié)構(gòu)單元link相應(yīng)操作的實(shí)現(xiàn)扣猫。某煤礦巷道菜循,其斷面形式為直墻半圓拱型,混凝土噴層和錨桿的布置方式與圖9中接近申尤。錨桿加固的作用是提供局部抵抗巖塊滑動及裂縫開展的剛度癌幕。錨桿借助于水泥漿或樹脂藥卷沿其長度方向提供了抗剪能力。錨桿及錨索采用cable單元進(jìn)行模擬瀑凝。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 我是未完分割線
5 結(jié)語
真實(shí)的世界使我感興趣序芦,因?yàn)樗强伤艿某艚堋粤咪!▏骷壹o(jì)德
仿真世界是另一個(gè)有趣的世界,因?yàn)槟隳馨l(fā)揮自己的想象力和創(chuàng)造力把一些東西從無到有的在那個(gè)虛擬世界中創(chuàng)造出來渴杆,再賦予它們以屬性寥枝,建立它們間的關(guān)聯(lián),觀察它們的發(fā)展…… 那不是很有趣嗎磁奖?
一去技術(shù)路囊拜,天涯若比鄰。希望每一位CAE愛好者比搭,都能從仿真中獲得樂趣冠跷!