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

***请注意,附件包括matlab生成极小曲面及断面封闭空心壳的脚本***

***脚本已更新!!!若需要多种加厚方式,请关注其他算例***


热及减重设计ng>1.介绍

3D打印技术可以制造各种复杂结构,在减重、隔热等方面有着广泛应用。其中有一类非常有趣的结构,被称极小曲面(minimal surface):是指平均曲率为 0 的曲面 ,如下面是两种极小曲面。由于较为光滑过度,这种结构一般比较稳定,在首饰制造、隔热放热及减重设计方面有着很好的前途。

min.png

可以看到,上述两种极小曲面是可以用数学方程表达出来,左边的可被称作 隐式极小曲面,因为想通过解方程在建立其几何模型非常难。右边的是显式方程确定的,因为x、y、z都可以独立表达,这种显式极小曲面在很多CAD软件都可以实现,说到仿真软件,spaceclaim 就能直接生成。

今天跟大家分享左边这种隐式极小曲面的生成方法之 Matlab。

2.隐式极小曲面生成方法

左边这种虽然无法直接生成,但不是没有办法;其中很多软件都可以实现:

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文件,效果如下:

曲面

minim2.png

断面封闭的曲面

minim3.png

****上述封闭曲面为空心曲面,若要用实体,需用CAD软件进行实体转换 或 用abaqus的mesh模块中tri to tet 填充为实体

虽然上述stl文件导入后在abaqus中可以正常计算,但网格划分有些不好。怎么有画网格?大家可以提提高见。据我所知,由于此类曲线很难转化为 几何模型,只能通过网格优化软件或 一些算法实现网格重新划分。下面是通过软件优化后的网格:

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

欢迎咨询讨论:QQ180280578、微信allisforA

该付费内容为:1、matlab生成极小曲面脚本(包括封闭曲面) 2、案例中网格优化后的极小曲面stl文件

包含2个附件 18人购买
(7条)
默认 最新
感谢分享
评论 点赞
请问,有通用的封闭曲面(曲面由isosurface产生)方法吗,我看了您的方法只适用于你所产的曲面。
评论 1 点赞
回复
只要是isosurface生成的,封闭方法是通用的
评论 点赞

查看更多评论 >

点赞 10 评论 7 收藏 14
关注