史 航, 高 閣, 謝 軍, 郭煜晨, 王 濤, 劉震宇*
(1.中國科學(xué)院 長春光學(xué)精密機(jī)械與物理研究所,長春130033;2.中國科學(xué)院大學(xué) 材料科學(xué)與光電技術(shù)學(xué)院,北京100039)
拓?fù)鋬?yōu)化是現(xiàn)代工程中一個(gè)重要發(fā)展領(lǐng)域,可以分為連續(xù)體拓?fù)鋬?yōu)化和離散體拓?fù)鋬?yōu)化,其中連續(xù)體拓?fù)鋬?yōu)化主要研究二維板殼和三維實(shí)體等結(jié)構(gòu)內(nèi)有無孔洞、孔洞的數(shù)量、位置及形狀;離散體拓?fù)鋬?yōu)化大多數(shù)情況是指桁架拓?fù)鋬?yōu)化,主要研究桁架和剛架等結(jié)構(gòu)中桿件的有無及其相互連接方式。在桁架拓?fù)鋬?yōu)化領(lǐng)域,最主要的一種實(shí)現(xiàn)方法是基結(jié)構(gòu)法。即在特定設(shè)計(jì)區(qū)域內(nèi)生成滿連接結(jié)構(gòu),并且默認(rèn)最優(yōu)解就在其中,再通過優(yōu)化算法找到最終的最優(yōu)組合[1-3]?;Y(jié)構(gòu)法是由 Dorn等[4]在20世紀(jì)中期提出,之后廣泛地應(yīng)用于桁架的拓?fù)鋬?yōu)化問題。運(yùn)用基結(jié)構(gòu)法求解桁架拓?fù)鋬?yōu)化問題的初始步驟是在定義的設(shè)計(jì)區(qū)域中生成初始基結(jié)構(gòu),所獲得的最優(yōu)解由初始基結(jié)構(gòu)中節(jié)點(diǎn)的位置和節(jié)點(diǎn)之間的連接(桿件)決定。對于理論中常出現(xiàn)的規(guī)則設(shè)計(jì)區(qū)域,生成滿連接基結(jié)構(gòu)較易實(shí)現(xiàn),可是在實(shí)際工程中經(jīng)常會出現(xiàn)一些涉及不規(guī)則設(shè)計(jì)區(qū)域(凹區(qū)域和孔洞)的問題,就要避免在凹區(qū)域或孔洞內(nèi)部生成桿件。關(guān)于基結(jié)構(gòu)的生成方法有很多種,通過有限元網(wǎng)格與計(jì)算機(jī)輔助設(shè)計(jì)軟件的結(jié)合使用,Simth[5]提出了一個(gè)可以在非凸設(shè)計(jì)區(qū)域生成基結(jié)構(gòu)的交互系統(tǒng),可以對復(fù)雜非規(guī)則形狀的設(shè)計(jì)域高效構(gòu)建基結(jié)構(gòu)。Zhang[6]利用正方形網(wǎng)格和維諾圖(Voronoi)網(wǎng)格的微元法生成基結(jié)構(gòu),這種方法可以大量避免重復(fù)桿件的生成,并且可以針對凹區(qū)域和孔洞生成基結(jié)構(gòu)。在已生成的初始基結(jié)構(gòu)中,根據(jù)Hagishita等[7]提出的五條規(guī)則對可能存在的桿件進(jìn)行判別,從而通過刪減桿件獲得最終基結(jié)構(gòu)的生長式基結(jié)構(gòu)法。Zegard等[8]提出了利用分級生成基結(jié)構(gòu)和設(shè)置限制區(qū)域的方法在任意二維設(shè)計(jì)區(qū)域生成最終的基結(jié)構(gòu),并提供了MATLAB程序。該方法對單元網(wǎng)格依賴比較小,且可以在全局范圍內(nèi)生成基結(jié)構(gòu),是目前應(yīng)用最為廣泛的一種方法。Gao等[9]發(fā)現(xiàn)如果通過應(yīng)力跡線法生成節(jié)點(diǎn),即將節(jié)點(diǎn)都設(shè)置在設(shè)計(jì)區(qū)域內(nèi)的應(yīng)力跡線交點(diǎn)上,可以很大程度上減少無用桿件的數(shù)量,從而提高整體的運(yùn)算效率。
基結(jié)構(gòu)的生成主要分為兩步,即先生成節(jié)點(diǎn),然后將所有節(jié)點(diǎn)相互連接生成基結(jié)構(gòu)。這使得滿連接基結(jié)構(gòu)在不規(guī)則設(shè)計(jì)區(qū)域外也會存在桿件。目前,刪除多余桿件的方法是受到碰撞檢驗(yàn)算法的啟發(fā)而得到的[10],即將原有幾何邊界拓展形成拓展邊界,進(jìn)而對存在于區(qū)域外的桿件與拓展邊界進(jìn)行碰撞檢測,將多余桿件刪除。這種方法存在以下兩個(gè)方面的問題。一是在原幾何模型的基礎(chǔ)上建立新幾何模型,即要建立兩次模型,使前期工作過于繁復(fù);二是偏置區(qū)域的大小直接影響檢測凹邊界外桿件的精度,隨著偏置程度大小的變化,檢測到的凹邊界外桿件的數(shù)量也隨之改變。尤其在凹邊界是曲線的情況下,由于在進(jìn)行判斷檢測的過程中是利用線段近似逼近曲線,存在幾何誤差,因此不可避免地對最終基結(jié)構(gòu)的桿件數(shù)目造成影響。
本文提出一種無需構(gòu)建擴(kuò)展邊界模型,而是利用已有幾何邊界進(jìn)行識別并刪除多余桿件的方法。由于滿基結(jié)構(gòu)中桿件眾多,所以通過分區(qū)域生成基結(jié)構(gòu),找出存在于設(shè)計(jì)區(qū)域內(nèi)無需進(jìn)行判斷的桿件,從而使需要判斷的桿件大幅度減少;再根據(jù)凹邊界的幾何信息確定刪除桿件的準(zhǔn)則,最終得到符合要求的基結(jié)構(gòu)。本文的主要目的是研究基結(jié)構(gòu)的生成方法,并對三種不同情況下拓?fù)浣Y(jié)構(gòu)的二維算例以及一個(gè)三維算例進(jìn)行實(shí)現(xiàn)。為了簡化問題,所有算例采用的數(shù)據(jù)都是單位1。
首先定義文中出現(xiàn)的一些概念,以二維問題為例,如圖1所示。
本文提出的基結(jié)構(gòu)生成方法依賴于設(shè)計(jì)區(qū)域的幾何邊界以及網(wǎng)格劃分。采用有限元商業(yè)軟件COMSOL進(jìn)行幾何建模并劃分有限元網(wǎng)格,其中節(jié)點(diǎn)信息、邊界信息和單元信息可以定義邊界和節(jié)點(diǎn)的連接方式,將生成和刪除桿件的過程轉(zhuǎn)換為線性代數(shù)的操作,為后續(xù)基結(jié)構(gòu)的生成提供便利。
生成非凸區(qū)域基結(jié)構(gòu)需要先利用節(jié)點(diǎn)生成滿連接基結(jié)構(gòu),在此基礎(chǔ)上剔除位于設(shè)計(jì)區(qū)域外部的桿件,快速生成滿連接基結(jié)構(gòu)并且快速準(zhǔn)確地識別這些需要剔除的桿件是基結(jié)構(gòu)生成算法的核心內(nèi)容。用一個(gè)L型非凸設(shè)計(jì)區(qū)域簡要說明實(shí)現(xiàn)過程。
2.2.1 逐級生成滿連接基結(jié)構(gòu)
圖1 二維非凸設(shè)計(jì)區(qū)域Fig.1 2Dnon-convex design domain
圖2 為生成基結(jié)構(gòu)步驟。首先將非凸設(shè)計(jì)區(qū)域劃分為兩個(gè)子區(qū)域,然后劃分有限元網(wǎng)格,最后在此基礎(chǔ)上建立滿基結(jié)構(gòu)。受GRAND方法[8]的啟發(fā),利用桿件連接等級的概念逐級建立桿件,如果兩個(gè)節(jié)點(diǎn)屬于同一單元,則稱其是相鄰的,兩者連接成一級桿Lv1,如1節(jié)點(diǎn)和6節(jié)點(diǎn)相鄰,bars16等級為Lv1;如果兩個(gè)節(jié)點(diǎn)屬于相鄰的兩個(gè)單元,則稱其是相鄰單元的相鄰節(jié)點(diǎn),如1節(jié)點(diǎn)和8節(jié)點(diǎn),bar18等級為Lv2;以此類推,逐級形成基結(jié)構(gòu)。在高等級的新生桿件中會包含重疊桿件,如bar58和bar25;且隨著等級的升高,桿件的長度也逐漸變長,基結(jié)構(gòu)法傾向于保留短桿,所以通過判斷夾角余弦值的方法即共線檢查方法來移除重疊長桿,為優(yōu)化過程采用高效率算法提供了便利。
2.2.2 利用圖形碰撞檢測技術(shù)刪除桿件
顯而易見,bar37、bar27和bar38是設(shè)計(jì)區(qū)域外的桿件,一種情況是與凹邊界edge47和edge34相交的bar27和bar38,另一種情況是兩個(gè)端點(diǎn)都位于凹邊界上的bar37,在此將一條線段端點(diǎn)落在另一條線段上這種情況視為不相交。延軸向包圍盒是各個(gè)邊(面)的法向與給定坐標(biāo)軸平行的特殊長方形(體)[11]。以長方形為例,常見的一種方式是通過定義對角線的兩個(gè)極值端點(diǎn)來定義包圍區(qū)域,如圖3所示,以線段AB為對角線建立的矩形區(qū)域即為線段AB的包圍盒。
對于第一種情況的桿件1,需要采用圖形碰撞檢測技術(shù)來進(jìn)行識別,桿件和邊界都視為線段,即判斷線段與線段是否相交[11]。判斷平面上兩條線段AB和CD是否相交,可以先判斷線段所在直線的交點(diǎn)是否在它們包圍盒的內(nèi)部。選取定義對角線的兩個(gè)極值端點(diǎn)如圖3所示,其交點(diǎn)可以通過以下方式計(jì)算。設(shè)AB 為L1(t)=A+t(B-A);設(shè)CD為n·(X-C)=0;其中n=(D-C)⊥垂直于CD。通過聯(lián)立上述方程可得t,而交點(diǎn)P=L1(t)可以通過將t代入線段方程求得。判斷P點(diǎn)是否在包圍盒內(nèi)只需判斷0≤t≤1是否成立。判斷AB和CD是否相交的準(zhǔn)則是當(dāng)P點(diǎn)位于其中一個(gè)包圍盒外,則線段AB和CD 不相交,如圖3(a)所示;當(dāng)P點(diǎn)同時(shí)在AB和CD各自包圍盒的內(nèi)部,則AB和CD 是相交的,如圖3(b)所示。通過上述方法即可將與凹邊界相交的桿件移除。此外,兩個(gè)端點(diǎn)都在凹邊界上的桿件必定都在設(shè)計(jì)區(qū)域外,通過凹邊界edge47和edge34上的節(jié)點(diǎn)序號,可以直接將bar37移除。不規(guī)則設(shè)計(jì)區(qū)域中如果形成孔洞,則需定義孔洞邊界,與定義凹邊界的方法相同。
圖2 基于幾何和網(wǎng)格生成滿連接基結(jié)構(gòu)Fig.2 Full level ground structure generation based on geometry and mesh
2.2.3 利用分區(qū)域生成基結(jié)構(gòu)提升效率
當(dāng)不規(guī)則設(shè)計(jì)區(qū)域的凹邊界不包含曲線時(shí),可以將其分割成若干個(gè)凸的子區(qū)域,以圖2所示區(qū)域和網(wǎng)格都已劃分的L型設(shè)計(jì)區(qū)域?yàn)槔襟E如圖4所示。在進(jìn)行桿件與邊界的相交判斷時(shí),把子區(qū)域基結(jié)構(gòu)從滿連接基結(jié)構(gòu)的桿件中暫時(shí)移除,會得到跨子區(qū)域節(jié)點(diǎn)間的桿件,其中包含了所有的區(qū)域外桿件。在此例中,最后只留有5個(gè)桿件,如圖4步驟(3),在很大程度上減少了與邊界判斷相交的桿件個(gè)數(shù),從而提升了效率。區(qū)域外桿件刪除后得到的結(jié)果如圖4步驟(5),再將子區(qū)域的基結(jié)構(gòu)與留下的桿件集合,得到最終的基結(jié)構(gòu),如圖4步驟(6)所示。
圖3 線段AB和CD不相交和相交兩種情況Fig.3 Two cases of un-intersection and intersection of line ABand CD
圖4 分區(qū)域生成基結(jié)構(gòu)Fig.4 Generate ground structure of subdomains
2.2.4 子區(qū)域的劃分
對已知設(shè)計(jì)區(qū)域劃分是本方法的第一步。對于實(shí)際問題中的一些特殊設(shè)計(jì)區(qū)域,針對各部分區(qū)域的特點(diǎn),生成不同的有限單元網(wǎng)格。在凹邊界沒有曲線存在的情況下,可直接根據(jù)凹邊界的性質(zhì)將整個(gè)區(qū)域劃分為最少數(shù)目的子區(qū)域,并保證子區(qū)域都是凸區(qū)域。而當(dāng)凹邊界中有曲線存在,則劃分而成的子區(qū)域不可能全是凸區(qū)域,如果曲線邊界由線段近似描述,在此基礎(chǔ)上要劃分較多的子區(qū)域才能保證皆為凸區(qū)域,增加了難度和復(fù)雜性。所以在此允許子凹區(qū)域的存在,并對其內(nèi)部桿件增加一步判別和刪除。以經(jīng)典Michell梁問題中的不規(guī)則設(shè)計(jì)區(qū)域?yàn)槔唧w實(shí)現(xiàn)步驟如圖5所示。
首先劃分兩個(gè)子區(qū)域,如圖5步驟(1)所示,粗實(shí)線是分割線,細(xì)實(shí)線是網(wǎng)格單元,左側(cè)子區(qū)域?yàn)榘紖^(qū)域,右側(cè)子區(qū)域?yàn)橥箙^(qū)域。圖5步驟(2)為全局滿連接基結(jié)構(gòu),桿件個(gè)數(shù)N_all=466,可以拆分為圖5步驟(3)和步驟(4)所示的兩個(gè)桿件集合,分別是各個(gè)子區(qū)域滿連接基結(jié)構(gòu)和跨子區(qū)域節(jié)點(diǎn)間的所有桿件。先得到各子區(qū)域基結(jié)構(gòu)的集合,桿件個(gè)數(shù)分別為N_sub1=122和N_sub2=131,再將前者從滿連接基結(jié)構(gòu)中移除得到跨子區(qū)域節(jié)點(diǎn)間的所有桿件,桿件個(gè)數(shù)N_left=213。接下來僅對包含凹邊界子區(qū)域的桿件(N_sub1)和剩余桿件(N_left)進(jìn)行判別,即可將區(qū)域外的桿件移除,分別得到桿件如圖5步驟(5)和步驟(6)所示,將兩者合并得到了最終基結(jié)構(gòu)如圖5步驟(7)所示,所有桿件N_final=415都在設(shè)計(jì)區(qū)域內(nèi),符合要求。由于分區(qū)域的設(shè)定,其中子凸區(qū)域中的所有桿件(N_sub2)不必參與判斷的過程,在一定程度上提升了效率。
圖5 分區(qū)域生成基結(jié)構(gòu)(包含曲線凹邊界)Fig.5 Ground structure of subdomains(with curve concave boundary)
2.2.5 二維問題基結(jié)構(gòu)生成算例
圖6給出了三種不同的設(shè)計(jì)區(qū)域,分別如圖6所示方式劃分子區(qū)域并構(gòu)建網(wǎng)格。圖6(a)是將L型設(shè)計(jì)區(qū)域的網(wǎng)格稍作細(xì)分;圖6(b)是環(huán)形孔洞設(shè)計(jì)區(qū)域,具有不同的拓?fù)湫问剑粓D6(c)是存在兩個(gè)曲線凹邊界形狀較為復(fù)雜的設(shè)計(jì)區(qū)域??梢钥闯觯N情況均在滿連接基結(jié)構(gòu)的基礎(chǔ)上得到符合要求的基結(jié)構(gòu)。
三維問題基結(jié)構(gòu)的生成是二維基結(jié)構(gòu)生成方法的延伸,不僅要提取節(jié)點(diǎn)、邊界線段及平面單元,還要提取邊界平面及立體單元的信息,其判斷準(zhǔn)則更為復(fù)雜,在此不詳細(xì)敘述,提供三維L型算例以供參考。如圖7所示,劃分子區(qū)域且加深平面為凹邊界平面,經(jīng)過網(wǎng)格劃分如圖7(b)所示,生成滿連接基結(jié)構(gòu)如圖7(c)所示,最后刪除區(qū)域外部桿件,可以得到最終符合要求的基結(jié)構(gòu),如圖7(d)所示。
圖6 不同設(shè)計(jì)區(qū)域基結(jié)構(gòu)的生成Fig.6 Ground structure generation of different 2Ddomains
在單工況應(yīng)力約束下,以最小體積為目標(biāo),以桿件橫截面積為設(shè)計(jì)變量的桁架拓?fù)鋬?yōu)化問題可表述為[12]
式中ve和fe分別為第e根桿件的體積和軸向載荷,M是桿件總數(shù),F(xiàn)(N×1)為節(jié)點(diǎn)力向量,其中N為節(jié)點(diǎn)自由度。B(M×N)為柔度矩陣,其中第i行元素為 [1,…,-Ca(xi),-Ca(yi),0,…,Cb(xi),Cb(yi),0,…]T。其中Cx和Cy分別為第i根桿從起點(diǎn)a到終點(diǎn)b的x和y方向上的余弦角。對于一個(gè)穩(wěn)定的基結(jié)構(gòu),B具有滿秩N(N≤m)和分別為拉壓應(yīng)力極限。
圖7 三維問題基結(jié)構(gòu)的生成Fig.7 Ground structure generation of 3Ddomain
為了滿足滿應(yīng)力設(shè)計(jì)準(zhǔn)則,將體積和載荷的表達(dá)式做如下的改動,
所以優(yōu)化問題的公式可以轉(zhuǎn)換成標(biāo)準(zhǔn)的線性規(guī)劃問題:
式中f+e和fe可分別視為第e根桿件的拉應(yīng)力和壓應(yīng)力,至少一者為0,設(shè)計(jì)變量只有軸向載荷。如果fe=0,f+e>0,則軸向載荷為拉;如果fe>0,f+e=0,則軸向載荷為壓;當(dāng)fe=0,f+e=0時(shí),認(rèn)為該桿件可以從基結(jié)構(gòu)中刪除。對線性規(guī)劃問題,利用內(nèi)點(diǎn)法可以很容易得到最優(yōu)解。
以經(jīng)典Michell梁的桁架拓?fù)鋬?yōu)化算例為參考。以圖8(a)所示方式劃分子區(qū)域并構(gòu)建網(wǎng)格,黑色粗線為子區(qū)域界線,灰色細(xì)線為網(wǎng)格單元,共包含三角形單元Nt=374和四邊形單元Nq=324(18×18),灰點(diǎn)表示約束施加點(diǎn),箭頭表示外加載荷。將橫截面積截?cái)嘀翟O(shè)置為cutoff=0.018,在優(yōu)化過程中用于約束桿件的橫截面積,過濾掉過細(xì)的桿件,后續(xù)的算例中也會采用此截?cái)嘀?,可以有效地濾掉細(xì)桿又不影響最終的拓?fù)鋬?yōu)化結(jié)果。其對應(yīng)得到的優(yōu)化結(jié)果如圖8(b)所示。優(yōu)化目標(biāo)值為單位體積V=4.367,迭代步數(shù)為Iter=85。圖9為 Michell梁理論的最優(yōu)解[14,15]。
圖8 經(jīng)典Michell梁問題的基結(jié)構(gòu)法拓?fù)鋬?yōu)化結(jié)果Fig.8 Optimum topology from a ground structure implementation of Michell beam
同理,分別對環(huán)形(孔洞)算例、二維L型梁算例及三維L型梁算例進(jìn)行優(yōu)化,劃分網(wǎng)格數(shù)分別為Nq=144,Nq=48及Nq=192。其對應(yīng)得到的優(yōu)化結(jié)果(橫截面積截?cái)嘀礳utoff=0.018)分別如圖10(b)、圖11(b)及圖12(b)所示。
圖10算例網(wǎng)格數(shù)為Nq=144,優(yōu)化目標(biāo)值V=34.71,迭代步數(shù)Iter=16。
圖11算例網(wǎng)格數(shù)為Nq=48,優(yōu)化目標(biāo)值V=9,迭代步數(shù)Iter=11。
圖9 經(jīng)典Michell梁問題的理論最優(yōu)結(jié)果Fig.9 Theoretical optimal solution of Michell beam
圖10 環(huán)形(孔洞)問題的基結(jié)構(gòu)法拓?fù)鋬?yōu)化結(jié)果Fig.10 Optimum topology from a ground structure implementation of ring(hole)domain
圖11 二維L型梁問題的基結(jié)構(gòu)法拓?fù)鋬?yōu)化結(jié)果Fig.11 Optimum topology from a ground structure implementation of 2DL-type beam
圖12算例網(wǎng)格數(shù)為Nq=192,優(yōu)化目標(biāo)值V=9.59,迭代步數(shù)Iter=19。
圖12 三維L型梁問題的基結(jié)構(gòu)法拓?fù)鋬?yōu)化結(jié)果Fig.12 Optimum topology from a ground structureimplementation of 3DL-type beam
本文對在不規(guī)則設(shè)計(jì)區(qū)域內(nèi)生成基結(jié)構(gòu)的方法進(jìn)行了探索和討論。主要思想是在原始幾何和網(wǎng)格基礎(chǔ)上利用分區(qū)域生成基結(jié)構(gòu)的方法,在非凸設(shè)計(jì)區(qū)域內(nèi)迅速并準(zhǔn)確地生成基結(jié)構(gòu)。以非凸設(shè)計(jì)區(qū)域的凹邊界為判斷邊界,可以快速準(zhǔn)確地將位于設(shè)計(jì)區(qū)域外的桿件識別并刪除。與傳統(tǒng)的設(shè)置限制區(qū)域或者偏置區(qū)域的方法相比,避免二次建模,大大簡化前處理過程,且避免受到限制區(qū)域(偏置區(qū)域)大小的限制,從而提高了所形成基結(jié)構(gòu)的準(zhǔn)確性。滿足上述條件的最終基結(jié)構(gòu)可以直接用于后續(xù)桁架的拓?fù)鋬?yōu)化,并可以得到接近解析解的拓?fù)浣Y(jié)構(gòu)。故本文為基于基結(jié)構(gòu)法的桁架拓?fù)鋬?yōu)化提供了一種易實(shí)現(xiàn)且效率及準(zhǔn)確度高的基結(jié)構(gòu)生成方法。