曾 晨, 鄭俊杰, 姚翔川
(華中科技大學(xué) 土木工程與力學(xué)學(xué)院, 湖北 武漢 430074)
隨著城市建設(shè)的飛速發(fā)展,利用BIM技術(shù)建立三維信息模型,在建筑全生命周期內(nèi)進(jìn)行信息共享與交互式工作,實現(xiàn)建筑信息化,已經(jīng)成為建筑行業(yè)的重要發(fā)展趨勢。
目前,BIM技術(shù)主要與結(jié)構(gòu)建筑方面的工程實際結(jié)合,在工程管理中應(yīng)用模型的可視化、參數(shù)化和信息化等對項目進(jìn)行統(tǒng)籌管理。然而,BIM技術(shù)的應(yīng)用范圍很廣,與監(jiān)測軟件結(jié)合能實時監(jiān)測工程在施工及運行階段的應(yīng)力沉降等變化,對復(fù)雜環(huán)境中的大型工程具有良好的監(jiān)測效果;將BIM技術(shù)與工程計算結(jié)合可為建筑項目提供災(zāi)前、災(zāi)中、災(zāi)后安全性分析的預(yù)警防控系統(tǒng),能有效防止災(zāi)害的發(fā)生和降低災(zāi)害的風(fēng)險和損失。對于深基坑建設(shè)中工程繁雜、隱蔽地下導(dǎo)致的潛在問題,建立安全預(yù)警防控管理平臺尤為重要。因此實現(xiàn)BIM建模和工程計算一體化能有效降低深基坑的工程隱患,提高工程的安全性能,優(yōu)化施工方案和流程。
針對復(fù)雜條件下的地鐵車站深基坑工程,要充分考慮工程中存在的不確定性和變異性,綜合考量確定性分析和不確定性分析,得到更加符合工程實際的計算結(jié)果,以便作出準(zhǔn)確的預(yù)測,解決深基坑工程中的實際問題。因此實現(xiàn)深基坑工程BIM建模和工程計算一體化,開展軟土深基坑力學(xué)行為不確定性分析具有極其重要的現(xiàn)實意義和工程應(yīng)用價值。
目前對深基坑安全性能的分析常以極限平衡理論為基礎(chǔ),依據(jù)設(shè)計圖紙進(jìn)行建模分析。但是實際深基坑工程中存在材料參數(shù)的空間變異性和施工支護(hù)等施工精度的不確定性,僅僅通過單一土層和標(biāo)準(zhǔn)基坑設(shè)計來評價工程的安全性能是不合理的。
深基坑工程中的不確定因素主要來自兩方面:(1)材料參數(shù)的空間變異性;(2)構(gòu)件幾何形狀或位置的不確定性(例如開挖過程中超欠挖的或支撐架設(shè)精度的不確定性等)。這兩方面的不確定性計算存在較大的差別??臻g變異性能通過生成隨機(jī)場對材料參數(shù)進(jìn)行參數(shù)更新得以改善,目前該方面的研究較為系統(tǒng)。Lumb[1]將統(tǒng)計學(xué)理論引入土力學(xué),對天然土體中存在的變異性和土體強度的概率分布進(jìn)行分析,得到抗剪強度參數(shù)服從正態(tài)分布的結(jié)論,并第一次提出了土體參數(shù)的空間變異性的概念。Vanmarcke[2]為了描述土體性質(zhì)的空間變異性,提出了相關(guān)距離的概念,并以此為基礎(chǔ)建立了土體材料的隨機(jī)場模型。Bjerrum[3]對基坑支護(hù)體系的可靠度進(jìn)行了研究,分析了不同失效模式下的不確定因素。國內(nèi)對巖土工程中參數(shù)不確定研究發(fā)展也較為系統(tǒng)。張繼周等[4]通過現(xiàn)場統(tǒng)計數(shù)據(jù)得出結(jié)論:巖土參數(shù)接受正態(tài)、對數(shù)正態(tài)分布。唐雨耕[5]以工程實例為基礎(chǔ)研究了土體材料的空間變異性對地下支護(hù)結(jié)構(gòu)側(cè)移變形的影響。
構(gòu)件的幾何形狀和位置的不確定性往往需要根據(jù)不同的不確定參數(shù)進(jìn)行網(wǎng)格和節(jié)點的調(diào)整,在建模上費時費力,因此前人對深基坑工程的不確定性問題中施工精度的不確定性未進(jìn)行深入研究。但是,在施工中一些人為行為會導(dǎo)致的實際工程與預(yù)計模型出現(xiàn)偏差,其中由施工質(zhì)量缺陷導(dǎo)致事故的情況并不少見[6]。
目前可以利用Revit建立深基坑三維模型,并通過相應(yīng)的轉(zhuǎn)換接口將其導(dǎo)入到巖土工程計算軟件中進(jìn)行計算[7]。但是大部分轉(zhuǎn)換接口只能轉(zhuǎn)換長方體等方塊類型模型[8],此外利用Revit API進(jìn)行模型轉(zhuǎn)換的接口程序在Revit中修改模型同樣費時費力[9]。
基于上述缺陷,本文基于Revit-FLAC3D模型轉(zhuǎn)換接口,提出了一種考慮施工精度的不確定性的算法程序。在Revit中對地鐵車站軟土深基坑開挖的施工過程進(jìn)行數(shù)值建模,通過Revit API自動對Revit模型中施工精度(如支撐架設(shè)精度)等不確定性按一定分布規(guī)律進(jìn)行隨機(jī)分布,再通過Revit-FLAC3D模型轉(zhuǎn)換接口將模型導(dǎo)入巖土計算軟件中,從而對施工精度的不確定性進(jìn)行分析研究。該方法能夠有效地將Revit模型隨機(jī)進(jìn)行幾何形狀和位置的隨機(jī)化分布,再進(jìn)行后續(xù)的計算分析。最后,基于工程實例,對本文所提出的不確定分析的可行性進(jìn)行了驗證。
本文在Microsoft Visual Studio 2015中采用C#語言進(jìn)行實時調(diào)試,以Microsoft. NET Framework 4.5.2為開發(fā)框架,利用Revit API將算法程序應(yīng)用于Revit模型中。以考慮鋼支撐施工精度的不確定性為例, Revit二次開發(fā)程序流程如圖1所示。首先對當(dāng)前視圖下的所有模型進(jìn)行遍歷,對不同模型進(jìn)行分類并依次進(jìn)行編號;然后讀取每個模型實例中的幾何信息、類型屬性以及部分自定義參數(shù)和注釋;之后對部分帶有特定注釋的模型實例進(jìn)行隨機(jī)化處理,對所有鋼支撐的高度進(jìn)行正態(tài)分布排列,并將隨機(jī)化的鋼支撐反映到Revit模型中;最后,將隨機(jī)化后的實體和類型屬性結(jié)合形成具有完整信息的實例,并按ANSYS APDL語言格式以及FLAC3D可讀取的命令流格式生成TXT文件輸出。
圖1 不確定分析接口程序流程
首先在Visual Studio 2015的類庫工程中對Revit API.dll,Revit APIUI.dll,System. Windows. Forms進(jìn)行引用,并添加Revit二次開發(fā)必要的類型空間,代碼如下:
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using System.Windows.Forms;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.ApplicationServices;//引用Revit二次開發(fā)所需要的基礎(chǔ)數(shù)據(jù)庫
然后對視圖中的所有實例進(jìn)行遍歷,判定其是否屬于需要不確定修正的實例,同樣以支撐精度的不確定性為例,下例中選取所有名稱中帶有“鋼支撐”的實例,代碼如下:
foreach (GeometryObject geomobj in geomElement) //遍歷當(dāng)前視圖中所有實體類型
{
GeometryInstance geomInstance = geomobj as GeometryInstance;
Transform instTransform = geomInstance.Transform;
}
foreach (Parameter item in familySymbolParameterList) //對上述遍歷結(jié)果進(jìn)行分類
{
FilteredElementCollector collectorFamily = new FilteredElementCollector(doc);
collectorFamily.OfClass(typeof(FamilyInstance));
//判斷是否為需要調(diào)整的鋼支撐結(jié)構(gòu)
if (item.Definition.Name == "說明" && item.AsString() == ("鋼支撐" + number1))
}
對判定為需要進(jìn)行不確定修正的實例進(jìn)行隨機(jī)化處理,并反饋回Revit實體模型中,實現(xiàn)對Revit模型的不確定修正:
//生成用于更新支撐高度的隨機(jī)數(shù),本例中采用正態(tài)分布
updata = Random_Normal(miu, sigma, min, max);//生成正態(tài)分布的隨機(jī)數(shù)
transaction.Start();
LocationPoint loct = familyInstance.Location as LocationPoint;
//獲取鋼支撐結(jié)構(gòu)的空間坐標(biāo)
double x = Convert.ToDouble(loct.Point.X.ToString());//獲取鋼支撐結(jié)構(gòu)中心點的x坐標(biāo)
double y = Convert.ToDouble(loct.Point.Y.ToString());//獲取鋼支撐結(jié)構(gòu)中心點的y坐標(biāo)
double z = Convert.ToDouble(loct.Point.Z.ToString());//獲取鋼支撐結(jié)構(gòu)中心點的z坐標(biāo)
//對支撐高度進(jìn)行更新,并反饋會模型中
double newz= z * (1 + updata); //根據(jù)生成的隨機(jī)數(shù)更新鋼支撐結(jié)構(gòu)中心點的z坐標(biāo),即支撐高度
XYZ newloct = new XYZ(x, y, newz); //將更新后的鋼支撐中心點坐標(biāo)賦予Revit實體中,實現(xiàn)Revit實體的位置變化
loct.Point = newloct;
transaction.Commit();
public double Normal(double x, double miu, double sigma) //正態(tài)分布概率密度函數(shù)
{
return 1.0 / (Math.Sqrt(2 * Math.PI) * sigma) * Math.Exp(-1 * (x-miu) * (x-miu) / (2 * sigma * sigma));
}
public double Random_Normal(double miu, double sigma, double min, double max) //產(chǎn)生正態(tài)分布隨機(jī)數(shù),其中miu為數(shù)學(xué)期望,sigma為標(biāo)準(zhǔn)差,min為該正態(tài)分布的下限,max為該正態(tài)分布的上限
{
double x;
double dScope;
double y;
do
{
x = AverageRandom(min, max);
y = Normal(x, miu, sigma);
dScope = AverageRandom(0, Normal(miu, miu, sigma));
} while (dScope > y);
return x;
}
對鋼支撐的支撐精度進(jìn)行正態(tài)分布的隨機(jī)化分布后生成的支護(hù)結(jié)構(gòu)如圖2所示。
圖2 考慮支護(hù)精度不確定性的支護(hù)結(jié)構(gòu)示意
之后重新遍歷實例中的幾何信息和類型參數(shù),代碼如下:
foreach (GeometryObject instobj in geomInstance.SymbolGeometry) //重新遍歷當(dāng)前視圖中所有實例
{
//提取實例中的幾何參數(shù),并形成ANSYS命令
Solid solid = instobj as Solid;
foreach (Face face in solid.Faces) //遍歷實例中所有平面
{
Mesh mesh = face.Triangulate();
foreach (XYZ ii in mesh.Vertices) //遍歷平面中所有關(guān)鍵點
{
XYZ point = ii;
XYZ transformedPoint = instTransform.OfPoint(point);
sb.Append(transformedPoint.X.ToString() + ",");
sb.Append(transformedPoint.Y.ToString() + ",");
sb.Append(transformedPoint.Z.ToString());
sb.Append(" ");
continue;//輸出遍歷得到的關(guān)鍵點坐標(biāo),并根據(jù)坐標(biāo)生成ANSYS命令流
}}
//讀取實例中的材料庫及類型屬性,提取其中的材料參數(shù),并形成FLAC3D命令流
foreach (Parameter item2 in familySymbolParameterList)//遍歷當(dāng)前視圖中所有實例的內(nèi)置參數(shù)
{
if (item2.Definition.Name == "體積模量")//遍歷到體積模量的參數(shù)
{
sb.Append("pro bulk " + item.AsValueString() + " range group " + materialnumber);
sb.Append(" ");//將遍歷得到的體積模量參數(shù)輸出成FLAC3D命令流
……
}}}
圖3為根據(jù)上述程序生成的隨機(jī)化FLAC3D模型部分示意圖,從圖中可以看出,原本位于同一高程的鋼支撐已經(jīng)進(jìn)行正態(tài)化重分布。
圖3 Revit模型隨機(jī)化處理后導(dǎo)入FLAC3D效果
基于武漢某地鐵車站深基坑開挖實例,針對鋼支撐高度這一施工精度的不確定性進(jìn)行了1000組隨機(jī)場模擬。表1為最大地表沉降和最大墻體側(cè)移的統(tǒng)計結(jié)果,其中最大地表沉降和最大墻體側(cè)移的最大值與平均值相差9.8%和7.6%??梢姡藶榈氖┕ふ`差會導(dǎo)致地表沉降和墻體側(cè)移的改變,不過兩者相應(yīng)的變異系數(shù)只有2.3%左右,支撐結(jié)構(gòu)的支撐豎向架設(shè)位置精度的不確定性對兩者影響不大。圖4,5為最大地表沉降和地連墻最大水平位移分布頻率及正態(tài)分布密度函數(shù)圖,兩者都基本符合正態(tài)分布,總體的變化范圍較小,最大值與最小值之間相差1~1.7 mm。
表1 隨機(jī)場下最大地表沉降和最大墻體側(cè)移數(shù)據(jù)統(tǒng)計
圖4 最大地表沉降分布頻數(shù)及正態(tài)分布密度函數(shù)
圖5 最大墻體側(cè)移分布頻數(shù)及正態(tài)分布密度函數(shù)
表2為最大墻體應(yīng)力和最大支撐軸力的統(tǒng)計結(jié)果。從表中數(shù)據(jù)可知支護(hù)結(jié)構(gòu)支撐高度對墻體應(yīng)力的影響較大,相差為400 kPa。支撐高度對最大支撐軸力有較大的影響,最大值比最小值增大69%,相應(yīng)的變異系數(shù)為7.88%。
表2 隨機(jī)場下墻體最大應(yīng)力和最大支撐軸力數(shù)據(jù)統(tǒng)計
圖6,7分別為地連墻最大應(yīng)力和最大支撐軸力分布頻數(shù)及正態(tài)分布密度函數(shù)圖。其中墻體應(yīng)力基本符合正態(tài)分布。最大支撐軸力的最小值為1897 kN,與正態(tài)分布的擬合度較差,呈現(xiàn)均值附近頻率密度大,兩邊逐漸減小的特點,可以看出豎向架設(shè)精度對支撐軸力的影響很大。
圖6 最大墻體應(yīng)力分布頻數(shù)及正態(tài)分布密度函數(shù)
圖7 最大支撐軸力分布頻數(shù)及正態(tài)分布密度函數(shù)
上述對于鋼支撐施工精度的計算結(jié)果得到的統(tǒng)計規(guī)律與文獻(xiàn)[10]一致,從而可以證實該算法程序能在修正不同不確定性因素后實現(xiàn)針對不確定性的計算分析。在考慮巖土材料空間變異性的同時,可針對施工精度的不確定性進(jìn)行快速建模和計算分析,大大提高計算的效率。
本文利用Revit API技術(shù),編寫C#語言程序讀取Revit實體模型,對相應(yīng)實體進(jìn)行隨機(jī)化處理并更新模型,通過接口程序?qū)evit模型導(dǎo)入到FLAC3D中進(jìn)行計算,實現(xiàn)了考慮施工不確定性的快速建模分析。
基于實際深基坑工程的鋼支撐施工不確定性算例驗證了算法程序更新后的正確性,能在考慮不確定性的同時,控制模型避免出現(xiàn)過多的偏差。該程序能幫助設(shè)計人員對不同施工精度進(jìn)行分類與建模,簡化了計算難度,提高了分析效率。
本文在分析支撐結(jié)構(gòu)高度的不確定性對基坑的影響時,發(fā)現(xiàn)其對地表沉降、墻體側(cè)移和墻體應(yīng)力的影響不大,基本符合正態(tài)分布,但對最大支撐軸力的影響較大,最大值約為最小值的1.7倍,因此實際工程中為避免支撐高度對安全性能產(chǎn)生過多影響,應(yīng)主要以控制支撐軸力為主,保證工程的安全性能。
本文僅以施工精度的不確定性為例進(jìn)行算法程序的驗證,仍有許多地方有待改進(jìn)。本文中所建立的Revit模型包含了施工中的所有構(gòu)件,建模耗時較長;同時,進(jìn)行隨機(jī)化建模后仍然需要單獨計算各類工況,暫時無法實現(xiàn)批量獲取計算結(jié)果。