作者silverair (那真是太讽刺了绍安)
看板Fortran
标题[问题] 传入副程式阵列维度不同? 悬赏1000P...
时间Mon Nov 25 18:19:00 2019
最近在把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
感谢各位大神。
--
我的意中人是个盖世英雄,有一天他会踩着七色的云彩来娶我
我猜中了前头,可是我猜不着这结局。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.124.44.60 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1574677143.A.D89.html
1F:推 fragmentwing: 老实说我看不太懂你的程式码 11/26 00:55
这是project在用的软体的其中一部分,我的任务是转成C
所以基本上这个Code应该是没问题
2F:推 fragmentwing: 1不过我记得是有很奇耙的技巧 11/26 00:57
3F:→ fragmentwing: 会故意少输入东西来跑 11/26 00:57
4F:推 fragmentwing: 但问题是 我记得那个案例是用项在顺序上跑的差异 11/26 01:00
5F:→ fragmentwing: 来进行操作 而不是针对同一项内的阵列进行操作 11/26 01:00
6F:→ fragmentwing: 还有 你的N怎麽从阵列变成整数了 11/26 01:04
7F:→ fragmentwing: 这不是不会给过吗? 11/26 01:04
8F:→ fragmentwing: 它不是对到INGT(IST2, 1)这一项吗? 11/26 01:05
我的理解是INGT(IST2, 1)
应该等於C语言的INGT[IST2][0]吧
INGT是一个储存int的二维阵列
已经在其他地方宣告过了@@
所以进到副程式应该是整数没错啊
GT则是一个储存real的三维阵列,
GT(1, 1, IST2)取出来应该是一个real数,可是进到副程式他怎麽宣告成阵列
9F:推 fragmentwing: 阿哩 好像找到了 我拍一下 11/26 01:11
13F:→ fragmentwing: 好像是这个?虽然书上说很常用,不过我没用过,这样 11/26 01:15
14F:→ fragmentwing: 交接起来会有麻烦吧w 11/26 01:15
15F:→ fragmentwing: 我都手动写程式码来降维的 11/26 01:21
感谢大大
16F:推 youlieme: fortran传的只是reference 里面的资料排列如果清楚 11/26 14:05
17F:→ youlieme: 阵列不需要一样大 他会从GT(1,1,ist2)这个位址开始 11/26 14:05
18F:→ youlieme: 往後取MAXD*2的记忆体当作FT 11/26 14:05
19F:→ youlieme: 我不知道你的GT是什麽资料 但看起来会是成对或可能 11/26 14:05
20F:→ youlieme: 是两两一组 subroutine只判断奇数值是否=>T而已 11/26 14:05
好的我研究一下,看起来可能是这个问题
21F:→ blc: fortran的阵列在记忆体中是连续的,所以可以从阵列第一个 11/26 15:15
22F:→ blc: 元素跟阵列大小得到整个阵列。就像C的指标那样。 11/26 15:16
23F:→ blc: 优点是会快很多(以前),现在编译器最佳化不知道 11/26 15:55
原来如此,感谢大大
※ 编辑: silverair (220.141.70.95 台湾), 11/26/2019 22:49:06
24F:推 fragmentwing: 收到推 11/30 14:44
25F:→ fragmentwing: 另外我果然还需要精进阿...... 11/30 14:44
26F:→ blc: 晚了,我也有收到,感谢。 12/01 22:57