我遇到了一些Fortran代码,很难理解。
1.代码/ (i1,i1=0,nn-1) /
的结构名称是什么?
如何直接在代码中打印它以查看其内容?
2.我正在寻找方法来改变nn
的值而不重新编译,我应该怎么做? nn
应该是数组的长度omega
。
3.如何更改nn
以设置omega
的长度? 我的意思是当我没有parameter (nn=20)
了。关于一段Fortran代码的一些问题,Fortran新手段
program test_20140919
! test
implicit none
integer nn
parameter (nn=20)
real omega(nn)
call test_real(nn, 2.0, 4.0, omega)
print *, omega
end program test_20140919
!c ===
subroutine test_real(nn, o1, o2, omega)
integer nn
real o1, o2
real omega(nn)
print *, nn
omega = o1 + (o2*o1)*(/ (i1,i1=0,nn-1) /)/real(nn-1)
print *, real(nn)
return
end
我在终端中用gfortran test.f -ffree-form -o test
行编译了这个。
UPD的代码由于来自弗拉基米尔˚F答案 修订版本:
module subs
implicit none
contains
subroutine test_real(nn, o1, o2, omega)
integer nn
real o1, o2
real :: omega(:)
if (.not. allocated(omega)) allocate(omega(nn))
omega = o1 + (o2*o1)*(/ (i1,i1=0,nn-1) /)/real(nn-1)
print *, real(nn)
end subrotine
end module
program test_20140920
! test
use subs
implicit none
integer nn
real, allocatable :: omega(:)
read(*,*) nn
allocate(omega(nn))
call test_real(nn, 2.0, 4.0, omega)
print *, omega
end program test_20140920
您也可以使用命令行输入重定向('>')将文本文件重定向为标准输入。程序将从文件中读取。 – 2014-09-20 17:33:07