panzichao 发表于 2009-7-30 12:56:08

动态形成总体矩阵

在由单元矩阵组装到总体矩阵的时候,由于事先不能确定总体矩阵中的非零元个数,因此必须使用动态数组,我以前在C++中编写了类似的程序,当时使用的是vector类,实现起来比较方便,但是速度太慢了。于是想用fortran重新编写。为了把我遇到的问题说的更清楚,举一个具体的例子:
稀疏矩阵采用CSR格式存储
这个格式总共有三个数组
values保存所有的非零元数值
column保存所有非零元所在的列
rowIndex保存某行首个非零元在column中的位置

现在在计算总体矩阵的时候,比如说有一个非零元a(i,j),要把它存储到CSR格式中,该怎么处理?有没有现有的程序可以借鉴?

谢谢!

pasuka 发表于 2009-7-30 13:46:40

在由单元矩阵组装到总体矩阵的时候,由于事先不能确定总体矩阵中的非零元个数,因此必须使用动态数组,我以前在C++中编写了类似的程序,当时使用的是vector类,实现起来比较方便,但是速度太慢了。于是想用fortran重 ...
panzichao 发表于 2009-7-30 12:56 http://forum.simwe.com/images/common/back.gif
1、如果用分块行或者列压缩存储,非零元的个数是可以计算的,具体百度或者谷歌,要么上中国期刊网找,这样的中文文献就很多;
2、Fortran可以开动态数组,但是也要确定维数大小才行,lz 的要求除非用链表或者自己定义一个数据结构;
3、C++速度慢的话,应该和数据结构或者算法有关,盲目改Fortran未必真正合适。
页: [1]
查看完整版本: 动态形成总体矩阵