黎 佳,陳元坤,陳曉強,陳禮杰,吳 雄,熊政超,朱愛珠
(1. 武漢城市鐵路建設(shè)投資開發(fā)有限責(zé)任公司,湖北 武漢 430071;2. 中南建筑設(shè)計院股份有限公司,湖北 武漢 430071;3. 華中科技大學(xué) 土木工程與力學(xué)學(xué)院,湖北 武漢 430074)
空間結(jié)構(gòu)在注重建筑美學(xué)效果及需要大跨度空間的公共建筑等領(lǐng)域具有明顯的優(yōu)勢,在國內(nèi)外得到了非常廣泛的應(yīng)用[1,2]。傳統(tǒng)空間結(jié)構(gòu)的建筑表面均為可用解析函數(shù)表達的平面或簡單規(guī)則曲面,但難以滿足人們對優(yōu)美建筑的追求。隨著計算機科學(xué)技術(shù)的進步、建筑施工工藝的發(fā)展和建筑審美的提高,尤其是進入21世紀(jì)以來,自由曲面結(jié)構(gòu)以其優(yōu)美的造型越來越多地出現(xiàn)在人們的視野當(dāng)中[3,4]。國內(nèi)外學(xué)者對自由曲面結(jié)構(gòu)進行了大量研究。Bletzinger等[5]將傳統(tǒng)的逆吊試驗與皂泡法結(jié)合,運用結(jié)構(gòu)優(yōu)化技術(shù)對曲面進行優(yōu)化,結(jié)果表明三者結(jié)合具有較好的應(yīng)用前景。高博青等[6]對自由曲面網(wǎng)格劃分進行了一系列研究:利用彈簧質(zhì)點法對自由曲面四邊形網(wǎng)格進行平面化處理,高度平面化四邊形網(wǎng)格有利于降低工程造價;通過邊界曲線分段并連線的辦法,生成適應(yīng)于不同邊界及不同曲率曲面的自適應(yīng)性網(wǎng)格[7];將復(fù)雜自由曲面離散為三角形面片,在面片上進行Delaunay三角剖分[8];并開發(fā)了自由曲面網(wǎng)格劃分專用軟件ZD-mesher[9]。李承銘等[10]編制智能化網(wǎng)格設(shè)計程序,并應(yīng)用于上海陽世博軸陽光谷設(shè)計,其自由曲面建筑的網(wǎng)格劃分中不僅要考慮建筑師對建筑網(wǎng)格的流暢性、均勻性等要求,也要考慮到網(wǎng)格作為承重骨架的力學(xué)性能要求。馮若強等[11]同時考慮了自由曲面索支撐空間網(wǎng)格結(jié)構(gòu)的力學(xué)、幾何、經(jīng)濟指標(biāo),進行多目標(biāo)優(yōu)化。
本文基于Rhino軟件及其參數(shù)化設(shè)計插件Grasshopper,實現(xiàn)切比雪夫網(wǎng)格在該平臺的應(yīng)用。
切比雪夫網(wǎng)格是一種自由曲面上等距化網(wǎng)格生成方法。由切比雪夫(Chebyshev)在1878年提出。切比雪夫網(wǎng)格最初被應(yīng)用于紡織業(yè),旨在具有高度不均勻性的織物曲面上布置具有平面特征的四邊形圖案[12]。后因其簡單、實用、高度均勻性、可控性等特點在自由曲面網(wǎng)格劃分領(lǐng)域得到較廣泛的應(yīng)用[13]。
切比雪夫網(wǎng)格(圖1)最突出特點為:
(1)網(wǎng)格等距化。切比雪夫網(wǎng)格中每個網(wǎng)格的邊長均等于預(yù)設(shè)網(wǎng)格邊長。
(2)網(wǎng)格方向可控。網(wǎng)格按從預(yù)定起點開始,沿著引導(dǎo)線生成。
(3)網(wǎng)格流暢、均勻。通過調(diào)整引導(dǎo)線和網(wǎng)格邊長,可以達到較好的網(wǎng)格流暢性和均勻性。
圖1 切比雪夫網(wǎng)格
平面切比雪夫網(wǎng)格生成的主要步驟概述如下:
(1)確定起點O和引導(dǎo)線U和V;
(2)根據(jù)預(yù)設(shè)的邊長Length為半徑,以點O為圓心,作圓過點1,2,3,4;
(3)以點2為圓心,作圓過點6和O,以點1為圓心,作圓過點5和O,由此可得兩個圓的交點7,易得L72=L71;
(4) 在引導(dǎo)線U,V上和新生成的交點上不斷重復(fù)步驟(3),可以生成平面切比雪夫網(wǎng)格,如圖 2所示[12]。
圖2 平面切比雪夫網(wǎng)格生成示意
在空間自由曲面上生成切比雪夫網(wǎng)格,需要用空間球代替前述步驟的平面圓進行求交,如圖3所示[14]。兩個空間球的交線為一個圓,該圓與自由曲面交于兩點P和P3,P3即為所求的交點。由空間球特性可知四邊形PP1P3P2每一邊長均等于球的半徑。
圖3 空間切比雪夫網(wǎng)格生成圖示
沿著引導(dǎo)線UO和VO,不斷在新的交點上作空間球并求交。由此可以得到自由曲面上切比雪夫網(wǎng)格。
根據(jù)上述兩節(jié)的算法,基于參數(shù)化設(shè)計插件Grasshoppper進行了C#二次開發(fā)。如圖4,其主要輸入?yún)?shù)為:(1)曲面S;(2)開始點P,其默認(rèn)值為曲面參數(shù)域中點;(3)預(yù)設(shè)長度L,其默認(rèn)值為3000 mm;(4)網(wǎng)格x軸與曲面參數(shù)域u方向的夾角R1,其默認(rèn)值為45°;(5)網(wǎng)格x,y軸間夾角R2,其默認(rèn)值為90°??梢酝ㄟ^調(diào)節(jié)主要參數(shù)來控制網(wǎng)格形狀及長度,達到參數(shù)化設(shè)計的目的。
圖4 輸入?yún)?shù)
如圖5,前述方法生成的切比雪夫網(wǎng)格在曲面邊界附近存在空缺,其主要原因為在求交過程中交點超出原曲面范圍。為適應(yīng)更多曲面類型及邊界形式,下文將介紹自動識別邊界并將曲面延伸,在延伸后的曲面上生成切比雪夫網(wǎng)格,最后利用邊界曲線進行裁剪的算法。
圖5 邊界空缺
首先利用Grasshopper自帶Python函數(shù)DuplicateSurfaceBorder提取曲面S的邊界線B,然后用Extend命令將曲面S沿邊界線B向外延伸一定距離,最后使用上文中的切比雪夫組件在延伸后曲面上進行網(wǎng)格劃分,如圖6所示。
圖6 延伸后曲面及邊界
在曲面邊界處由于曲面曲率較大,延伸后的網(wǎng)格并不會與邊界線B相交。如圖7,紅色部分代表延伸部分曲面,在延伸部分曲面的切比雪夫網(wǎng)格不會與原邊界線B相交。要對網(wǎng)格進行裁剪則必須求出切比雪夫網(wǎng)格與邊界線B的交點。本文提供兩種算法進行邊界裁剪。
圖7 邊界裁剪二維平面示意
算法一:使用Grasshopper插件中Project命令,把所有網(wǎng)格邊投影到曲面S上,并與邊界線B進行求交運算。此算法的基本步驟為空間曲線對空間NURBS曲面的投影以及空間曲線的求交。此算法要求對網(wǎng)格的每條邊均進行投影及曲線求交運算,對于大曲率復(fù)雜曲面及網(wǎng)格桿件數(shù)較多的自由曲面網(wǎng)格結(jié)構(gòu),單次及整體運行效率較低,難以滿足實際參數(shù)化設(shè)計要求。
算法二:將空間切比雪夫網(wǎng)格的節(jié)點投影到二維參數(shù)域,在二維平面內(nèi)找到邊界B外的網(wǎng)格節(jié)點,并將該節(jié)點對應(yīng)網(wǎng)格邊與邊界B的交點投影回空間曲面,得到裁剪后的網(wǎng)格。該算法具體步驟如下:
(1)將網(wǎng)格節(jié)點投影到延伸后曲面的二維參數(shù)域,得到二維參數(shù)域點陣{Pi}。
(2)將曲面邊界B對應(yīng)的二維曲線離散為平面多邊形。如圖8,部分比較復(fù)雜的曲面具有兩條及以上的曲面邊界,此時需考慮所有曲面邊界,邊界可分為多條內(nèi)邊界與一條外邊界。二維曲線離散為平面多邊形時的離散點數(shù)應(yīng)根據(jù)離散點的空間距離劃分??砂措x散點的空間距離為空間切比雪夫網(wǎng)格的邊長L控制,進行二維邊界曲線的離散。此法可保證后續(xù)算法簡潔高效運行。
圖8 具有多條邊界的建筑曲面
(3)對點陣{Pi}的每個二維點進行多邊形包含判斷。使用經(jīng)典的象限環(huán)顧法判斷二維點是否包含在多邊形內(nèi)。對于每個二維點,若其包含在外邊界離散的多邊形內(nèi),且不被任意一個內(nèi)邊界離散的多邊形包含,即標(biāo)識為內(nèi)部節(jié)點;否則該節(jié)點為外部節(jié)點。
(4)標(biāo)識邊界桿件。網(wǎng)格中存在三類桿件,如表 1所示。
表1 桿件分類
(5)處理桿件。根據(jù)(4)中的桿件分類,刪除外部桿件,保留內(nèi)部桿件。將邊界桿件與二維邊界曲線的交點投影回空間曲面,代替被刪除的外部節(jié)點。
經(jīng)過(1)~(5)的步驟,即可得到裁剪完成的空間切比雪夫網(wǎng)格。該算法的底層步驟為空間點的投影、平面點的多邊形包含判斷及二維邊界桿件的求交運算。相較于算法一的空間曲線投影,該算法僅對空間點投影。在二維平面內(nèi)進行少量的直線-曲線求交運算后,將交點投影回空間曲面(該步驟為NURBS的正向計算,計算所需時間可忽略不計)。整個過程相較于算法一效率較高,能夠節(jié)約大量的計算資源和縮短計算時間。但算法二實現(xiàn)難度比算法一高。
采用邊界裁剪算法可以使空間切比雪夫網(wǎng)格適應(yīng)多種曲面形態(tài)及邊界條件,網(wǎng)格整體流暢均勻。內(nèi)部桿件的長度高度一致,但可以看到,在曲面邊界處,有大量桿件長度不一致。由于曲面邊界的隨機性,很難通過調(diào)整第一節(jié)中的輸入?yún)?shù)來控制曲面邊界附近桿件長度。本節(jié)將結(jié)合彈簧質(zhì)點法討論邊界附近桿件桿長優(yōu)化算法。彈簧質(zhì)點法[6]基本思想為將網(wǎng)格桿件等效為具有原長和彈簧剛度的彈簧,將網(wǎng)格節(jié)點等效為理想質(zhì)點,對等效后的彈簧質(zhì)點系統(tǒng)進行迭代優(yōu)化。該方法對于四邊形網(wǎng)格的桿長和流暢性均有明顯提升,即彈簧質(zhì)點系統(tǒng)中,彈簧傾向于恢復(fù)到其預(yù)定原長,而同屬于一個質(zhì)點的彈簧傾向于恢復(fù)到一條直線。使用彈簧質(zhì)點法進行桿長優(yōu)化,其關(guān)鍵在于如何確定桿件原長及彈簧剛度。本文提出桿件分組的辦法確定桿件原長,然后根據(jù)桿件原長與桿件實際長度的差值確定桿件彈簧剛度。
對于一組桿件長度向量{l},定義其長度變化比為:
(1)
對于進行邊界裁剪后的桿件長度向量{l}進行分組,首先需要確定長度變化比限值Rl。該值可根據(jù)需要取值為3%到15%。Rl越大,分組數(shù)越少,桿件變化率越大;Rl越小,分組數(shù)越多,桿件變化率越小。
分組策略:從最大的一個桿件開始,逐步向下搜索桿件,并計算均值和最大長度變化比。當(dāng)長度變化比R大于限值Rl時,視為一組。從下一個桿件開始,重新搜尋,直到遍歷所有桿件嗎,得到多組桿件。
經(jīng)過分組后,將各組的均值取為該組內(nèi)每根桿件的原長。此方法可保證每一組的桿件均向原長優(yōu)化,且最大桿長變化率不超過Rl,保證了切比雪夫網(wǎng)格經(jīng)過桿長優(yōu)化后不會偏離以前的幾何形狀太多。
不同的彈簧剛度決定了桿件之間恢復(fù)到原長的恢復(fù)力大小。相對于彈簧剛度小的桿件,彈簧剛度較大的桿件更能夠恢復(fù)到原長,并將其長度保持在原長附近。因此如何確定桿件的彈簧剛度是一個關(guān)鍵問題,本文采用對數(shù)方法確定桿件彈簧剛度:
ΔLi=|li-ReLi|
(2)
(3)
式中:ReLi為3.1方法確定的每根桿件的原長;ΔLi為桿件長與原長的絕對差值;Sti和Stbench分別為桿件彈簧剛度和彈簧剛度基數(shù);a和b為參數(shù)。式(3)中,Stbench,a,b可以根據(jù)情況確定。一般情況下a需取小于1的值,這樣保證與原長接近的桿件剛度相對較大。若a取大于1的值,則與原長差距較大的桿件剛度較大,接近原長的桿件剛度較小,與桿長優(yōu)化目標(biāo)相違。
確定了桿件長度和桿件彈簧剛度后,利用Grasshopper中的Springs組件,將裁剪后的切比雪夫網(wǎng)格等效為彈簧質(zhì)點系統(tǒng)。
利用Grasshopper平臺中的Kangaroo組件,進行迭代優(yōu)化。優(yōu)化過程中還需用CurvePull組件和PullToSurf組件,將邊界上的網(wǎng)格點和曲面上的網(wǎng)格點約束在邊界和曲面上。
圖9為利用本文介紹算法生成的切比雪夫及桿長優(yōu)化后的網(wǎng)格,曲面外輪廓尺寸85.1 m×61.1 m。
圖9 算例一曲面及切比雪夫網(wǎng)格
在切比雪夫網(wǎng)格的劃分過程中,各參數(shù)均取默認(rèn)值。
在桿長優(yōu)化中,Rl,a,b,Stbench分別取為10%,0.1,0.03,50,桿件數(shù)量為1266。經(jīng)過桿長優(yōu)化后,桿件種類由原來的121種大幅下降為43種??梢钥吹綏U長優(yōu)化后的切比雪夫網(wǎng)格仍然能在邊界處保持其均勻流暢的特點。
整個劃分包括桿長優(yōu)化過程僅需7.9 s(64位Windows 7系統(tǒng),英特爾i7-6700 CPU,3.40 GHz,24.0 GB內(nèi)存)。
如圖10,該網(wǎng)格劃分過程中所有參數(shù)取值與算例一相同。曲面外輪廓尺寸97.1 m×73.3 m,桿件數(shù)量為1503。經(jīng)過桿長優(yōu)化后,桿件種類從189種大幅下降為36種。體現(xiàn)了桿長優(yōu)化的有效性。
圖10 算例二曲面及切比雪夫網(wǎng)格
整個劃分包括桿長優(yōu)化過程所需時間為120.1 s(64位Windows 7系統(tǒng),英特爾i7-6700 CPU,3.40 GHz,24.0 GB內(nèi)存)。
本文采用Rhino軟件及其參數(shù)化設(shè)計插件Grasshopper,實現(xiàn)參數(shù)化劃分自由曲面切比雪夫網(wǎng)格。由于自由曲面網(wǎng)格結(jié)構(gòu)有曲面邊界的特點,利用邊界剪裁算法能使空間切比雪夫網(wǎng)格適應(yīng)多種曲面形態(tài)及邊界條件。但曲面邊界處,有大量桿件長度不一致。針對此問題,本文利用彈簧質(zhì)點法研究邊界附近桿長優(yōu)化算法。該方法能夠在切比雪夫內(nèi)部網(wǎng)格可控、均勻、流暢性的基礎(chǔ)上盡可能減少桿長分組,能方便切比雪夫網(wǎng)格的結(jié)構(gòu)設(shè)計與施工,同時使得網(wǎng)格布置更美觀。