abaqus生成adams柔性体_Abaqus二维多晶体的四边形网格处理脚本

hello,大家好。今天是2020-12-11,马上就到了双十二了,又是一天剁手节。大家都买了什么好东西啊。反正我跟我家的傻狍子一起已经剁手了,坐等凌晨付款了。等我的货到了,我跟你们说我买了什么,哈哈。

下面就说一下今天的内容吧。今天主要是把昨天没讲完的东西讲完,昨晚搞到凌晨,太困了,就睡了。我们就昨天的内容继续往下说。

以二维多晶体模型为例。就是我们之前写过的脚本。大家如果做分析画网格的时候,一般都是画出下面这种样子的:

8ee8cbdf2f1fb7fdcb37dfe7c134c584.png

这种网格也还可以的,好歹还是四边形的。但是对于三维的情况,三维的模型只能画四面体网格。按正常的画网格的方法是很难很难画成六面体网格的。不信大家自己可以试试看。所以就要换一种思路,先把网格画好了,然后再分区域,分别给材料。这种方法是个好办法。特别好的办法。

我还是展示一下三位的是个什么效果吧:

下面我们就来说说具体怎么做。做法上,算法上二维和三维的脚本都是一模一样的,只有写法上会有区别,比如二维的faces,在三维模型里就是cells。

1 生成多晶粒的模型

生成多晶粒的模型的脚本我给大家都写过了,二维和三维的都有,可以看之前的内容。生成好了之后,这个模型是用来参照的。然后在生成一个跟基体大小一模一样的Part,用来画高质量的网格。

f6e0f14f9c6d712ea88f8307287b6951.png

这个脚本,只需要在之前咱们写的那个二维脚本里多加两句话:

095b55e713bea8906d0292ef6a346e2a.png

2 生成网格

生成的网格的函数也很简单,定义种子大小,然后直接生成就行,两句代码搞定:

214b5445c1dd4d27574c0d6b1ce3f395.png

a47e6dc50b58053aa7a2ffdc2f814551.png

3 遍历单元,做判断

网格画好之后,现在只需要对每个单元做个判断就行,做什么判断,根据Part1画好的多晶体模型,去判断Part2里的单元所属的是哪个晶粒。大家没懵吧,缕一缕逻辑啊。我们把是属于同一晶粒的单元放在一起,建立一个set。在对set赋予材料。整个脚本就写完了。随机赋予材料的脚本我也讲过,前面的文章里有。这里我就不写了。

先是初始化一个列表,放属于同一晶粒的单元编号,注意这里是单元编号(label)。为什么不直接存单元呢,是因为后面的建立set的时候,需要用到单元编号。

ec37d57ec9842d37ffc62468adfbd845.png

初始化之后,遍历Part2的所有单元。判断每个单元的中心点坐标位置,利用findAt函数去查找,这个中心点坐标对应的晶粒是哪个(二维faces,三维cells)。findAt是个特别好用的函数,参数是坐标,返回值是一个对象(edges,faces,cells对象等),可以找到Part的边、面以及体。然后把这个单元的编号,放在初始化的数组里。对每个单元都操作一次,就可以按照Part1的晶粒划分方式区分开了。

804644b4081d74f0be6d1b708fe9ce07.png

区分完成后,所有的信息都储存再列表里,还需要在abaqus里实现,这就需要建立set。

caebb2a3cc51faa52a6fe0096db6541e.png

运行一下脚本,按set划分之后的结果如下。

c7c1fa252f3c03fbbc22baba4111acff.png

对于三维的情况也一样,大家可以根据我的脚本思考一下,想想应该怎么改。今天的源代码,老规矩,评论区置顶。

好啦,今天的内容稍微简单一点。但是还是有几点新东西值得学习的,比如findAt函数。有时间你们可以自己尝试尝试,咱们明天见。88啦

80aa5803fccb1b32ca516f106963a126.png

百无禁忌

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值