Re: [請益] 如何將矩陣值傳入副程式?

看板Fortran作者 (Laa)時間9年前 (2014/10/23 09:48), 9年前編輯推噓0(007)
留言7則, 3人參與, 最新討論串2/2 (看更多)
請參考如下 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(:,:,:,:) : ----中間計算ii,jj,kk-------- : allocate ( aaa(ii,jj,kk,3) ) : allocate ( bbb(ii,jj,kk,3) ) : 之後open六個檔案分別寫入aaa,bbb中 : 我是用 : do 1,kk : do 1,jj : do 1,ii : read(114,......) : read(115,......) : read(116,......) : read(117,......) : read(118,......) : read(119,......) : aaa(i,j,k,1) = 114的資料 : aaa(i,j,k,2) = 115的資料 : aaa(i,j,k,3) = 116的資料 : bbb(i,j,k,1) = 117的資料 : bbb(i,j,k,2) = 118的資料 : bbb(i,j,k,3) = 119的資料 : enddo : enddo : enddo : 把資料寫進去 像是四維資料庫的方式 : 然後我的subroutine需要用到我這個四維矩陣的值 : 但我現在不知道要如何將這個矩陣傳入 : 他在執行後出現 : error LNK2001: unresolved external symnol aaa@16 : error LNK2001: unresolved external symnol bbb@16 : 我有想過是不是要用interface 但看彭大的書好像是回傳在用 : 麻煩各位大大解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.30.15 ※ 文章網址: http://www.ptt.cc/bbs/Fortran/M.1414028883.A.114.html ※ 編輯: laa7352 (118.163.30.15), 10/23/2014 09:48:46

10/23 10:02, , 1F
副程式內要先宣告real :: ii,jj,kk才能接收參數
10/23 10:02, 1F

10/23 10:05, , 2F
另外,3這個常數參數傳遞方式錯了 必須用變數去接收
10/23 10:05, 2F

10/23 10:06, , 3F
實際上也沒有傳遞3的需要 因為直接在宣告大小裡寫出就好
10/23 10:06, 3F

10/23 10:08, , 4F
抱歉 是宣告integer :: ii,jj,kk才對
10/23 10:08, 4F
※ 編輯: laa7352 (118.163.30.15), 10/23/2014 10:53:35 ※ 編輯: laa7352 (118.163.30.15), 10/23/2014 10:55:40

10/23 16:08, , 5F
謝謝兩位 問題已經解決了 之前我沒有定義到矩陣跟i j k
10/23 16:08, 5F

11/02 03:13, , 6F
Use "intent" attribute in the subroutine will save
11/02 03:13, 6F

11/02 03:13, , 7F
you a lot of trouble.
11/02 03:13, 7F
文章代碼(AID): #1KI5vJ4K (Fortran)
文章代碼(AID): #1KI5vJ4K (Fortran)