【问题标题】:Fortran compilation error : (USE statement but is not publicly accessible from this module)Fortran 编译错误:(USE 语句,但不能从此模块公开访问)
【发布时间】:2014-03-26 17:36:43
【问题描述】:

在做 make 时,我收到类似

的错误
"Identifier swan_vv2 appeared in a USE statement but is not publicly accessible from this module."
         USE Couple2Swan,  ONLY : ADCIRC_ETA2 => SWAN_ETA2,
     &                       ADCIRC_UU2 => SWAN_UU2,
     &                       ADCIRC_VV2 => SWAN_VV2,
     &                       ADCIRC_WX2 => SWAN_WX2,
     &                       ADCIRC_WY2 => SWAN_WY2,
     &                       COUPCUR, COUPWIND, COUPWLV,
     &                       InterpoWeight
!Casey 091216: Added these variables for coupling ADCIRC Manning's n values
!              as Madsen friction lengths.
     &                      ,ADCIRC_Z0 => SWAN_Z0,
     &                       COUPFRIC

USE 语句由“ONLY”组成,但在删除 ONLY 后,它说 ONLY 是必要的。

有人可以帮忙吗?

问候- -马克兰

添加模块文件内容:

REAL(SZ),ALLOCATABLE :: SWAN_UU2(:,:)
  IF(.NOT.ALLOCATED(SWAN_UU2))  ALLOCATE(SWAN_UU2(1:NP,1:2))
     SWAN_UU2 (IN,1) = 0.D0
     SWAN_UU2 (IN,2) = 0.D0
     SWAN_UU2 (IN,1) = SWAN_UU2 (IN,2)
        SWAN_UU2 (IN,2) = UU2 (IN)
        SWAN_UU2 (IN,2) = 0.D0
  IF(ALLOCATED(SWAN_UU2))  DEALLOCATE(SWAN_UU2)
  • 不是整个模块文件,是部分内容名称显示错误,在use语句中不是swan_VV2与swan_UU2。

  • 我可以上传模块文件吗?

【问题讨论】:

  • 模块 sn-p 看起来很奇怪。可执行代码是无关紧要的,而且您肯定没有显示所有重要的声明。此外,only 肯定不是重命名所必需的。
  • use 语句中的swan_VV2 还是模块中的swan_UU2?拼写错误?

标签: fortran aix


【解决方案1】:

如果您只想包含该模块中的某些子例程/函数/变量,则需要 ONLY 语句。您可以仅使用以下方式包含整个模块:

USE Couple2Swan

=> 语法允许您“重命名”模块过程...

对于您的问题: 从我读到的错误消息中,您在模块Couple2Swan 中没有请求的子例程/函数/变量SWAN_VV2。也许你拼错了,或者元素是私有的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多