Advertisement

一维变带宽有限元刚度矩阵的C++实现(三)

阅读量:

有限元刚度矩阵的一维变带宽存储用C++实现(二)中,我们已成功将总体刚度矩阵[K]下三角部分的带内元素完整地存储至pGK数组之中,接下来将探讨如何从pGK数组中提取[K]中的任意元素。

要从存储了总刚矩阵[K]带内元素的一维数组pGK中获取总刚矩阵[K]的特定元素,关键在于确立总刚矩阵[K]第i行第j列的元素与pGK数组中对应位置之间的映射关系。基于[K]为对称矩阵这一特性,可以通过分析pGK数组中保存的下三角部分信息,进一步推导出上三角部分的相关数值。

(1)构建总刚矩阵[K]第GKi行第GKj列与pGK数组中相应位置之间的映射关系。

  1. 当处理的是[K]的下三角区域时,满足条件GKi > GKj。此时应按照行优先的方式提取[K]中的相关元素。

第GKi行主对角线元与当前目标元素之间的距离可表示为:iBuf = GKi - GKj;

对于那些已被存入pGK数组中的带内元素,

此时总刚矩阵[K]中位于第GKi行、第GKj列的元素在pGK数组中的索引位置可由以下公式计算得出:(其中,pDiag用于记录总刚矩阵[K]主对角线元在pGK数组中的索引)

pDiag[GKi]-iBuf = pDiag[GKi]-(GKi-GKj),其原理如示意图所示:

![](https://ad.itadn.com/c/weblog/blog-img/images/2025-

全部评论 (0)

还没有任何评论哟~