【Abaqus 3D打印建模】之 极小曲面 II --python生成极小曲面
***请注意,附件仅为现式和隐士极小曲面生成和输出为stl的python代码,并不包括加厚***
***有加厚的需求,请看其他算例。加厚后输出的stl,也是空心封闭的壳,不是实心的实体***
0.算例
上一个帖子介绍了怎么用matlab建立极小曲面,详情见Matlab创建极小曲面。
下面是个简单的算例,在y方向压缩极小曲面之Gyroid,几何模型建立方法见下文,建立后阵列并有画网格导入abaqus即可。
为了对比该极小曲面的应力水平,采用同样的材料做了单轴压缩,两种情况对比如图所示:
从图中可以看到,如果仅去极小曲面上的一个点作为其应力应变,其曲线甚至比实心立方体还高,显然这是不合理的。出现这种现象的主要原因是,此类细观结构或变形不均匀时,不能取一个点代表整个模型,不然很可能会出现较大的误差。对此问题,细观力学有些方法,比如作用力反作用力法,体积平均法等,但也有人认为对于细观结构,作用力反作用力法 不太合理。体积平均法的简单表达式如下:
即模型中每一个单元的应力(应变)对单元体积积分后,除以模型整个体积。上述应力应变曲线也证实,采用该方法能够得到较为真实的数据。
那么,怎么通过体积平均法获得数据呢? 在计算结束后,需要通过python脚本对数据进行处理,输出中需要EVOL(单元体积)以便获得各个单元的体积。
1.介绍
之前已经介绍过什么是极小曲面,同时根据表达式定义为 隐式 和显式 极小曲面,主要区别是 隐式极小曲面一般只有一个方程,不容易将x,y,z独立表达出来,如下图所示:
今天介绍怎么用python生成上述极小曲面并输出为stl文件。
- 安装包:需要mayavi、vtk、traits及numpy等依赖包,可以从python第三方库下载,或者从https://pan.baidu.com/s/17Aa-Qv6YqvVLXjVqgW1b4A,(br5n)下载安装;
- 需要用到mayavi的mlab函数,实际上建模思路跟matlab完全一样,即先建立点阵区域,再从中获取满足极小曲面方程的点。
- 生成曲线的代码:
隐式曲线代码:
import numpy as np from numpy import mgrid,pi,cos,sin,sinh,cosh from mayavi import mlab import mayavi x, y, z =mgrid[-pi:pi:10j,-pi:pi:10j,-pi:pi:10j]v=cos(x)+cos(y)+cos(z) iso=mlab.contour3d(x, y, z, v,contours=[0]) mlab.axes() mlab.show()
显式曲线代码:
import numpy as np from numpy import mgrid,pi,cos,sin,sinh,cosh from mayavi import mlab import mayavi,vtk u,v=mgrid[-2*pi:2*pi:40j,-10:10:200j] x=u*cos(v) y=u*sin(v) z=(2/3)*v iso= mlab.mesh(x, y, z) mlab.axes() mlab.show()
2.导入abaqus
无论是python还是matlab,不提供直接转换为abaqus可支持的格式,因此还是需要相应的脚本去转换,思路就是把上述过程中生成的点坐标信息按照stl文件格式写入即可。
至于加厚,如前面解释过,需要其他CAD软件辅助或自己编个小脚本即可。
附件包括隐式和显式曲线生成代码及转换stl格式的脚本。
3.下期预告
无论是用matlab还是python,都需要额外的脚本,或甚至要安装些依赖包,众所周知,python的某些安装包,如上面的traits安装起来其实挺麻烦的。基于以上的考虑,本人做了个简单的软件,下期跟大家分享。
由于并非程序猿出身,基于python打包的,把其他乱七八糟的库打包进去了,大概在200M左右。但不需要安装,直接运行即可。其特点包括:
1、解压即可运行;
2、内置典型极小曲面,直接可以生成,并可以输出stl或各种图片格式以及eps等多种格式;
3、可以加厚,并不需要额外的CAD软件辅助;
4、xyz的范围可以自定义,同时根据需求输入曲面表达式可以生成任何曲面(几乎)。
欢迎咨询讨论:QQ180280578、微信allisforA
该付费内容为:隐式、显式极小曲面生成脚本及 stl转换脚本
包含1个附件 9人购买
查看更多评论 >