本文摘要(由AI生成):
本文主要介绍了0D/1D单元的概念,以及如何使用OptiStruct求解器进行质量点和弹簧单元的建模。质量点单元用于简化复杂零件,弹簧单元用于模拟弹簧阻尼器和各种零件之间的连接关系。在HyperMesh中,用户可以通过1D > Elem types面板设置单元类型,并通过1D > masses面板创建质量点单元。弹簧单元通常使用零长度具有6方向刚度的cbush单元,用户可以通过1D > springs面板创建cbush单元,并设置各个方向的刚度/阻尼/质量等信息。
外表越简单,内涵越丰富,说的大概就是0D/1D单元吧。这部分内容涉及到很多求解器的概念,考虑到不同求解器有不同的0D/1D单元,本文以OptiStruct求解器为例,结合实例为大家形象地讲解。
0D单元
简单地说,0D单元就是一个点。
为什么需要这个点呢?
有可能是为了减少计算量,希望把实际中的一个不重要的复杂零件简化为一个质量点,只考虑零件的质量和惯量(忽略该零件的刚度、形状等特性)。也有可能是把实际中的一个焊点/螺栓/铆钉/粘胶/销简化为一个初始长度为0的数学弹簧或者将一个弹簧阻尼器简化为一个数学上的初始长度为0的弹簧阻尼器。
质量点单元
本文只能告诉你怎么简化,至于该不该简化是工程师应该想的事。
质量是质点或质点系平动惯性的度量:
F=ma
质点系的质量就是各个质量的算术和
转动惯量是质点或质点系转动惯性的度量
J = m / α
质点系的惯量计算方法如下(对坐标轴)
当然,以上公式了解一下就行,如果你有一个2D或者3D模型,赋好材料属性后HyperMesh可以直接获取一个零件的质量和惯量。
得到的信息如下(多个页面):
第一个页面是质量与惯量信息,其中惯量是基于全局坐标系计算得到的。
第二个页面是第一页信息的张量表示
注意!
右下3x3矩阵的非对角线元素值是Ixy,Ixz,Iyz的相反数;
第三个页面是在质心位置平行于全局坐标系方向计算的相应值(张量表示);
同样的,6x6矩阵的右下3x3矩阵的非对角线元素取的是Ixy,Ixz,Iyz的相反数。
获得这些值后如何创建一个质量点来替代实际零件呢?
可以按照以下设置进行 ⬇
首先,为了告诉软件这个点具体表示什么(质量点还是0长度弹簧等),需要用户进入1D > Elem types面板,进行单元类型设置。
CONM2表示质量点单元
选好单元类型后,进入1D > masses面板,进行质量点单元的创建。
默认情况下,按上述方法创建的质量点是没有惯量的,如果需要考虑惯量,可以使用工具栏上的card edit按钮(见下图)进行修改。
下图中没有选择CID_options,也就是使用默认的质心位置为坐标系原点,坐标轴方向平行全局坐标系。这时只需要设置质量大小和3x3的惯量矩阵(副对角线的两个3x3子矩阵全为零)。数值的大小直接取summary第三页的最后一个矩阵中的值即可(如果从6x6矩阵的右下角3x3矩阵取值则需要加上负号)。
如果你的惯量数据是在某个特定坐标系(通常就是主惯性轴)下测得的,建议设置一个局部坐标系(当前版本HyperMesh界面下不支持该操作,需要编辑fem文件)并输入I11,I22,I33。
弹簧单元
另一种常用的0D单元是弹簧单元,目前OptiStruct中最常用的弹簧单元是零长度具有6方向刚度的cbush单元。用于模拟弹簧阻尼器以及各种零件之间的连接关系(固接,铰接及各种其它运动副)。
Cbush单元比较复杂,OptiStruct中的关键字如下
用户需要指定:
1. 两个节点,通常要求这两个节点的空间位置相同(否则求解器会报警告)
2. 属性,包括各个方向的刚度/阻尼/质量等信息
3. 方向矢量,各种刚度等参数都是在该方向下定义的,最简单的方法是指定一个局部坐标系。
接下来通过具体的例子进行讲解~
例1 |
模拟弹簧阻尼器 |
输入模型如下图:
模型中有2个RBE2单元(刚性单元,后面马上就讲到了),独立节点都在中间位置(坐标完全一致),模型已经在中间位置定义好一个直角坐标系。
Step 1. 创建pbush属性,除了K3方向外的其余5个方向都定义为刚性
Step 2. 激活重复对象选择功能(快捷键o或者下拉菜单Preferences > graphics)
Step 3. 进入面板区1D > springs创建cbush单元,设置如下
注意!
面板里面的两个node要分别选择两个不同的节点,方法是在节点位置点击后会出现下图中的圆形图标,这时将鼠标缓慢移动到要选择的节点位置附近,然后再次点击鼠标左键即可选中。
例2 |
模拟球铰 |
重复上例中的Step1至Step3,只需在Step1中修改pbush的刚度选项如下,其它设置完全一样,即为球铰。
这里的转动刚度设定值0.001是随意给定的,该值只要足够小,在实际中可忽略不计即可,等效于释放了该方向自由度。但若给定太小的刚度值(比如1e-6以下)可能导致刚度矩阵病态。
实际结构中的其它各种约束条件都可以通过类似的自由度释放的方式来实现。比如圆柱副、平面副、万向节等。
需要注意的是:在线性静力分析中,平面副之类的多自由度铰,如果设置不当,会引发求解器的刚体 位移问题。
实际上,在非线性工况下OptiStruct还提供了一个更加便捷的铰链创建工具——JOINTG(2017.3以后版本)
HyperMesh对应的界面在面板区1D > joints
某些铰链需要通过PJOINTG属性定义相关的参数
相关的关键字示例如下:
例4 |
深沟球轴承建模 |
典型的深沟球轴承结构如下图,是传动系统精确建模的关键之一,通常内圈和外圈采用实体建模,滚子采用弹簧单元进行简化。考虑到实际的滚子是接触传力,所以应该采用抗压不抗拉的非线性弹簧单元进行建模(非线性刚度,所以必须是非线性工况)。
根据接触传力的特点:
1. 接触面的力的方向垂直于曲面法向
2. 滚子受力若要平衡,两端的力必须要在同一条直线上
取一个滚子位置演示如何在HyperMesh中进行建模
Step 1. 从整体模型中取出一个滚子的部分
Step 2. 沿着这个部分的中心位置切开,并按照弹簧的数量撒点(假定是10根弹簧,弹簧的刚度参数需要通过实验对标得到具体值)
Step 3. 创建弹簧所在位置的线,在geom > lines面板里的工具从边上的点沿着中心点方向拉伸。
结果如下:
Step 4. 创建弹簧的位移-力曲线
Step 5. 创建pbush1D属性
注意!
这里的K用于线性静态分析/模态分析等线性工况(这时cbush1D会自动转化为cbush)
Step 6. 将spring单元类型为cbush1D
Step 7. 划分单元,每条线一个单元
结果如下:
需要设置非线性迭代卡片,输出卡片、工况等关键字才能起作用。
RBE2单元
RBE2是刚性单元,在1D > rigids面板创建
Calculate node也可以切换为选择任意一个模型中的点(通常是不属于任何网格的节点)
右侧的6个自由度选项是控制从属节点的自由度(独立节点总是具有6个自由度)
RBE2常用于载荷加载和模型连接,也经常和其它单元组成复杂焊点
RBE3单元
RBE3是加权单元,加权的方式取决于各个从属节点weight的值
RBE3在1D > rbe3面板创建
RBE2转换为RBE3
使用1D > config edit面板
RBE3转换为RBE2
使用1D > config edit面板
1D单元
1D单元有杆和梁两大类
最简单的1D单元是杆单元,杆对应于实际结构中的绗架,典型结构如下图柳州白沙大桥的拉索
杆单元可以抗拉、抗压、抗扭,但是不能抗弯,所以定义杆单元的时候需要提供材料、截面形状。
在HyperMesh中创建杆单元的步骤如下
Step 1. 创建材料
Step 2. 创建截面
Step 3. 创建属性
Step 4. 将属性赋给component
Step 5. 在面板区1D > rods面板创建杆单元
这样就创建了一个杆单元
接下来做一个有趣的例子。
模型中绿色的球是只是为了显示目的
除了crod,杆单元还有一些变种,比如:
1. 自带截面的ctube管单元
2. 两头自带连接功能的cweld焊点单元等
Cweld是一种强大的单元,可以连接:
单元-单元
点-单元
点-点
如果焊点直径超过单个被连接单元的尺寸,还可以指定一片单元与另一片单元的连接。
Cweld单元通常都是批量创建,放在后面介绍焊点模块的时候再介绍具体操作。
其它更复杂的无法用杆单元简化的情况则需要使用梁单元,梁单元在土木工程、重型机械、航空、船舶等行业被大量使用,比如鸟巢的钢结构需要使用梁单元进行模拟,梁单元的内容将在下一期进行介绍。