整体分析就是将有限元模型中离散的单元通过节点连接恢复到原始结构整体。整体分析的目的就是确定结构的总势能,从而得到结构的总刚度矩阵和总的外载荷矢量。
单元的总势能包括应变能和外力势能两部分,采用单元节点位移矢量表示的单元的总势能形式为
因为能量是标量,可以直接将每个单元的势能相加得到结构的总势能。所以结构的总势能可表示为
将单元的应变能和外力势能的表达式代入式(3.40),得
单元的势能都是由单元的节点位移矢量来表述的,虽然给出了总势能的计算公式(3.41),但不同单元的节点位移 δ e 随着节点编号而不同,且单元的 δ e 暂时未知,因此,式(3.41)尚无法由计算机实现运算。
为了完成式(3.41)的计算,引进一个新的矢量——结构的节点位移矢量,或称总的节点位移矢量。总的节点位移矢量 δ ,是将结构的所有节点位移分量按着节点编号的顺序,由小到大依次排列,组成包含所有节点位移分量的有序排列的矢量。如果有限元模型中共有 n 个节点,则平面问题结构的节点位移矢量就有2 n 个元素,记为
δ ={ u 1 v 1 u 2 v 2 … u n v n } T
显然,任何一个单元的节点位移矢量 δ e 都是结构的节点位移矢量 δ 的真子集,即 δ e ⊂ δ 。
在式(3.41)中,如果用结构的节点位移矢量 δ 来替代单元的节点位移矢量 δ e ,并且将每个单元的单元刚度矩阵(以下简称单刚)及等效节点载荷矢量做相应的调整,保证原乘积不变。替代后,所有单元的节点位移矢量就统一起来了,使计算得以简化,式(3.41)可进一步写成
若令 K =∑ K e 表示结构的总刚度矩阵, P =∑ P e 表示结构总的体力矢量, 表示结构总的面力矢量, P 0 =∑ P 0 e 表示结构总的集中力矢量, 表示结构总的载荷矢量,则结构的总势能可以写为通式:
计算结构的总势能时,用结构的节点位移矢量 δ 来替代单元的节点位移矢量 δ e 就可以得到式(3.42)。为了满足矩阵的可乘条件,式中的 K e 不可能再为原来的6×6阶矩阵,而必须扩展到与 δ 相匹配的2 n ×2 n 阶,最后将扩展后的单刚累加起来,就得到结构的总刚度矩阵。
刚度矩阵的扩展过程是,先将单元刚度矩阵 K e 按其3个节点进行分块,形式为
其中, K rs ( r , s = i , j , m )为2×2阶子矩阵。节点 i 、 j 、 m 所对应的具体位置的元素应保持原来的数值不变,而其余各个位置均用0填位,以保证单元的势能不变。
实际操作时,不必将单刚扩展成式2 n ×2 n 形式后再累加,而是将单刚分块后的子矩阵 K rs 根据其下标 r 、 s 的实际编号,按照统一的节点编号顺序,直接“对号入座”叠加到用于存放整体刚度矩阵元素的二维数组中 r 、 s 所对应的位置。依次叠加单刚的9个子矩阵,完成一个单刚的组装。逐个单元进行叠加,最终得到结构的总刚度矩阵。
不失一般性,设单元 e 的 i 、 j 、 m 分别为2、8、5,则单元刚度矩阵划分的子矩阵下标为具体编号,将单元 e 的矩阵式(a)中的元素叠加到结构的总刚度矩阵,得到
式(b)的矩阵中,带上标的元素表示本单元叠加到总刚度矩阵中的数值,不带上标元素表示总刚度矩阵中此前已经存在的数值。应注意,单元刚度矩阵的各子矩阵 K rs 在总刚度矩阵中的位置由节点编号确定,不再保持原来的相对位置关系。依次叠加全部单元,数组中的元素就是结构总刚度矩阵的元素。特别强调一点,结构总刚度矩阵的集成或组装过程是累加计算过程,不是赋值,尤其是在编程时更应注意这一点。
通过单元刚度矩阵组装结构总刚度矩阵一个完整过程,会发现结构总刚度矩阵有些位置始终未添加数值,有的位置添加一次、两次,还有的位置添加多次,这不是偶然现象,添加次数与有限元模型网格划分及节点编号有关。结构的总刚度矩阵中,主对角线位置的添加次数与该节点周围的单元数相同;非主对角线位置添加一次,说明对应的两个节点同在一个单元内的次数为一次,即这两个节点的连线为边界单元的边界边;非主对角线位置添加两次,说明对应的两个节点的连线为内部两个单元的公共边;未添加数据的空位置,则说明这两个节点不共单元,即这两个节点不直接连线。对于平面问题,非主对角线位置最多添加两次。
结构总刚度矩阵是由单元刚度矩阵集合而成,它与单元刚度矩阵有类似的物理意义。结构总刚度矩阵任意一个元素 K ij 的物理意义是,结构模型中第 j 节点位移量为单位值而其他节点位移皆为0时,需要在第 i 节点位移方向上施加的节点力的大小。
(1)结构总刚度矩阵具有对称性和奇异性 有限元模型是离散结构,是单元的集合体,每个单元对结构都起一定的作用,该性质是由单元刚度矩阵的对称性和奇异性决定的。
(2)结构总刚度矩阵的大型和稀疏性 连续体离散为有限个单元体,为保证计算精度,节点数多,决定结构总刚度矩阵的阶次高,属于大型矩阵。单元通过节点相互联系,与某节点相关的单元只是围绕在该节点周围的极少几个单元。两个节点之间直接连线,或者说两个节点同处在一个单元中,这两个节点之间存在相关性,结构总刚度矩阵中相关节点所对应的元素为非零元素,不相关节点所对应的元素为零元素。虽然结构被划分的单元总数很多,但实质上节点之间存在相关性的数目却很少,因此刚度矩阵中非零元素很少,零元素很多,这就使结构总刚度矩阵表现为稀疏性。
(3)结构总刚度矩阵中非零元素呈带状分布 只要节点编号合理,且单元内节点的编号接近,相关联节点所对应的非零元素就集中在以主对角线为中心的一条带状区域内,即具有带状分布的特点,所有单元的节点编号越接近,带状区域越窄。
因为结构总刚度矩阵是对称的大型稀疏矩阵,所以可用上三角或下三角矩阵表示;由于矩阵零元素并不参与运算,如果合理安排存储空间,则只需保存主对角线一侧带状区域的元素,忽略带状区域以外的所有零元素。采用半带存储技术可节省计算机内存,避免频繁读取零数据,减少机时,提高计算速度,这种方法在大型程序中广泛采用,但编程难度更大。感兴趣的读者可查阅相关资料,了解大型矩阵的存储与计算技术。
结构总载荷矢量的集成过程与结构总刚度矩阵的集成过程相似,平面问题的结构总载荷矢量共有2 n 个元素。具体过程为:
1)设定一个用于存储结构总载荷的列矢量,其大小及排列顺序与结构总的节点位移矢量一致,为
F ={ F x 1 F y 1 F x 2 F y 2 … F xn F yn } T
2)集中力只在少数点上存在,其作用点通常为节点,按作用点的编号及其作用方向直接将集中力叠加到结构总的载荷列阵所对应的位置;按集中力个数循环,累加所有集中力。如果集中力作用点不是节点力,则需要转化为节点力。
3)对于分布在边界上的面力,先求出每个有面力的边界单元的等效节点载荷,再按边界节点的编号累加到结构总的载荷列阵所对应的位置;按有面力的边界单元循环,累加所有面力的等效节点载荷。
4)体力分布于整个求解区域,需要对每个单元都要循环计算相应各节点的等效节点载荷,再按节点编号叠加到结构总的载荷矢量所对应的位置,每个节点的叠加次数与该节点周围的单元数相同。体力等效节点载荷的计算与组装到整体载荷列阵的过程,必须通过程序实现。
外载荷有固定载荷和可变载荷两种形式。固定载荷就是载荷的大小及作用位置不变,如结构自重;可变载荷就是载荷的大小及作用位置均可变化,如桥梁上行驶的汽车对桥梁的作用位置是随时变化的。面力、集中力作用在结构的局部,结构在实际使用或工作过程中,面力或集中力作用的区域及大小都有可能改变,这些改变将影响结构内部应力的分布状态。因此在进行结构设计和分析计算时,要把可能发生的各种载荷组合都列出来,每一种载荷组合称为一种载荷工况。每个工况都需要一个总的载荷矢量,如体力与面力组合、体力与集中力组合、体力与面力和集中力组合等,最终以最不利工况作为结构设计分析的控制依据。