1 生成多晶粒的模型
生成多晶粒的模型的脚本我给大家都写过了,二维和三维的都有,可以看之前的内容。生成好了之后,这个模型是用来参照的。然后在生成一个跟基体大小一模一样的Part,用来画高质量的网格。
这个脚本,只需要在之前咱们写的那个二维脚本里多加两句话:
2 生成网格
生成的网格的函数也很简单,定义种子大小,然后直接生成就行,两句代码搞定:
3 遍历单元,做判断
网格画好之后,现在只需要对每个单元做个判断就行,做什么判断,根据Part1画好的多晶体模型,去判断Part2里的单元所属的是哪个晶粒。大家没懵吧,缕一缕逻辑啊。我们把是属于同一晶粒的单元放在一起,建立一个set。在对set赋予材料。整个脚本就写完了。随机赋予材料的脚本我也讲过,前面的文章里有。这里我就不写了。
先是初始化一个列表,放属于同一晶粒的单元编号,注意这里是单元编号(label)。为什么不直接存单元呢,是因为后面的建立set的时候,需要用到单元编号。
初始化之后,遍历Part2的所有单元。判断每个单元的中心点坐标位置,利用findAt函数去查找,这个中心点坐标对应的晶粒是哪个(二维faces,三维cells)。findAt是个特别好用的函数,参数是坐标,返回值是一个对象(edges,faces,cells对象等),可以找到Part的边、面以及体。然后把这个单元的编号,放在初始化的数组里。对每个单元都操作一次,就可以按照Part1的晶粒划分方式区分开了。
区分完成后,所有的信息都储存再列表里,还需要在abaqus里实现,这就需要建立set。
运行一下脚本,按set划分之后的结果如下。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删