多维数组的 Fortran 子数组
Fortran sub arrays for multidimensional arrays
这可能很简单,
如果我在 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)
我认为您已经将 A
的正确切片写为矩阵,但为了清楚起见:
让我们用伪参数 mat
又名
定义一个函数 f
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)
这可能很简单,
如果我在 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)
我认为您已经将 A
的正确切片写为矩阵,但为了清楚起见:
让我们用伪参数 mat
又名
f
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)