ncnt = 0 !计数器,非零元素的个数
do i = 1,n
do j = 1,n
if (A(i,j) /=0) then
ncnt =ncnt +1
endif
enddo
enddo
allocate(vec(ncnt))
ncnt = 0
do i = 1,n
do j = 1,n
if (A(i,j) /=0) then
ncnt =ncnt +1
vec(ncnt) = A(i,j)
endif
enddo
enddo
program www_fcode_cn
implicit none
integer , allocatable :: a(:) , b(:)
allocate( a(9) )
a = [1,2,0,0,4,0,0,0,8,0]
! 如果你的编译器不支持,请加入以下语句
!allocate( b( count(a/=0) ) )
b = pack(a,a/=0)
write(*,*) b
end program www_fcode_cn
pasuka 发表于 2015-12-5 09:17
http://people.sc.fsu.edu/~jburkardt/c_src/csparse/csparse.html
Tim Davis写的基于C的稀疏矩阵计算库, ...
不可压缩 发表于 2015-12-7 20:03
我用的就是稀疏矩阵求解器,pardiso。
我要先把稀疏矩阵 A 计算(组装)出来,然后存储成pardiso需要的形式, ...
fcode 发表于 2015-12-8 08:30
我并没有安装所有的编译器,所以也不知道哪些需要,哪些不需要。
但这个用法是 Fortran2008 语法,据我所 ...
不可压缩 发表于 2015-12-7 20:05
没这么大野心啊,我是搞有限元的,求解只是一个工具。
感谢提供的信息
pasuka 发表于 2015-12-10 07:24
可惜了,搞不好总刚还是一维变带宽存储或者二维等带宽存储?
CSR、CSC和COO的说明与转换程序,ivf的帮助 ...
不可压缩 发表于 2015-12-15 21:29
有兴趣我们可有交流一下。
我现在的方法是一行一行地组装总刚,依次将该行的非零元素存入上文提到的 vec ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |