图1 整体刚度矩阵存储量
图2 单元刚度矩阵带宽表示方式
图3 一维变带宽存储方法示意图
注:
kv
当中;kv
中的位置存放在一维数组 kdiag
中,K矩阵中第 kv
中的地址 图4 《Programming the finite element method》 P41
直接刚度法 | 12*12 double |
预处理法 | 9*9 double |
一维变带宽+预处理法 | 1*39 double |
图5 直接刚度法存储整体刚度矩阵
图6 预处理法法存储整体刚度矩阵
图7 一维变带宽+预处理法存储整体刚度矩阵
代码
代码取自《有限单元法基础及Matlab编程 第二版》
% --------一维变带宽存储整体刚度矩阵------------
function kv = fsparv(kv,km,g,kdiag)
% FSPARV 函数功能:
% 集装总体刚度矩阵
% 输入:
% kdiag 主对角元素地址向量
% km 单元刚度矩阵
% g 单元每个结点的自由度编号,也即定位向量
% kdiag 主对角元素地址向量
% 输出:
% kv 总体刚度矩阵
% -----------------------------------------------------
idof = length(g); % 定位向量尺寸
for i = 1 : idof
k = g(i);
if k ~= 0 % 定位向量元素非零
for j = 1 : idof
if g(j) ~= 0 % 定位向量元素非零
iw = k - g(j); % 自由度号差值
if iw >= 0
ival = kdiag(k) - iw;
kv(ival) = kv(ival) + km(i,j);
end
end
end
end
end
end
谢谢你看完木木同学的分享,今日份阅读花费的流量+1M哈哈哈哈哈哈。
-End-
易木木响叮当
想陪你一起度过短暂且漫长的科研生活