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