Fortran Coder

查看: 14515|回复: 7
打印 上一主题 下一主题

[子程序] fortran 数组作为参数传递

[复制链接]

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

楼主
发表于 2018-5-2 14:50:22 | 显示全部楼层
0. 抱歉, 翻個舊案

1. to [dypang]
   這是 Fortran 77 的語法:
       實參(actual argument): not pass an array, but the address of one array element, ct(1,1,icx)
       虛參(dummy argument): 由該adress起, 做 c1(m,m) array 使用 (explicit-shape adjustable-size dummy array)
   如 [fcode] 所說: 如果 Ct 的第一维和第二维大小都是 m 的话。"相当于" 把 Ct(:,:,icx) 传递进去了

2, to [fcode] "...不建议使用。可以用 Ct(:,:,icx) 代替"
    這話可能有點 "語病"
    實參若寫 Ct(:,:,icx), 是 array (section) 沒錯, 但是 依然只 pass the address of the first array element "ct(1,1,icx)",  除非 虛參是 assumed-shape array
    (這也是為何要 explicit interface for assumed-shape dummy array)
    另外, runtime 可能會 (compiler, compile-time-option dependent) create an array temporary (多餘的負擔) for 實參 Ct(:,:,icx) array section

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

沙发
发表于 2018-5-2 19:02:45 | 显示全部楼层
能 进行 "沒有實參虛參間誤會" 越界检查, 的確是要 assumed-shape

我一直在想: "assumed-shape" 既出, "exsplicit-shape adjustable-size" 該引退了嗎?

先有 data (actual array, shape已定), 而後 work 某一功能, dummy array 就是用 "assumed-shape" 別無懸念
先想定 work (dummy array適合的shape已定), 要能 for any shape (actual) array, ...

假如 Fortran intrinsic library 沒有 SUM, 要自己coding, 請問大家 你會怎做?

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

板凳
发表于 2018-5-22 18:01:29 | 显示全部楼层
0. Fortran 是 column-major
    REAL :: A(N,M)
    linear addressing 是 (A(i,j),i=1,N),j=1,M),  i.e.,  A(1,1), A(2,1), ..., A(N,1),    A(1,2), A(2,2), ..., A(N,2),    ...,    A(1,M), A(2,M), ..., A(N,M)

1.  For Fortran 77 Standard, array argument
     實參(actual argument): not pass an array, but pass the address of one array element
     虛參(dummy argument): 由該adress起, 做 任意的(exsplicit-shape adjustable-size) array 使用

2.  你的問題
    子程序中矩阵 strainOld(nblock,6), strainNew(nblock,6)  与 主程序中矩阵 stateOld(1:nblock,12:17), stateNew(1:nblock,12:17) 对应
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-15 14:15

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表