本發(fā)明涉及結(jié)構(gòu)優(yōu)化的技術(shù)領(lǐng)域,尤其涉及一種面向三維打印模型的拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)。
背景技術(shù):
近年來,三維打印技術(shù)在日益發(fā)展,其在制造業(yè)的地位也日益增高,幾乎任意形狀的三維模型都可以進(jìn)行生產(chǎn)。該技術(shù)的原理是使用粉末狀塑料或金屬材料,根據(jù)計(jì)算機(jī)輸入的數(shù)字模型文件,逐層堆積打印制造。三維打印過去常用于一些傳統(tǒng)方法無法制造的產(chǎn)品,往往是一些“高精尖”產(chǎn)品,如人的骨頭,或者是一些飛機(jī)的零部件。這些產(chǎn)品都有一些共同的特點(diǎn),精度高和難制造,并且都是小批量生產(chǎn)?,F(xiàn)如今,該技術(shù)已經(jīng)走向了大眾,一臺(tái)普通的三維打印機(jī)的成本已經(jīng)可以被人們所接受。其用途也更加廣泛,尤其是個(gè)性化定制,用戶可以根據(jù)自己的需求設(shè)計(jì)模型,然后進(jìn)行打印。總的來說,對(duì)于復(fù)雜的結(jié)構(gòu),三維打印便是最佳的制造工具。
拓?fù)鋬?yōu)化方法的原理是基于外載和約束的條件下,在制定的區(qū)域內(nèi)對(duì)材料分布進(jìn)行優(yōu)化,使最終結(jié)構(gòu)的力學(xué)性能到最優(yōu)。相比于傳統(tǒng)的尺寸優(yōu)化和形狀優(yōu)化方法,具有更多的自由度,給了產(chǎn)品設(shè)計(jì)非常大的設(shè)計(jì)空間,在工業(yè)上有著廣泛的應(yīng)用價(jià)值。拓?fù)鋬?yōu)化問題的求解方法是把求解區(qū)域離散化,分割成有限個(gè)單元,然后根據(jù)一些優(yōu)化算法來確定設(shè)計(jì)空間內(nèi)單元的去留,保留下來的單元就是最終設(shè)計(jì)出的最優(yōu)結(jié)構(gòu)。
隨著“節(jié)能環(huán)?!痹絹碓匠蔀榱藦V泛關(guān)注的話題,輕量化也廣泛應(yīng)用到工業(yè)制造領(lǐng)域,在保證產(chǎn)品性能的同時(shí)還能減少制造的材料。以汽車制造為例,汽車的總質(zhì)量和發(fā)動(dòng)機(jī)的排量決定了其油耗的多少,在保證汽車性能的前提下,重新設(shè)計(jì)輕量化的結(jié)構(gòu),降低汽車自身重量不僅可以節(jié)省材料、降低制造成本和使用時(shí)的功耗,而且其操控性和安全性也會(huì)有很大的提高。
對(duì)于一個(gè)復(fù)雜的輕量化三維模型,拓?fù)鋬?yōu)化為其結(jié)構(gòu)設(shè)計(jì)提供了理論基礎(chǔ),三維打印為其生產(chǎn)制造提供了技術(shù)保障。但是,三維打印技術(shù)還存在著一些局限性。由于三維打印本身的性質(zhì),在打印過程中,常常會(huì)出現(xiàn)結(jié)構(gòu)坍塌的現(xiàn)象,導(dǎo)致打印失敗。為了解決這種問題,需要對(duì)打印的結(jié)構(gòu)進(jìn)行處理,增加一些支撐材料,在打印完成之后再將其人工去除。這樣一來,打印過程會(huì)浪費(fèi)許多材料,消耗更多的打印時(shí)間。另一方面,對(duì)于打印好的模型進(jìn)行人工處理支撐也是非常耗時(shí)和繁瑣的過程,有些情況下甚至無法去除。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述三維打印所存在的問題,本發(fā)明提供一種面向三維打印的自支撐結(jié)構(gòu)設(shè)計(jì)方法,該方法簡(jiǎn)便可行,可以高效地掃描結(jié)構(gòu)中無法支撐的單元,直接轉(zhuǎn)化為拓?fù)鋬?yōu)化中的約束條件,設(shè)計(jì)出可以直接打印的自支撐結(jié)構(gòu)。
本發(fā)明的面向三維打印的自支撐結(jié)構(gòu)設(shè)計(jì)方法,包括使用卷積方法對(duì)原結(jié)構(gòu)掃描,確定出最佳打印方向并獲得此方向下無法自支撐的單元,作為結(jié)構(gòu)拓?fù)鋬?yōu)化的限制條件,求解獲得自支撐結(jié)構(gòu)。
該方法具體如下:
1)對(duì)于給定的涉及區(qū)域、外部載荷以及體積比,使用傳統(tǒng)的拓?fù)鋬?yōu)化方法進(jìn)行初步求解,得到一個(gè)臨時(shí)結(jié)構(gòu);
2)使用卷積方法對(duì)該結(jié)構(gòu)進(jìn)行掃描,選擇出最優(yōu)的打印方向,且找出此方向下無法自支撐的單元,
3)以該卷積內(nèi)核矩陣對(duì)結(jié)構(gòu)進(jìn)行卷積操作,將獲得的非支撐集合中單元對(duì)應(yīng)的密度平方和小于閾值作為限制條件,對(duì)結(jié)構(gòu)拓?fù)鋬?yōu)化進(jìn)行求解,并迭代直至收斂,最終可以將所有無法自支撐的單元全部去除,得到所需的自支撐結(jié)構(gòu)。
進(jìn)一步地,上述步驟2)具體為:根據(jù)初始給定可能的打印方向,定義各打印方向相應(yīng)的卷積內(nèi)核矩陣,對(duì)于每一個(gè)可能的打印方向,將其卷積內(nèi)核矩陣與初始結(jié)構(gòu)進(jìn)行卷積操作,確定對(duì)應(yīng)非支撐集合中單元的數(shù)目,選取所有可能打印方向中該數(shù)目最小的為最佳打印方向,獲得相應(yīng)的卷積內(nèi)核矩陣。
進(jìn)一步地,上述的步驟3)具體如下:
以結(jié)構(gòu)的柔順度c(u,ρ)作為目標(biāo)函數(shù),定義如下:
c(u,ρ)=uTKu
其中ρ是結(jié)構(gòu)的單元密度組成的向量,u是全局位移向量,K是全局剛度矩陣。拓?fù)鋬?yōu)化問題可以表示為如下形式:
F(ρ)是節(jié)點(diǎn)應(yīng)力向量,V(ρ)和V0是材料的體積和求解域的總體積,f是設(shè)計(jì)指定的體積分?jǐn)?shù),
以最佳打印方向?qū)?yīng)的卷積內(nèi)核矩陣對(duì)結(jié)構(gòu)進(jìn)行卷積操作,將獲得的非支撐集合中單元對(duì)應(yīng)的密度平方和小于閾值作為限制條件,即:
其中,是非支撐單元的集合,ε是一個(gè)接近0的值;
使用MMA算法求解上述優(yōu)化問題。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
對(duì)于自支撐限制的拓?fù)鋬?yōu)化問題的求解,本發(fā)明方法在常用的SIMP方法上進(jìn)行改進(jìn),添加自支撐的約束條件,其在求解域上是光滑的,可以對(duì)其求偏導(dǎo),以便后續(xù)優(yōu)化時(shí)使用。此外本發(fā)明采用卷積方法避免了直接根據(jù)非支撐集合的定義來遍歷尋找非支撐單元,提高了求解性能,可對(duì)復(fù)雜模型進(jìn)行求解。本發(fā)明的方法設(shè)計(jì)出的結(jié)構(gòu)無需再增加支架,可以直接打印,同時(shí)還擁有良好的力學(xué)性能。
附圖說明
圖1是二維自支撐示意圖;
圖2是三維自支撐示意圖;
圖3是二維卷積內(nèi)核矩陣;
圖4是三維卷積內(nèi)核矩陣;
圖5是本發(fā)明具體實(shí)例--二維懸臂梁?jiǎn)栴}的求解域和邊界條件;
圖6是采用SIMP方法及本發(fā)明方法的結(jié)果對(duì)比圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)例對(duì)本發(fā)明做進(jìn)一步說明。
本發(fā)明的面向三維打印的自支撐結(jié)構(gòu)設(shè)計(jì)方法,是使用卷積方法對(duì)原結(jié)構(gòu)掃描,確定出最佳打印方向并獲得此方向下無法自支撐的單元,作為結(jié)構(gòu)拓?fù)鋬?yōu)化的限制條件,求解獲得自支撐結(jié)構(gòu)。
(1)定義自支撐
根據(jù)前人的對(duì)三維打印的研究可以知道,最大可以懸掛的支持角度為45度。對(duì)此,可以從數(shù)學(xué)角度對(duì)其進(jìn)行定義。
在二維情況下,對(duì)于求解域中的一個(gè)單元,e(n,m),1≤n≤N,1≤m≤M,其中e(n,m)等于0或者1,n,m分別是x,y方向的坐標(biāo)。一個(gè)單元所對(duì)應(yīng)的支撐單元如圖1所示,該結(jié)構(gòu)所對(duì)應(yīng)的支撐集合可以表示為:
其中為該結(jié)構(gòu)對(duì)應(yīng)所包含的單元。
類似的,在將三維的設(shè)計(jì)空間離散化之后,結(jié)構(gòu)便是由一個(gè)個(gè)的體素單元所組成。求解域中的一個(gè)元素為e(n,m,l),1≤n≤N,1≤m≤M,1≤l≤L,其中e(n,m,l)等于0或者1,n,m,l分別是是x,y,z方向的坐標(biāo)。
對(duì)于一個(gè)三維模型,其單元組成的集合由所表示,
三維模型中自支撐掃描如圖2所示,對(duì)于一個(gè)給定的單元e(n,m,l),和它對(duì)應(yīng)的支撐集合是下面五個(gè)單元。由此,該結(jié)構(gòu)M對(duì)應(yīng)的支撐單元的集合表示為
在二維和三維的情況下,該結(jié)構(gòu)對(duì)應(yīng)的非支撐單元的集合都可以表示為為原結(jié)構(gòu)集合和支撐集合之差,即
(2)自支撐掃描
如果直接根據(jù)非支撐集合的定義來遍歷尋找非支撐單元,會(huì)非常的繁瑣和耗時(shí),其復(fù)雜度會(huì)隨著模型分辨率的提高而增大。在優(yōu)化過程中,每一次迭代都需要尋找出非支撐單元,由此本發(fā)明分別在二維和三維設(shè)計(jì)出了內(nèi)核矩陣,將其與原結(jié)構(gòu)矩陣進(jìn)行離散卷積操作,就可以得到支撐元素的集合。經(jīng)過實(shí)驗(yàn)測(cè)試發(fā)現(xiàn),性能可以提升了一百倍以上。
卷積內(nèi)核矩陣需要根據(jù)打印方向來確定,在二維情況下,當(dāng)打印方向是從下向上,該內(nèi)核矩陣如圖3所示。打印方向不同時(shí),卷積內(nèi)核矩陣不同,具體如下表所示:
使用原結(jié)構(gòu)矩陣與其進(jìn)行卷積操作后,再經(jīng)過符號(hào)函數(shù)運(yùn)算就可以得到該結(jié)構(gòu)對(duì)應(yīng)的支撐集合。
其中H為卷積內(nèi)核矩陣,sign(x)為符號(hào)運(yùn)算,表示為
三維情況下的處理方式類似,假設(shè)打印方向是從上向下,該內(nèi)核矩陣如圖4所示。
最后,根據(jù)可以得到迭代優(yōu)化中所需要的非支撐集合。
(3)數(shù)學(xué)形式
對(duì)于自支撐限制的拓?fù)鋬?yōu)化問題的求解,我們?cè)诔S玫腟IMP方法上進(jìn)行了改進(jìn),添加了自支撐的約束條件。和一些使用過濾器來控制自支撐的方法不同,本發(fā)明的方法可以有明確的數(shù)學(xué)表示,約束條件函數(shù)在求解域上是光滑的,可以對(duì)其求偏導(dǎo),以便后續(xù)優(yōu)化時(shí)使用。并且,該方法可以保證收斂性,可以保證計(jì)算完成的結(jié)構(gòu)是自支撐的。
滿足自支撐的拓?fù)鋬?yōu)化問題可以表示為如下形式:
其中ρ是設(shè)計(jì)變量(單元密度)組成的向量,u是全局位移向量,K是全局剛度矩陣。目標(biāo)函數(shù)c(u,ρ)是結(jié)構(gòu)的柔順度,定義如下
c(u,ρ)=uTKu
F(ρ)是節(jié)點(diǎn)應(yīng)力向量,V(ρ)和V0是材料的體積和求解域的總體積,f是設(shè)計(jì)指定的體積分?jǐn)?shù),是非支撐單元的集合,ε是一個(gè)接近0的很小的值。使用MMA算法求解上述優(yōu)化問題。
采用本發(fā)明卷積的方法可以大大縮減求解時(shí)間,使用卷積和遍歷掃描結(jié)構(gòu)的效果對(duì)比如下:
實(shí)驗(yàn)使用的是一臺(tái)普通的桌面計(jì)算機(jī),具體配置是Intel(R)Core(TM)i5-4460CPU和8GB內(nèi)存,程序運(yùn)行環(huán)境是MATLAB R2015b(64-bit)。
注:加速比是遍歷的時(shí)間除以卷積的時(shí)間
以下為采用本發(fā)明方法進(jìn)行的一項(xiàng)具體求解案例:
圖5是一個(gè)二維的懸臂梁案例,求解域被離散為150×60的正方形網(wǎng)格。左端被固定在墻上,右端的中點(diǎn)處受到一個(gè)豎直向下的拉力。給定的體積分?jǐn)?shù)為0.6。在實(shí)驗(yàn)中確定最佳打印方向?yàn)樗较蛴摇5玫降慕Y(jié)果如圖6所示,左側(cè)是SIMP方法直接求解得到的,右側(cè)是本發(fā)明方法求得的結(jié)果。左圖中有24個(gè)單元無法自支撐,從而會(huì)導(dǎo)致58個(gè)單元在在打印過程中坍塌。右圖是完全自支撐的結(jié)構(gòu),可以直接打印。另外,因?yàn)樵黾恿讼拗茥l件,可行解的空間相較之前會(huì)變小,但是本發(fā)明的方法依然可以保證結(jié)構(gòu)會(huì)擁有較好的力學(xué)性能。左圖的目標(biāo)函數(shù)值為92.7,本發(fā)明求解出的自支撐結(jié)構(gòu)的目標(biāo)函數(shù)值為92.8。在保證了結(jié)構(gòu)強(qiáng)度的條件下,設(shè)計(jì)出了自支撐的結(jié)構(gòu)。