PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Fortran
[問題] 傳入副程式陣列維度不同? 懸賞1000P...
作者:
silverair
(木柵福山雅治)
2019-11-25 18:19:00
最近在把fortran90改成C
但本身不是學f90,網路上資料能找到的也有限...
最近碰到一個奇怪的問題,
CALL GATEOPEN(QU, HO, INGT(IST2, 1), GT(1, 1, IST2), MDC_GT);
這邊的GT應該是一個三維陣列中取出來的REAL值
但是在GATEOPEN這個subroutine中
SUBROUTINE GATEOPEN( T,F,N,FT,MAXD )
.....
INTEGER, INTENT(IN) :: N,MAXD
REAL(SP), INTENT(IN) :: T,FT(MAXD,2)
...
我實在是看不懂為何這邊會變成FT(MAXD,2)
後面使用也是變成二維陣列的形式
DO I = 1, N
IF( T <= FT(I,1) ) THEN
F = FT(I,2)
RETURN
END IF
END DO
求解...懸賞1000P
感謝各位大神。
作者:
fragmentwing
(片翼碎夢)
2019-11-26 00:55:00
老實說我看不太懂你的程式碼1不過我記得是有很奇耙的技巧會故意少輸入東西來跑但問題是 我記得那個案例是用項在順序上跑的差異來進行操作 而不是針對同一項內的陣列進行操作還有 你的N怎麼從陣列變成整數了這不是不會給過嗎?它不是對到INGT(IST2, 1)這一項嗎?阿哩 好像找到了 我拍一下
好像是這個?雖然書上說很常用,不過我沒用過,這樣交接起來會有麻煩吧w我都手動寫程式碼來降維的
作者: youlieme (仙女吃檳榔)
2019-11-26 14:05:00
fortran傳的只是reference 裡面的資料排列如果清楚陣列不需要一樣大 他會從GT(1,1,ist2)這個位址開始往後取MAXD*2的記憶體當作FT我不知道你的GT是什麼資料 但看起來會是成對或可能是兩兩一組 subroutine只判斷奇數值是否=>T而已
作者:
blc
(Anemos)
2019-11-26 15:15:00
fortran的陣列在記憶體中是連續的,所以可以從陣列第一個元素跟陣列大小得到整個陣列。就像C的指標那樣。優點是會快很多(以前),現在編譯器最佳化不知道
作者:
fragmentwing
(片翼碎夢)
2019-11-30 14:44:00
收到推另外我果然還需要精進阿......
作者:
blc
(Anemos)
2019-12-01 22:57:00
晚了,我也有收到,感謝。
繼續閱讀
Fw: [公告] 請使用安全的連線方式連線本站
blc
[問題] 啟動檔案問題
workhard0815
Re: [問題] 變數自行改變
fragmentwing
[問題] 變數自行改變
sven1130
[心得] 關於entry的用法(與recursive的關係)
fragmentwing
[問題] 沒有endif的版本
BanPeeBan
[問題] subroutine call 自己時的return
fragmentwing
[問題] 讓文字輸出不換行
fragmentwing
[問題] int計算後變成float?
BanPeeBan
[問題] 輸出值顯示問號
dregsgod
Links
booklink
Contact Us: admin [ a t ] ucptt.com