概述 自己手撸有限元代码的时候,需要将自己计算的一些数据与商软对比,如全局/单元刚矩阵、质量矩阵和荷载列阵等等,我在早期的帖子中详细说过刚度矩阵、质量矩阵和阻尼矩阵的导出方法,有兴趣的可以阅读早期的帖子。 本次帖子主要讲解在ABAQUS平台如何修改INP文件导出节点的荷载列阵。模型介绍 建立尺寸为2x2x10的长方体,设置单元尺寸为0.5x0.5x0.5,划分后的网格为 边界条件为一端固定。另一端施加切向面力,面力大小为1,边界条件示意图为 施加动荷载,幅值曲线表达式为 ,计算总时长为10,增量步长为0.01.总计增量步数目为1000,下图为荷载的幅值曲线导出荷载列阵 ABAQUS无法通过GUI界面输出节点荷载列阵,必须修改INP文件中的关键字。 废话不多说,下面是分析步的所有关键字。*Step, name=Step-1, nlgeom=NO, inc=1000*Dynamic,direct0.01,10.,*Dsload, amplitude=Amp-1Surf-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文件,上面给出了具体的修改方法。来源:有限元先生