【Abaqus 3D打印建模】之 極小曲面 I --Matlab生成極小曲面

***請注意,附件包括matlab生成極小曲面及斷面封閉空心殼的腳本***

***腳本已更新?。。∪粜枰喾N加厚方式,請關注其他算例***


熱及減重設計ng>1.介紹

3D打印技術可以制造各種復雜結構,在減重、隔熱等方面有著廣泛應用。其中有一類非常有趣的結構,被稱極小曲面(minimal surface):是指平均曲率為 0 的曲面 ,如下面是兩種極小曲面。由于較為光滑過度,這種結構一般比較穩(wěn)定,在首飾制造、隔熱放熱及減重設計方面有著很好的前途。

min.png

可以看到,上述兩種極小曲面是可以用數學方程表達出來,左邊的可被稱作 隱式極小曲面,因為想通過解方程在建立其幾何模型非常難。右邊的是顯式方程確定的,因為x、y、z都可以獨立表達,這種顯式極小曲面在很多CAD軟件都可以實現,說到仿真軟件,spaceclaim 就能直接生成。

今天跟大家分享左邊這種隱式極小曲面的生成方法之 Matlab。

2.隱式極小曲面生成方法

左邊這種雖然無法直接生成,但不是沒有辦法;其中很多軟件都可以實現:

1、犀牛(rhino)的grasshopper,可以生成模型、優(yōu)化網格并輸出為stl等abaqus可支持的格式;想必搞建筑設計的朋友對此非常熟悉;網上(如b站)也有視頻教程,在此不作詳細介紹。

2、Matlab之 isosurface 函數,詳情自行查詢。其思路是先建立一個由xyz做成的點集,再用把這些點的坐標依次帶入 目標函數f的表達式中,得到v=f(x,y,z)的值;最后對比v與c的值,滿足條件即滿足了原目標函數f。如下面是簡單的代碼:

i=1;j=1;
f=@(x,y,z)sin(x).*cos(y)+sin(y).*cos(z)+sin(z).*cos(x)
[x,y,z]=meshgrid(-i*pi:0.05*pi:j*pi);  %該區(qū)域中所有的 xyz坐標
v=f(x,y,z);c=isosurface(x,y,z,v,0)  %找到v=0的等值面
h=patch(c);
isonormals(x,y,z,v,h);
set(h,'facecolor','g','edgecolor','b')
grid oncamlight;lighting gouraud;

其實只有前四行代碼是用來生成極小曲面的,后幾行是視覺效果之類的。

那么,對于做仿真的人來講,只有圖片肯定不行,至少得轉換成stl格式或obj格式或inp等 abaqus支持的格式,此時需要把matlab生成的頂點、面、連接順序等信息寫入為 stl或obj格式或inp(abaqus可支持obj導入)。本文的重點就是怎么生成這類曲面的stl或obj文件,本人參考stl文件的格式寫了個腳本(附件),可以直接生成stl文件,效果如下:

曲面

minim2.png

斷面封閉的曲面

minim3.png

****上述封閉曲面為空心曲面,若要用實體,需用CAD軟件進行實體轉換 或 用abaqus的mesh模塊中tri to tet 填充為實體

雖然上述stl文件導入后在abaqus中可以正常計算,但網格劃分有些不好。怎么有畫網格?大家可以提提高見。據我所知,由于此類曲線很難轉化為 幾何模型,只能通過網格優(yōu)化軟件或 一些算法實現網格重新劃分。下面是通過軟件優(yōu)化后的網格:

min_remesh.jpg

3.其他說明

matlab生成了曲面后,在abaqus中陣列后根據需求進行仿真即可;由于是曲面,需要采用殼單元。

如果不想用殼單元,希望 加厚為實體單元 怎么辦?

1、通過rhino等軟件的網格偏移功能;

2、用matlab或python加厚(另需腳本),下期說明。

thicken.jpg

4.下期預告

可能有人會問,python行不行,答案是肯定的,但需要安裝一些庫,比如mayavi等,下次跟大家分享。下面是一篇文獻,將極小曲面matlab的生成法。有興趣的朋友可以看看:

【Abaqus 3D打印建?!恐?極小曲面 I --Matlab生成極小曲面的圖6Muna_Patterson_Minimal_Surfaces_Matlab_TechRep_V1.pdf

歡迎咨詢討論

以下內容為付費內容,請購買后觀看

   20人購買

1、matlab生成極小曲面腳本(包括封閉曲面) 2、案例中網格優(yōu)化后的極小曲面stl文件

App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

11
9
14