Fortran编译错误:( USE语句但不能从此模块公开访问)

时间:2014-03-26 07:49:01

标签: fortran aix

在做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”,但仅在删除后,仅表示是必要的。

有人可以为此提供帮助吗。

关于下述 -makrand

添加模块文件的内容:

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。

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

1 个答案:

答案 0 :(得分:1)

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

USE Couple2Swan

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

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