Fortran Coder

查看: 12729|回复: 5
打印 上一主题 下一主题

[Module] 关于数组传递的问题

[复制链接]

13

帖子

5

主题

0

精华

入门

F 币
81 元
贡献
48 点
跳转到指定楼层
楼主
发表于 2021-1-24 22:04:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在module中定义:
[Fortran] 纯文本查看 复制代码
INTEGER DEMENSION(1,2) :: A

然后在子程序中:
[Fortran] 纯文本查看 复制代码
SUROUTINE TEST
     INTEGER DEMENSION(:,:) :: A
END SUROUTINE TEST

这样仅仅是写在形参表中就会导致错误,但是如果定义的数组是一维的话则不会出错。
因为程序运行环境比较复杂,包的错误和MPI有关,因此不确定是环境的问题还是这样传递数组有问题。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2021-1-25 08:19:37 | 只看该作者
如果你不确定是环境的问题还是这样传递数组有问题。请用一个简短的代码尝试重现该问题。

你需要明确的描述你的问题,才能让别人听懂。

1. SUBROUTINE TEST 和 module 的关系?是contains在module里,还是另外的程序单元?
2. SUBROUTINE TEST 是否 use 了 module?
3. SUBROUTINE TEST 是否有虚参?并且 A 是否是虚参?

13

帖子

5

主题

0

精华

入门

F 币
81 元
贡献
48 点
板凳
 楼主| 发表于 2021-1-25 10:59:04 | 只看该作者
vvt 发表于 2021-1-25 08:19
如果你不确定是环境的问题还是这样传递数组有问题。请用一个简短的代码尝试重现该问题。

你需要明确的描述 ...

不好意思写的有点不清楚了
TEST和module处于不同的程序单元,但是use了module
[Fortran] 纯文本查看 复制代码
SUROUTINE TEST(A)
     INTEGER DEMENSION(:,:) :: A
END SUROUTINE TEST

TEST的A为形参,由调用TEST的子程序传入,调用TEST的子程序contain在module中


954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2021-1-25 12:09:23 | 只看该作者
那么虚参的 A 和 module 里面的 a 会发生命名冲突。尝试改一下虚参的A的名字,或者 use 时用 use modulename , aa => a 对 module 中的 a 改临时名字。

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
5#
发表于 2021-1-25 18:52:14 | 只看该作者
遇到问题一定要给出 错误提示。目测你是语法错误,integer后面需要逗号。

13

帖子

5

主题

0

精华

入门

F 币
81 元
贡献
48 点
6#
 楼主| 发表于 2021-1-25 20:15:54 | 只看该作者
vvt 发表于 2021-1-25 12:09
那么虚参的 A 和 module 里面的 a 会发生命名冲突。尝试改一下虚参的A的名字,或者 use 时用 use modulenam ...

理解了 感谢!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-26 00:10

Powered by Tencent X3.4

© 2013-2024 Tencent

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