相关疑难解决方法(0)

更改fortran中的数组维度

基本上有两种方法可以将数组传递给Fortran 90/95中的子程序:

PROGRAM ARRAY
INTEGER, ALLOCATABLE :: A(:,:)
INTEGER :: N
ALLOCATE(A(N,N))
CALL ARRAY_EXPLICIT(A,N)
! or
CALL ARRAY_ASSUMED(A)
END PROGRAM ARRAY

SUBROUTINE ARRAY_EXPLICIT(A,N)
INTEGER :: N
INTEGER :: A(N,N)
! bla bla
END SUBROUTINE ARRAY_EXPLICIT

SUBROUTINE ARRAY_ASSUMED(A)
INTEGER, ALLOCATABLE :: A(:,:)
N=SIZE(A,1)
! bla bla
END SUBROUTINE ARRAY_ASSUMED
Run Code Online (Sandbox Code Playgroud)

您需要第二个显式接口,通常是通过使用模块.

从FORTRAN77开始,我习惯了第一种选择,如果你传递整个数组,我认为这也是最有效的.

显式形状的好处是我也可以调用子例程并将数组视为向量而不是矩阵:

SUBROUTINE ARRAY_EXPLICIT(A,N)
INTEGER :: N
INTEGER :: A(N**2)
! bla bla
END SUBROUTINE ARRAY_EXPLICIT
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种很好的方法来使用第二个假定的形状界面来做这种事情而不复制它.

fortran

14
推荐指数
3
解决办法
3万
查看次数

标签 统计

fortran ×1