
hello,小伙伴们大家下午好呀。今天是2020-12-03。
今天呢,还是讲python脚本,是一个我以前煞费苦心写的,熬死了不少脑细胞写的,今天呢,我就教了大家,我把源码都给你们,让你们省省事。
顺便安利一下自己的公众号,大家关注一下,过几天我会再公众号做一个笑话的栏目,我去爬点笑话放上去,时不时会更新的那种(应该不会被抓起来吧),给我自己也是给你们放放松,写码的时候真的挺累的,需要适当的解压:

微信公众号
今天要讲的是在abaqus下2D多晶粒的建模,可能需要用到这方面的人比较少,但是一旦你有需求,绝对能你耗你个小月把,因为我看网上的资源少的可怜,有资源的地方都是,你懂得,收费的。而且价格也不菲,还不给源码,只给插件的那张。要么就是给了你一段代码,然后省略了一堆关键的。总之就是各种的不实在。
看的我真是心里极度不自在,当时我在学习的时候,就看到了这种,现在还是这样的状况,我当时心里那个不服气呀(其实是没钱买脚本),非得把它写出来不可。虽然耗时不小,最终还是被我做出来了。今天就送给大家。
下面我就来说一下怎么做,简单的脚本我就不说了,下面我就说一下思路:
1 建立基体,可以是圆的,方的,各种你喜欢的形状;
2 利用python的第三方库scipy.spatial里的Voroini函数,画多边形的草图
3 利用2中的草图,Partition Face把基体切割出来
整体思路就是3步,难点主要是第2步,下面我分别解释一下这三步脚本:
1 首先,第一步建立基体的脚本,看过我之前文章的小伙伴应该都懂了,不要太简单了,cae里画一个,然后再pythonReader里复制一下函数改写。(没看过的可以看我之前的脚本专栏以前的文章,写的很详细)

2 第2步是难点:
首先,有个scipy的官方教程:https://docs.scipy.org/doc/scipy/reference/tutorial/spatial.html。大家可以去看一下,他对于Voroini的介绍,非常详细。我这里就挑重要的说一下。
Voroini多边形的生成第一步需要生成随机的种子点,然后实例化一个对象,把它丢到函数里,它会帮助你判断多边形的顶点和边是哪些。就如下图一样。是我再python3里画出来的,我把代码也放下来,大家可以看:


这里面,蓝色的点,就是随机的种子点。黄色的点是多边形的顶点,黑色的线就是多边形的线。最最重要的来了,实例化之后,这些顶点的坐标会放在一个属性vertices里,边的信息会放在属性ridge_vertices里。有了这两个信息,我们就能abaqus里重构了。所以,再脚本里,先利用Voronoi函数把多边形的顶点和边的信息提取出来,分别放在自定义的变量vertices和edges里,如下:

然后,再把这些边画出来,利用partition切割基体,就能实现多边形的建模了:

运行一下程序,完美运行:

如果你觉得颜色不好看的话,可以换一种着色方式,这样就能变得好看了。

如果你想做成圆的,或者方的,或者任何基体,只要把基体的脚本改一下就可以了。

完整代码如下,公众号里有能复制下来代码。

我们只是写了个2D的,大家可以想一想3D的多晶粒模型怎么做,欢迎给我留言讨论。(我个人还是喜欢用neper生成多晶的模型,neper是开源软件,而且他们做的模型非常好看,有喜欢的给我留言,下次我教大家怎么用neper,88)
我们下期再见啦
兵者,诡道也。《孙子兵法》(我加傻狍子就会这一句,天天在我耳朵旁说)