Re: [请益] 如何将矩阵值传入副程式?

楼主: laa7352 (Laa)   2014-10-23 09:48:00
请参考如下
program main_test
real,allocatable :: aaa(:,:,:,:)
real,allocatable :: bbb(:,:,:,:)
integer ii,jj,kk
! ii,jj,kk=.....
allocate ( aaa(ii,jj,kk,3) )
allocate ( bbb(ii,jj,kk,3) )
do i=1,kk
...
aaa(...)=...
bbb(...)=...
..
enddo
call sub_test (aaa,bbb,ii,jj,kk)
stop
end
subroutine sub_test(aaa,bbb,ii,jj,kk)
real :: aaa,bbb
integer :: ii,jj,kk
dimenstion aaa(ii,jj,kk,3)
dimenstion bbb(ii,jj,kk,3)
print*, aaa,bbb
return
end
※ 引述《zx168zx (zx168zx)》之铭言:
: 小弟想请益一下
: 如何将主程式所设定好的矩阵传入副程式
: 小弟的矩阵是四维的
: 一开始先设定allocatable的四维可变矩阵
: allocatable :: aaa(:,:,:,:)
: allocatable :: bbb(:,:,:,:)
:
作者: screase (crossstep)   2014-10-23 10:02:00
副程式内要先宣告real :: ii,jj,kk才能接收参数另外,3这个常数参数传递方式错了 必须用变量去接收实际上也没有传递3的需要 因为直接在宣告大小里写出就好抱歉 是宣告integer :: ii,jj,kk才对
作者: zx168zx (zx168zx)   2014-10-23 16:08:00
谢谢两位 问题已经解决了 之前我没有定义到矩阵跟i j k
作者: Casimir   2014-11-02 03:13:00
Use "intent" attribute in the subroutine will saveyou a lot of trouble.

Links booklink

Contact Us: admin [ a t ] ucptt.com