|
板凳
楼主 |
发表于 2023-12-14 20:26:45
|
只看该作者
十分感谢您的回答!对于接口处的数组,应该设置为传入数组的最大维度这样应该没错吧?问题在于,我在call subroutine前,输出
do j = 1, NLayer
do i = 1,sbnum(j)
write(*,*) j,i,TmpiSubblocks(1,i,j),TmpiSubblocks(2,i,j)
end do
end do
是有值的,然后
subroutine FiLLMatrix(sbtmp, untmp, atmp, amax, unmax, sbmax, cts, sbnum)
!为了将远近区块填充至所构建的矩阵中
implicit none
integer*4 :: unmax, amax, sbmax, cts
integer*4 :: untmp(2, unmax), atmp(2, amax)
integer*4 :: sbtmp(2, sbmax, NLayer)
integer*4 :: i, j, k, j1, j2, k1, k2, t
integer*4 :: BParam1(sbmax),sbnum(NLayer)
integer*4 :: row, coL
allocate(iSubblocks(sbmax,NLayer))
write(*,*) "FiLLMatrix",sbmax,NLayer
do i = 1,NLayer
do j = 1,sbnum(i)
write(*,*) i,j,sbtmp(1,j,i),sbtmp(2,j,i)
end do
end do
end subroutine !省略版
到这里sbtmp只能输出sbtmp(1,1,1)和sbtmp(2,1,1)的值,其余值为0,我实在想不明白这样为什么会出错。之前的代码是sbtmp(i,j),有值,为什么改成sbtmp(i,j,k)就出错呢?
我正尝试用假定形状传递。 |
|