3D打印技术可以制造各种复杂结构,在减重、隔热等方面有着广泛应用。其中有一类非常有趣的结构,被称极小曲面(minimal surface):是指平均曲率为 0 的曲面 ,如下面是两种极小曲面。由于较为光滑过度,这种结构一般比较稳定,在首饰制造、隔热放热及减重设计方面有着很好的前途。
可以看到,上述两种极小曲面是可以用数学方程表达出来,左边的可被称作 隐式极小曲面,因为想通过解方程在建立其几何模型非常难。右边的是显式方程确定的,因为x、y、z都可以独立表达,这种显式极小曲面在很多CAD软件都可以实现,说到仿真软件,spaceclaim 就能直接生成。
今天跟大家分享左边这种隐式极小曲面的生成方法之 Matlab。
左边这种虽然无法直接生成,但不是没有办法;其中很多软件都可以实现:
1、犀牛(rhino)的grasshopper,可以生成模型、优化网格并输出为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); %该区域中所有的 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文件,效果如下:
****上述封闭曲面为空心曲面,若要用实体,需用CAD软件进行实体转换 或 用abaqus的mesh模块中tri to tet 填充为实体
虽然上述stl文件导入后在abaqus中可以正常计算,但网格划分有些不好。怎么有画网格?大家可以提提高见。据我所知,由于此类曲线很难转化为 几何模型,只能通过网格优化软件或 一些算法实现网格重新划分。下面是通过软件优化后的网格:
matlab生成了曲面后,在abaqus中阵列后根据需求进行仿真即可;由于是曲面,需要采用壳单元。
如果不想用壳单元,希望 加厚为实体单元 怎么办?
1、通过rhino等软件的网格偏移功能;
2、用matlab或python加厚(另需脚本),下期说明。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删