首页 > 解决方案 > 多维数组的 Fortran 子数组

问题描述

这可能很简单,

如果我在 Fortran 90 中有一个 3D 数组

REAL A(2,2,2)

如果我将此数组传递给函数

call function(A(:,1,:))

等效的二维数组会是什么样子?

是吗

A(1,1,1) A(1,1,2)

A(2,1,1) A(2,1,2)

标签: arraysfortran

解决方案


我认为您已经编写了正确的矩阵切片,A但只是为了清楚起见:

让我们定义一个f带有虚拟参数的mat函数

function f(mat)
  real :: mat(2,2)
  ...
end function

然后像下面f(A(:,1,:))这样的调用mat

mat(1,1) = A(1,1,1)
mat(2,1) = A(2,1,1)
mat(1,2) = A(1,1,2)
mat(2,2) = A(2,1,2)

推荐阅读