如何在Fortran中读/写矩阵?

时间:2016-07-14 15:15:55

标签: matrix fortran

下面有一个简单的Fortran代码,我从文本文件中读取一个矩阵,然后将其传递给子程序。但是当它在子例程中被读取时,它会给出一个垃圾值。我似乎无法弄清楚代码的错误是什么?

program main
implicit none
real, dimension(:,:), allocatable :: mat
open (unit=99, file='inp.txt', status='old', action='read')
allocate(mat(2,2))
read(99, *), mat
CALL fun(mat)
end

subroutine fun(mat)
dimension mat(2,2)
write(*,*) mat
return
end

矩阵mat作为[2 4; 2 10]读入,但在子程序中显示时,它会显示[1073741824 1082130432; 1073741824 1092616192]

1 个答案:

答案 0 :(得分:2)

如果在Fortran中使用隐式变量声明,变量以IJKLM或{{1}开头}表示整数(默认情况下)。

由于在主程序范围内只有N但子例程不在,implicit none数组real在子例程中被解释为整数。因此垃圾。

在子例程中简单地将mat声明为mat可以解决您的问题。