我们知道,集成之后的整体刚度矩阵是一个对称的稀疏带状矩阵,如图1所示。这样的矩阵包含大量的0元素,占用大量的存储空间。为了节约存储空间,可采取一些方法对刚度矩阵压缩存储。
一维变带宽存储是将变化的带宽内的元素按一定的顺序存储在一维数组内。一维变带宽存储可分为按行存储和按列存储,其中按列存储方式是指每一列从主对角元素至最高的非零元素,如图2所示线框内所包含的元素。由各列中行号最小的非零元素组成的折线称之为高度轮廓线。
为了将轮廓线内的系数紧凑地存储在一维数组中,还需要有辅助的数组帮助记录元素在原稀疏矩阵中的位置,辅助数组M(n+1)用以记录主对角元素在一维数组中的位置。对图2中的稀疏矩阵可采用一维数组A(21)来存储,原矩阵元素与一维数组元素的对应关系可以通过数组M建立起来。
M = [1 2 4 6 10 12 16 20 22]
注意,M的最后一个元素无实际意义。数组M除了反映对角元素在一维数组中的位置外,还可以用以计算每列元素的列高N,即每列元素的个数,以及每列元素的起始行号r。
N = M(i+1)-M(i)
r = i - N +1
例如,求第7列元素个数及非零元素的起始行号,有
N = M(8)-M(7)= 20-16 = 4
r = 7-4+1 = 4