重新定义一个大规模稀疏刚度矩阵

Reodrering a massive sparse stiffness matrix

提问人:BetaCaviar 提问时间:11/15/2023 更新时间:11/15/2023 访问量:30

问:

我使用其自由度和一些组装规则组装了一个巨大的稀疏刚度矩阵。为了进行有效的布拉格散射分析,我现在想根据 3 个区域对它们进行重新排序:内部、输入、输出。每个区域都由已识别的自由度填充。

在浏览了大量资源并试图充分理解它们之后,我得出的结论是必须使用反向 RCM。问题是我对图论一无所知,我需要一些帮助。以下截图代码是我认为可以对矩阵进行重新排序的代码(基于 MATLAB):

  1. 构造邻接矩阵 A = K ~= 0;

  2. 对邻接矩阵执行 RCM 重新排序 p_rcm = 符号(A);

  3. 创建一个排列向量,根据区域对节点进行排序 p_zone = [internal_nodes, input_nodes, output_nodes];

  4. 结合 RCM 排列和基于区域的排列 p_combined = p_zone(p_rcm);

  5. 根据组合排列向量对刚度矩阵重新排序 K_reordered = K(p_combined, p_combined);

有人可以告诉我这是否正确吗?如果不是,正确的方法或逻辑是什么?任何指向矩阵重新排序实际实现的资源都非常受欢迎。多谢

我没有尝试任何东西,因为我尝试处理的矩阵基于 3D 结构,每个节点都有 3 个自由度。因此,生成的矩阵是巨大的(20x20x20 立方体 = 27783 行和列)。

MATLAB 数学 稀疏 邻接矩阵

评论


答: 暂无答案