【发布时间】:2018-01-27 03:56:22
【问题描述】:
考虑下面的子程序
subroutine myProc(m,n,flag,X)
Integer, intent(in) :: m,n
logical, intent(in) :: flag
real(8), intent(out), allocatable :: X(:,:)
if (flag) then
allocate(X(m,n))
! some more code here
else
allocate(X(m-1,n))
! some more code here
end if
end subroutine myProc
!!!!!!!!!!!!!!!!!!!
另外,如何在程序中调用此过程?假设我写了
!... some code before
call myProc(5,6,.TRUE.,X)
我需要将 X 定义为 (4,6) 实数数组还是将可分配数组传递给子例程?
在 Fortran 95 中是否可以做到所有这些?
【问题讨论】:
-
欢迎。对于所有 Fortran 问题,请使用标签 fortran。矩阵和数组是有区别的。数组是某种类型的元素的结构化/索引集合。矩阵是来自线性代数的数学结构,它描述了向量空间基之间的变换。另请注意,
real(8)很丑陋,不可移植,并不总是意味着 8 字节或双精度。 -
感谢您向我解释什么是矩阵。另外,请您指出 real(8) 是不可移植的。关于我的实际问题,您的建议和丹的建议都有效。谢谢。