本期为大家带来在Abaqus中批量建立两点弹簧的python脚本编辑,在这段时间利用python对Abaqus进行二次开发的过程中,也是有一些感慨想要分享给大家。
python是一门很优秀,理解起来也并不复杂的编程语言,对于像笔者这种专业为岩土工程的工科生来说,python的主要用处,一个在于如何通过编程,实现在有限元软件或者离散元软件中进行快速建模,另一个则是如何快速提取软件模拟分析出来的数据,并且绘制各种各样的数据图来供分析或者写论文使用。
所以对于python语言的精通程度,对于软件进行二次开发来讲,并不需要像计算机专业可以将各种代码信手拈来,可以用精美的代码来构建起屏幕上绚烂的色彩。
在对软件进行二次开发时,一个很重要的参考信息源,就是软件自带的用户手册。熟悉手册里面提供的python脚本参考案例,与软件中各功能所对应的python脚本,是做好二次开发的第一步。对于进行二次开发的python初学者而言,没有太多时间学习完基础知识之后,还可以进行更深层次的代码练习,往往都是在边学的过程中,边扒着用户参考手册做开发。
小编也是如此。
二次开发的另一要点则是,构建起正确的,简易的,开发思路。
以批量建立弹簧为例,编者的思路为首先确定下来在软件中,对两个点,所建立弹簧时的python代码。将此问题解决之后,便可以在此基础之上,通过循环建立起来多个节点下的两点弹簧。
那么要如何确定,用python代码将相对应的两个点作为一个弹簧区域时的两个node的编号呢?
于是,编写弹簧的代码思路就出来了。
第一:首先用python脚本编写程序,来判断两个不同的node集合中,相近的两个node,并将成对提取出来,放进region区域内,构成由N个node对组成的弹簧 regionPairs。
判断时可以用同一个坐标下,不同node编号的两个节点构成一对。(适合两个面相重合,且划分网格时形成的节点数目一样,只是node编号不一样,但空间位置相同,笔者试过该方法,但是有点问题,应该是网格划分的时候没有对齐好点)
也可以用两个点距离判断,当两个点的距离小于一个极小值的时候,可以认为这两个点为建立弹簧时的region点。(这个是比较通用的)
第二:将代码按照正确的顺序,添加进去Abaqus自带的,所必须的代码段。比如代表Assembly的
a = mdb.models['Model-1'].rootAssembly
在第一步的摸索中,可以根据遇见的问题,进行网上搜索获取相应的代码来解决问题,笔者便是这样,并且认为这是对于自己来说,一个很好的提高python编程能力的方法,多看多学,多改多背。
最后附上建立起两点弹簧的截图
这是一个空心圆环,外套一个圆壳,圆壳刚好和圆环外表面重合。
文章中给出的为建立"两点弹簧"的案例图片,属于线性弹簧,对于非线性弹簧的编码思路,与之是完全一致,所以不再更新赘述。
不管是两点弹簧,还是非线性弹簧,都可以在研究内容"钢筋在混凝土中的拉拔性能"用作模拟剪切滑移关系的工具,这对于想直接定义其剪切滑移本构关系的用户来说,是很方便的,可以降低采用Cohesive单元或者接触来模拟粘结滑移的收敛困难。
而对于研究隧道工程的用户来说,荷载-结构法所采用的弹簧为接地弹簧,编码思路类似,但是略有不同,毕竟Abaqus不如Ansys这么面向工程,不过它更科研,功能也更强大,结果也更可靠。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删