顏書緯 杜新喜 程曉燕 林士凱 劉 武
(武漢大學土木建筑工程學院 湖北 武漢 430072)
隨著鋼結構在建筑工程領域的不斷創(chuàng)新,越來越多造型新穎的結構屋面出現(xiàn)了。風荷載作為主要控制荷載,在進行結構設計時必須著重考慮風荷載的作用?!督ㄖY構荷載規(guī)范》[1]對許多類型的屋面及建筑結構形式給出了風荷載的計算方法,一般的網架及網殼結構可根據(jù)規(guī)范計算出各節(jié)點的風荷載。但是對于一些較為復雜的結構無法通過規(guī)范現(xiàn)有公式計算得到,需要采用風洞試驗及數(shù)值模擬等方法分析考慮風荷載作用[2-4]。對于風洞試驗來說,風壓測點有限,無法測得結構所有節(jié)點處的風壓,需要對風壓分布結果進行處理。甘泉等[5]結合MATLAB與VB混合編程,可實現(xiàn)較短時間內對大量風洞試驗數(shù)據(jù)進行準確、有效的處理。但一般設計過程中,近似認為風壓測點處周圍節(jié)點的風壓數(shù)值與該測點一致,得到的節(jié)點風荷載與結構實際承受的風荷載有一定的差異,對風洞數(shù)據(jù)需要進行擬合處理[6-7]。樓文娟等[8]提出了大跨度屋面結構風壓分布的二維幾何平面擬合方法及公式,并進一步考慮了風向角提出三維擬合方法及公式。張慎等[9]采用混合編程技術,利用MATLAB三維插值算法擬合風壓的分布。但對于自由曲面網格結構,采用一般的插值算法難以得到平滑的風荷載擬合曲面。
本文基于自主開發(fā)的通用鋼結構設計軟件USSCAD,利用AutoCAD生成放樣曲面的相關函數(shù),直接在程序中讀入測點風壓,并根據(jù)測點風壓采用三次樣條插值或線性插值擬合得到結構所有節(jié)點的基本風壓,通過計算得到各節(jié)點的等效節(jié)點風荷載值。
通用鋼結構設計軟件USSCAD是基于ObjectARX技術,采用面向對象的C++程序設計語言對AutoCAD進行二次開發(fā)[10]。USSCAD的用戶界面采用MFC對話框程序,與AutoCAD應用程序兼容良好,人機互動靈活。在USSCAD中可對空間自由曲面結構進行參數(shù)化建模[11],增加風荷載擬合模塊,為處理自由曲面網格結構風荷載計算提供了途徑。
如圖1所示的對話框,用戶導入風荷載文件后,選擇合適的插值擬合算法即可實現(xiàn)風荷載擬合功能。
圖1 風荷載擬合對話框
生成擬合曲面的目的是供用戶對擬合結果進行檢查,以確保擬合結果跟預期相符,可用erase命令直接刪除。該功能流程如圖2所示。
圖2 風荷載擬合流程
1) 借助ObjectARX工具讀入結構模型的所有坐標節(jié)點和輸入的風壓文件。風壓文件中每個點包含兩個數(shù)據(jù),分別是結構模型對應測點的節(jié)點編號和基本風壓,風壓單位為kN/m2。
2) 利用插值算法,算出結構各個節(jié)點的基本風壓值。
3) 計算各節(jié)點的承載面積,得到等效節(jié)點風荷載。
程序提供兩種插值擬合方式,分別是三次樣條插值和線性插值[12-13]。采用風荷載樣條插值可以光滑地插值得到自由曲面網格各個節(jié)點的風壓,但其原理是將所有節(jié)點投影到XY坐標平面,在XY平面上生成放樣曲面與進行風壓的插值。對于雙曲線冷卻塔這類沿Z方向延伸的網格結構,節(jié)點投影到平面上時相互之間的距離比扭曲,無法采用樣條插值擬合方式,為解決這類網格結構的風洞試驗數(shù)據(jù)處理問題,提出了線性插值方法。
USSCAD參數(shù)化建模功能強大,根據(jù)用戶提供的控制曲面造型的幾何元素,包括邊界曲線、邊界點、中部控制線等,即可實現(xiàn)自由曲面網格建模[14]。放樣曲面的控制元素是經向曲線和緯向曲線。由于風荷載擬合時形成的曲面,在CAD圖紙空間中不存在經向曲線和緯向曲線,因而采用點構成樣條曲線,從而生成曲面。擬合曲面程序實現(xiàn)如下:
1) 讀入控制點坐標,每行的控制點形成曲面經線。將每條曲面經線的首尾控制點分別存儲在對象標識符容器。利用曲面經線的首尾點,形成兩條曲面緯線并存入對象標識符容器中。
2) 聲明AcDbLoftedSurface類(放樣曲面類)對象。根據(jù)給定的經向曲線與緯向曲線調用createLoftedSurface()函數(shù)形成空間放樣曲面。
3) 加厚曲面形成三維實體AcDb3dSolid,用getSubentPathsAtGsMarker()函數(shù)獲得子實體路徑。
4) 聲明AcBrFace類對象,調用set()函數(shù)指向子實體所代表的曲面。實體的第一個曲面就是用于擬合的曲面。
5) 調用getSurface()函數(shù)獲得實體相關的曲面對象。
對于自由曲面來說,風洞試驗得到的測點風荷載通過樣條差值擬合可以得到一個平滑的荷載曲面,通過荷載曲面可以得到自由曲面各點風荷載,且各點風荷載方向平滑轉變。
進行風荷載樣條插值的關鍵在于根據(jù)風洞試驗測得的測點風壓值,生成覆蓋整個結構的風壓擬合曲面,然后根據(jù)節(jié)點的X、Y坐標值獲取其風壓值。擬合曲面利用AutoCAD繪制放樣曲面的函數(shù)生成。程序進行風荷載樣條插值的關鍵代碼如下:
//賦予節(jié)點讀取的風壓
pNode->windPress();
//將第i行j個數(shù)據(jù)存入臨時數(shù)組
TemPt.z= windPress*1000;
temparNodePt[i].append(TemPt);
//生成經線
AcDbSpline *pPoline=new AcDbSpline(temparNodePt[i]);
//生成緯線
guidPtAr1.append(temparNodePt[i][0]);
AcDbSpline *pPoline=new AcDbSpline(guidPtAr1);
功能實現(xiàn)流程如圖3所示。
由于風壓值一般以kN/m2為單位,而結構的長度以mm為單位,因此在進行擬合時將風壓值放大1 000倍,待擬合完成后再縮小1 000倍恢復原樣,以消除舍入誤差?;谏傻臄M合曲面,由每個節(jié)點的X、Y坐標值可以確定各個節(jié)點的Z坐標值(即風壓值),乘上每個節(jié)點的承載面積得到等效節(jié)點風荷載,當風壓值為負(吸力)時,其方向為節(jié)點周邊輔助面[15]的法向的矢量和;風壓值為正(壓力)時,其方向為節(jié)點周邊輔助面平均法向的反向。為了使生成的擬合曲面能夠完全覆蓋整個結構,在布置風壓測點時,應包含邊界發(fā)生改變的位置。
對于沿Z方向延伸的網格結構的風洞試驗數(shù)據(jù)處理問題,采用線性插值實現(xiàn)。在進行線性插值之前,需確保Z坐標軸位于結構的內部,且結構的高度可以用Z坐標值表示。風荷載線性插值的方法和流程如下:
1) 求出每一個節(jié)點與Z坐標軸的垂線和X坐標軸之間的夾角θ,如圖4所示。
圖4 節(jié)點θ示意圖
2) 將風壓為零的節(jié)點存儲為無風壓節(jié)點集,風壓不為零的節(jié)點儲存為有風壓節(jié)點集,以夾角θ和Z坐標值來表示所有節(jié)點的坐標。對無風壓節(jié)點集中的所有節(jié)點進行循環(huán),將所有有風壓節(jié)點的坐標(θ和Z)減去該無風壓節(jié)點的坐標,得到各個有風壓節(jié)點的相對坐標。
3) 如圖5所示,根據(jù)各個有風壓節(jié)點的相對坐標,將其分成四個象限節(jié)點集。
圖5 節(jié)點象限示意圖
4) 求出各個象限中與該無風壓節(jié)點距離最近的有風壓節(jié)點,并且儲存其距離與該有風壓節(jié)點的風壓值。按式(1)至式(3)計算得到該無風壓節(jié)點的風壓值,并將該節(jié)點存入有風壓節(jié)點集中。
5) 由各節(jié)點的基本風壓值乘以節(jié)點承載面積,算出等效節(jié)點荷載。
(1)
d=d1+d2+d3+d4
(2)
(3)
式中:
w無風壓節(jié)點的風壓值(kN/m2);
wi第i象限距離最近的有風壓節(jié)點的風壓值(kN/m2);
di第i象限距離最近的有風壓節(jié)點與該無風壓節(jié)點的距離(mm)。
采用風荷載線性插值能夠實現(xiàn)對沿Z方向延伸的網格結構進行風荷載數(shù)據(jù)處理,擬合出節(jié)點的等效風壓,各點風荷載方向平滑轉變。
以某單層空間網殼為例,橫向網格數(shù)12,縱向網格數(shù)16,共有213個節(jié)點,選取如圖6所示的26個節(jié)點作為風壓測點,運用風荷載樣條插值生成光滑的風壓擬合曲面如圖7所示。
圖6 某單層網殼風壓測點分布
圖7 擬合曲面示意圖
如圖8所示,單層空間網殼上各點通過擬合曲面上對應點的Z值得到所有節(jié)點的等效風壓,再計算得到各節(jié)點荷載。且風荷載方向平滑轉變,無不合理的方向突變,擬合效果良好,如圖9所示。
圖8 某單層網殼風荷載分布示意圖(單位:kN)
圖9 風荷載作用方向示意圖(單位:kN)
本文針對自由曲面網格在通用鋼結構設計軟件USSCAD中的風荷載計算問題,提出一種基于風洞試驗數(shù)據(jù)的風荷載擬合算法。對沿XY方向上延伸的網格結構,提出樣條插值方法,生成風壓擬合曲面,從而通過擬合曲面計算得到所有節(jié)點的風壓值;對于沿Z軸方向上延伸的網格結構,采用線性插值算法,擬合得到所有節(jié)點的基本風壓。該算法得到各節(jié)點風荷載方向能夠平滑轉變,可有效得到合理的自由曲面網格結構整體風壓分布,完成結構設計。