Fortran Coder

查看: 11229|回复: 2

[文件读写] 求助数据写入到文本文件的格式问题

[复制链接]

13

帖子

6

主题

0

精华

熟手

F 币
127 元
贡献
70 点
发表于 2019-10-30 06:06:56 | 显示全部楼层 |阅读模式
需要将三列数据(ia,ja,acsr)输出至txt文件,单独输出一个变量时没有问题,三列同时输出的时候,ja是接在ia后面输出,acsr的值跟单独输出的时候也不一样。另,三列长度不同,ia为2401行,ja acsr为13320行。求指导如何正确输出文件。
[Fortran] 纯文本查看 复制代码
program converters
    implicit none
    
    ! Definition arrays for sparse matrix formats
    integer,parameter :: m=2400, n=2400, lda=2400, nzmax=13320
    integer :: ia(m+1), ja(nzmax)
    real :: adns(m,n) , acsr(nzmax) 
    
    ! Declairation of local variables:
    integer :: job(8), i, j, info, ibase1, ibase2, locat
    info = 0
    locat = 2
    ibase1 = 1
    ibase2 = 1
    job(2) = ibase1
    job(3) = ibase2
    job(4) = locat
    job(5) = nzmax
    
    ! Task1: densly matrix to csr
    open(11,file="Vollmatrix.txt")
    do i=1,m
        read(11,*) adns(i,:)
    end do
    close(11)
    job(1) = 0
    job(6) = 1
    call mkl_sdnscsr(job, m, n, adns, lda, acsr, ja, ia ,info)
    open(12,file="csr.txt")
    write(12,"(2x,'IA ;',2x,'JA ;',5x,'Value ;')")
    write(12,100) ia,ja,acsr
100 format(I6,2x,I6,E13.5)    
    close(12)
    
    end program converters

Vollmatrix.zip

179.94 KB, 下载次数: 4

file11

953

帖子

0

主题

0

精华

大师

F 币
180 元
贡献
73 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
发表于 2019-10-30 13:55:37 | 显示全部楼层
这是逻辑问题。三列长度不一样,不应该放在一起。否则后面你无法区分剩下2个数据是在哪一列?

长度一样的话:
[Fortran] 纯文本查看 复制代码
open(12,file="csr.txt")
write(12,"(2x,'IA ;',2x,'JA ;',5x,'Value ;')")
do i = 1 , nzmax
    write(12,100) ia(i),ja(i),acsr(i)
end do
100 format(I6,2x,I6,E13.5)   
close(12)

13

帖子

6

主题

0

精华

熟手

F 币
127 元
贡献
70 点
 楼主| 发表于 2019-10-30 21:16:19 | 显示全部楼层
vvt 发表于 2019-10-30 13:55
这是逻辑问题。三列长度不一样,不应该放在一起。否则后面你无法区分剩下2个数据是在哪一列?

长度一样的 ...

感谢指导
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-3-29 16:07

Powered by Tencent X3.4

© 2013-2024 Tencent

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