自己手撸有限元代码的时候,需要将自己计算的一些数据与商软对比,如全局/单元刚矩阵、质量矩阵和荷载列阵等等,我在早期的帖子中详细说过刚度矩阵、质量矩阵和阻尼矩阵的导出方法,有兴趣的可以阅读早期的帖子。
本次帖子主要讲解在ABAQUS平台如何修改INP文件导出节点的荷载列阵。
建立尺寸为2x2x10的长方体,设置单元尺寸为0.5x0.5x0.5,划分后的网格为 边界条件为一端固定。另一端施加切向面力,面力大小为1,边界条件示意图为
施加动荷载,幅值曲线表达式为 ,计算总时长为10,增量步长为0.01.总计增量步数目为1000,下图为荷载的幅值曲线
ABAQUS无法通过GUI界面输出节点荷载列阵,必须修改INP文件中的关键字。
废话不多说,下面是分析步的所有关键字。
*Step, name=Step-1, nlgeom=NO, inc=1000
*Dynamic,direct
0.01,10.,
*Dsload, amplitude=Amp-1
Surf-1, TRSHR, 1., 1., 0., 0.
*File Format, ASCII
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=EMass, Output File=User Defined, mass=yes
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=EStiffness, Output File=User Defined, stiffness=yes
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=dload, Output File=User Defined, dload=yes
*Restart, write, frequency=0
*Output, field, variable=PRESELECT, frequency=1
*Output, history, variable=PRESELECT
*End Step
其中,最重要的有三行
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=EMass, Output File=User Defined, mass=yes
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=EStiffness, Output File=User Defined, stiffness=yes
*Element Matrix Output, Elset=Part-1-1.Set-1, File Name=dload, Output File=User Defined, dload=yes
前两行输出了刚度矩阵和质量矩阵,最后一行输出单元节点的荷载列阵。计算结束之后,INP文件所在的文件夹会出现“DLOAD.mtx”文件,这里面就是节点荷载信息,下面截取mtx文件的部分内容 图中给出了3组数据,主要涉及到编号为1、2和3的单元,注意并不是这3个单元的所有节点都有节点荷载,下面以第一个单元为例讲解
**
** ELEMENT NUMBER 1 STEP NUMBER 1 INCREMENT NUMBER 1
** ELEMENT TYPE C3D8R
*USER ELEMENT, NODES= 8, LINEAR
** ELEMENT NODES
** 106, 107, 112, 111, 1, 2, 7, 6
1, 2, 3
** LOAD VECTOR FROM ELEMENT DISTRIBUTED LOADS. LOAD CASE 1
***CLOAD
** 1, 1, 6.24990E-04
** 1, 2, -6.41966E-37
** 2, 1, 6.24990E-04
** 2, 2, -1.72014E-37
** 5, 1, 6.24990E-04
** 5, 2, -2.39585E-36
** 6, 1, 6.24990E-04
** 6, 2, -6.41966E-37
上面的信息包括了当前分析步和增量步位置,以及当前单元的所有节点编号, 关键字下面就是具体的节点荷载列阵,一共有3列数据,第1列为施加荷载的节点编号,第2列是施加荷载的自由度,第3列是荷载数值。
注意,在这个帖子的算例中,第二个自由度没有施加动荷载,但是这里依然有极小量数值,我猜测可能是因为软件算法为了数值平衡设置的一些数值,我们不用管。
并不是所有的单元都会有节点荷载,但是ABAQUS在没有节点荷载的位置依然输出单元的有些信息。如
**
** ELEMENT NUMBER 271 STEP NUMBER 1 INCREMENT NUMBER 354
** ELEMENT TYPE C3D8R
*USER ELEMENT, NODES= 8, LINEAR
** ELEMENT NODES
** 458, 459, 464, 463, 353, 354, 359, 358
1, 2, 3
** LOAD VECTOR FROM ELEMENT DISTRIBUTED LOADS. LOAD CASE 1
***CLOAD
可以发现,这里只输出了单元的一些基本信息,不包括荷载列阵。我猜测这是内部代码没有对节点类型进行分类,直接在一个循环中索引了所有的节点,当检测到荷载列阵为空的时候就直接进行下一个单元。
帖子讲解了在ABAQUS平台输出节点荷载列阵的方法。因为ABAQUS的GUI界面没有提供键鼠操作,因此需要修改INP文件,上面给出了具体的修改方法。