这篇博文将构建有限元全局刚度矩阵的算法描述为两个基本步骤:
[步骤1 ]用一对连通节点顶点共享的元素初始化一个表,如下图:

[步骤 2 ] 对于每个单元中的每个顶点,将单元刚度矩阵中的子矩阵复制到其在全局刚度矩阵中的适当位置,如下所示:

我的问题是,为什么需要第 1 步?我可以将局部元素顶点(索引为 1,2,3 - 如果从 1 计数)映射到(全局)节点,而无需在步骤 1 中创建表。或者我缺少什么?
这篇博文将构建有限元全局刚度矩阵的算法描述为两个基本步骤:
[步骤1 ]用一对连通节点顶点共享的元素初始化一个表,如下图:

[步骤 2 ] 对于每个单元中的每个顶点,将单元刚度矩阵中的子矩阵复制到其在全局刚度矩阵中的适当位置,如下所示:

我的问题是,为什么需要第 1 步?我可以将局部元素顶点(索引为 1,2,3 - 如果从 1 计数)映射到(全局)节点,而无需在步骤 1 中创建表。或者我缺少什么?
最终,您在步骤 1 中创建的矩阵是您要构建全局刚度矩阵的地方,它是所有单元刚度矩阵的直接求和。
这个全局矩阵将用于求解线性系统, 在哪里是您刚刚通过将步骤 2 中的所有单元刚度矩阵“添加”在一起而构建的全局刚度矩阵。
您可以初始化一个密集矩阵(即为每个可能的分配内存全局索引的组合)并使用隐式节点编号映射函数来满足步骤 1 的要求,但是许多 FEM 问题非常稀疏(即矩阵中非零的条目数量与条目),因此是一个稀疏矩阵,它尝试仅为非零条目分配内存(以及一些可用于确定哪个条目具有给定值的附加信息)。
为了有效地构造稀疏矩阵,您通常希望预先分配它需要的所有内存(类似于您如何预先分配一个密集矩阵,然后将值设置为您想要的值)。这样做需要您估计矩阵中的哪些条目可能不为零,因为稍微过度分配比分配不足要好。您可以通过找出哪个全局索引组合是任何局部单元刚度矩阵的一部分,只需将这些条目标记为可能非零,其他所有内容都保证为零。然后,您可以使用此信息构造一个稀疏矩阵。
您不必一定采用这种确切的方法,但这是在实践中实现有限元方法的一种常见方式,因为它相对容易理解和高效,当然您可以对这种方法进行额外的扩展/修改.