大家好啊,好久不见啦,遇到了非常头疼的事,当然也是我懒了,所以停更了很久。很久没有写东西了,看到很多小伙伴给我留言,召唤我出山,非常欣慰,应该是担心我吧,不会是想我多吐点专栏出来吧,应该是出于对于对我个人的关心。其实能把自己的想法展示给更多的人是我的初衷,也是我想坚持下去的,记得我第一次写专栏,每天看几十遍,有没有人关注我,有没有给我留言,自己给自己刷阅读量,到现在我的文章也再慢慢传播了,我也不用给自己刷阅读量了。
我现在尽量每周更新一到两次。可能会写点简单的东西,我自己更熟悉的东西。比如脚本,我更喜欢讲脚本,因为子程序要创新,脚本更像是应用,创新的东西,都比较难,人都是趋易避难的,当然子程序我也会讲的,频率会低一点。
今天我就做一个关于,连接器,或者说弹簧的脚本建模方法吧,因为我看到大家在问卷里填的问题,大家的问题还是挺多的,而且比较难,我就慢慢的回复,先挑个简单的吧。我看到好几个关于此类似的问题。今天就说这个吧。
其实脚本能做的事,在cae里基本上都能做到,只不过可能费时间,费工夫,难度上,并不是很大。对于非线性弹簧这种,就是建模的问题,因为对应的节点很多,大几十上百个点,一个个点肯定费劲。
1 模型
今天用的模型100*100的平板两块,网格大小5,看的稍微清楚一点。上下板之间对应的节点的建立连接器,至于线性还是非线性,这都无所谓,那是连接器connector的属性了,想给什么都行。今天就是干这个活,这要是一个个点,不用说,肯定费劲。大家注意一点,这里要用一下orphan mesh mesh(我没写错吧,好像是这么拼的),就是俗称的网格part,才可以建立节点对节点的wire。做法就是画好网格后,再mesh模块,选菜单栏上的Mesh->Create Mesh Part,就能复制一份网格part了。
2 CAE里操作一次
其实,看过之前的文章的小伙伴应该知道接下来的套路了,写脚本就是这个套路。做一次点对点的连接,总是可以的吧,哪怕再痛苦,再费劲,第一次也是要做的,剩下的就是舒爽了。
建立连接器的3个步骤:
(1) 建立点对点的wire
(2) 建立连接器(connector)属性
(3) 把属性赋予给wire
就这3步骤,简简单单的
首先,第一步,在abaqus Interaction模块下,点那个非常明显的小标志,因为是批量处理,我就多点了几组。同时,最重要的,不要忘了记录脚本。我们把这部分的脚本先存起来。
所有带session都可以不要,有小伙伴问我,rpy里的看起来冗长,为什么我写的要更简洁一点。因为我把里面很多废话都删掉了,比如下面,你们可以明显的看到,有两个a变量,这些都是重复内容,取一个就行了,类似的情况,还有一写rpy里定义了一些用不到的变量,也都可以舍去。
比如,我稍微把这段整理一下。这里面有个getSequenceFromMask,是abaqus生成的掩码,这东西是屁用都没有的,它只能告诉你,某个函数的某个参量,需要的是sequence序列类型,不支持对象类型,千万不能照搬,一定要改成索引的形式,反正就是要改,具体怎么改,你看我写的,看看就知道了。
从这里可以明显的看到,上下板的单元标号都是对应的,这种情况是最简单的情况,也是我们想要的情况,但是实际的模型,大概率不是对应编号的,而是需要你自己找到对应关系,比如,找到上板所有点中,距离最近的那个点作为连接,大部分的情况可能都是这样。其实做法也很简单,只需要多做一步,先找到上下板节点之间的对应关系,就利用穷举法,一个个找,相信计算机,程序找的很快的,我想留给各位自己思考。
第二步,其实是给连接器建立一个属性,我相信做这个的小伙伴不需要我解释是什么,我简单解释一下,我也不是很懂,就是指你连接的连接的两个点,他们之间的相互关系是怎样的,里面有很多,abaqus也给了图解,比如我今天用的translator,两点之间,只有U1方向可以有运动关系,其他5个自由度都保持一致。大家可以自行看一下,里面有解释。
比如这里面还有铰链Hinge连接等等,
然后就是定义Translator的属性了,比如线性或者非线性,就是在这里定义的,大家可以自行研究。我这里给了线性的模量,1000N/mm。如果用非线性,就选非线性就行了,数据输入就OK了。
同时,注意脚本的记录。待会儿可以直接用。
最后一步,就是把属性赋予给wire,这里需要注意一下,坐标系,刚才两个弹簧之间只有U1有自由度,但是我想要上下板之间在全局坐标的Z方向有相对移动,所以全局坐标不能用,新建个局部坐标就行了。
别忘了,把脚本记录下来
综上,已经建立了一个,获得了所有我们需要的脚本函数,接下来,就是对上述脚本函数,进行编辑改写,写的稍微能看一点。
3 编辑与改写脚本
首先必不可少,前处理两件套,无脑写上,单反涉及到前处理,就无脑写上完事了。
# 导入包# 前处理建模必不可少的工具包两件套
再把建立wire的改改,记得找到对应关系,把所有点与点的points存成一个元组。这一步应该是大家不想做的,其实后两部再cae的全选一下就行了,不用脚本也很简单。麻烦也就麻烦在这里,留个题,自己回去思考,节点编号不对应时候,改怎么写,很简单的,相信你们。
测试一下,大家可以看到,就建立好了。后面其实不用也行,框选一下,但是毕竟脚本教学,还是得操作一下的。
这里有很多冗长的重复对象,存再一个变量section里就行了,代码就会显得精简一点。
测试一下,发现报错了,原因是没有connectorBehavior。遇到错误很正常,冷静一点,别着急,仔细看一下错误原因,这明显的提示你这个东西没定义,又是个优先级很高的东西,肯定是个abaqus内置的包,在程序开头导入进去就好了。
然后再测试,就可以了。
最后一步,把property赋予一下。把重复的删了,然后差不多就剩下这几句话了。
试一下,可以看到所有的wire都建立好了。
整个源码部分,我就放这里啦。大家可以自行尝试一下。我应该没讲错吧,你们要的是这个对不。好啦,过几天见。8888,留的题,别忘了试试。