Fortran Coder

查看: 10751|回复: 9
打印 上一主题 下一主题

[求助] 关于动态数组的问题

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2015-12-5 08:44:47 | 显示全部楼层
稀疏矩阵最好使用专门的存储结构和求解器。

如果你真的要自己存储,可以试试这样:

[Fortran] 纯文本查看 复制代码
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

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-12-8 08:30:05 | 显示全部楼层
不可压缩 发表于 2015-12-7 20:03
我用的就是稀疏矩阵求解器,pardiso。
我要先把稀疏矩阵 A 计算(组装)出来,然后存储成pardiso需要的形式, ...

我并没有安装所有的编译器,所以也不知道哪些需要,哪些不需要。
但这个用法是 Fortran2008 语法,据我所知,并不是所有编译器都支持到。
你应该自己去尝试,如果无法运行,就加上后面的分配语句。

a 可以是任意维度。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-19 21:20

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表