利用Abaqus python脚本生成2D随机圆形骨料

1 模型

       我们今天的模型是,建立一个2D的随机圆形骨料模型,假设圆形骨料的大小有三种,直径分别为10mm,4mm,1mm。模型的大小自定。

2 算法实现

2.1 abaqus cae里骨料建模

   懂得都懂,我们在写脚本的时候是不知道脚本函数是什么的,所以,首先要在cae里建模,然后查rpy文件的内容,最后改写,从而实现。

   既然如此,那我们第一步当然是在cae里建模啦。建part,然后2D,shell。画一个矩形框,然后,把骨料的形状切割出来,就有我们想要的结果了。


   切割后的效果如下:


2.2 rpy文件解析

   当我们在cae里做完我们想要的操作之后,在工作目录下的rpy文件就已经把所有的脚本保存了下来。


   打开rpy之后,又是日常的乱七八糟的东西,我在cae里一下子做多了,看的有点乱。大家自己在做的时候,最好是做一步然后看一下rpy,步子不要迈大了,不然的话,就会出现我上面显示的眼花缭乱的代码。大家自己做的时候,千万不要像我这样啊,要一个一个慢慢做。

3 rpy改写与算法实现  

下面我来给大家一个个解释这些代码分别表示什么意思。

3.1 生成基体脚本的改写


   这段代码是我们做的第一步,建立一个2D的矩形Shell。看起来有点乱,我们改写一下。注意一下,但凡是session开头的,都是显示的函数,对我们都是没什么用的,可以直接忽略。把它整理一下,然后一些参数以变量的形式表示。整理如下:


   大家可以看出,我们把函数和变量整理一下之后,代码会变得简洁明了。这一步主要是用脚本生成基体的函数,我们在abaqus里运行一下。测试一下,发现没有问题,生成了一个长200,宽100的矩形。


3.2 骨料的生成脚本改写

   我们在abaqus cae里画了很多圆去切割它,它的原脚本从abaqus rpy文件里复制出来如下:


   看的也是挺复杂的,同样的道理,我们把变量重命名,去掉session,改写一下函数如下:


   改写完了之后就剩下4句话。。。。我核实了好多遍,确实其他很多代码都是重复的,没什么用处。改写完之后,运行一下,检查一下脚本有没有问题。可以看出,脚本成功运行。


3.3 随机骨料的算法实现

   目前我们改写之后的整个脚本如下:


   是不是很简单,看的眼不花了。改写脚本的原则是取对你有用的代码,能简则简。能少些一行就少些一行,能不重复就不重复(abaqus原生的rpy文件里有很多重复的代码)。

   下面我们要做的就是怎么实现随机的骨料算法了。由于是圆形骨料,所以只需要随机圆心点即可,因为半径是已知的,本次的模型是用的3种半径的骨料。

   我们先做个简单的,生成100个半径为5mm的骨料,圆心随机的算法:只需要加个循环,每次循环随机一个圆心。代码如下:


       运行一下脚本,大家可以看到,这里出现了一个问题。圆重叠了。所以在此基础上,还需要加一个接触判断。为随机的圆心位置加限制条件。


   我们对每个新生成的随机圆心点做接触判断,如果与旧的点之间的间距大于半径,就符合条件,把它加到center的列表里,然后经过1000次循环之后,把所有的圆画出来。注意,这里的1000次指的的生成随机点1000个,但是只取符合条件的。再次运行一下脚本,观察现象:


   现在,我们的骨料已经规规矩矩的互不干涉了,证明我们的算法没什么问题,虽然写法上可能有点不太雅观,但是总之是把它弄出来了。


3.4 不同骨料大小的配合

   当我们实现上述脚本之后,上面只有5mm的骨料,还差1mm,和2mm的骨料。怎么做呢,其实很简单啦,主体部分已经写完了。只需要对其他两种规格稍作改动即可。由于经常做接触判断,我们把接触判断封装成函数。这就是新的5mm半径骨料。


   由于2mm骨料不仅要和自身做判断,还要和5mm骨料的做判断。因此有两个判断变量,sign1和sign2,只有这两个变量同时为True的情况,即既不和大骨料相交也不和小骨料相交的情况,随机点才符合条件。


   再运行一下脚本,可以看到,我们把2mm的骨料也成功导入啦。


   最后就是1mm的骨料了,同样的道理,只是这次需要做3次判断,不能和5mm、2mm和自身相交,才是符合的圆心点。脚本如下:


   运行一下脚本,成功运行,如此我们遍把这个脚本写完了。


所有的代码如下:

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空