ABAQUS应用04——集中质量的添加方法
文章目录
- 0. 背景
- 1. 集中质量的编辑
- 2. 约束的设置
- 3. 总结
0. 背景
混塔ABAQUS模型中,机头、法兰等集中质量的设置是模型建立过程中的一部分,需要研究集中质量的添加。
1. 集中质量的编辑
集中质量本身的编辑没什么难度,我已经用Python代码将其实现。具体代码片段如下:
def add_point_mass(PointMassInfo):'''通过参数化:param PointMassInfo: txt2caeinputdata返回的PointMass信息,[(height1, mass1),(height2, mass2),...]:return:'''a = m.rootAssemblyfor i, item in enumerate(PointMassInfo):RP_i = a.ReferencePoint(point=(0.0, 1000*item[0], 0.0))refPoints_i = (a.referencePoints[RP_i.id],)region = a.Set(referencePoints=refPoints_i, name='Set-PM' + str(i+1))a.engineeringFeatures.PointMassInertia(name='Inertia-'+ str(i+1), region=region, mass=item[1], alpha=0.0, composite=0.0)
2. 约束的设置
集中质量的添加必须配合约束的设置,可以通过一些手段来检验集中质量添加是否成功,具体方法可以点击这里。感谢原作者分享!
这里将作者的总结放在下面:
此外,还需要注意,在编辑约束的时候,需要设置Coupling类型。我的塔架结构将其设为运动就会出问题,设为连续分布就没有问题。具体原因我现在并没有完全弄明白,如果有懂的网友可以留言指导一下,先行谢过!
3. 总结
事实上,编辑约束部分也可以用代码实现。不过因为我现在遇到了其他更重要的问题,所以在确定集中质量的设置方式以后,并没有在这里深究。等后面模型跑通了,在考虑这部分内容的改进。
--------------------------20240220----------------------------------
完整代码如下,已包含添加约束的命令,适用于多个集中质量的添加
def add_point_mass(a, PointMassInfo, PM_instance_list, refpoint_list, refheight_list):''':param a: 装配体名称:param PointMassInfo: txt2caeinputdata返回的PointMass信息,[(height1, mass1),(height2, mass2),...]:param PM_instance_list: 用于给集中质量添加约束的实例的名称列表:param refpoint_list: 集中质量添加约束区域的参考点列表,用于选择约束区域:param refheight_list: 集中质量添加约束区域的高度列表,用于选择约束区域:return:'''for i, item in enumerate(PointMassInfo):RP_i = a.ReferencePoint(point=(0.0, 1000*item[0], 0.0))refPoints_i = (a.referencePoints[RP_i.id],)PM_setname = 'Set-PM' + str(i+1) # 设定集中质量参考点的region = a.Set(referencePoints=refPoints_i, name=PM_setname)# 质量信息按照kg为单位给出,ABAQUS中需要按照吨给出,此处应进行单位换算a.engineeringFeatures.PointMassInertia(name='Inertia-'+ str(i+1), region=region, mass=item[1]/1000, alpha=0.0, composite=0.0)controlPoint_region = a.sets[PM_setname]s1 = a.instances[PM_inatances_list[i]].faces # 集中质量需要绑定的实例的名称,获取其所在面的集合side1Faces1 = s1.findAt(((refpoint_list[i], 1000*refheight_list[i], 0),))surface_region = a.Surface(side1Faces=side1Faces1, name='m-sur-PM-'+str(i+1))m.Coupling(name='Constraint-PM'+str(i+1), controlPoint=controlPoint_region,surface=surface_region, influenceRadius=WHOLE_SURFACE, couplingType=DISTRIBUTING,weightingMethod=UNIFORM, localCsys=None, u1=ON, u2=ON, u3=ON, ur1=ON,ur2=ON, ur3=ON)