Fortran Coder

查看: 10099|回复: 8
打印 上一主题 下一主题

[派生类型] 关于自定义类型type的使用

[复制链接]

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
跳转到指定楼层
楼主
发表于 2015-2-14 15:24:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 taotao0718 于 2015-2-16 09:00 编辑

编译时发生这样错误fortcom: Error: mod_random_forcing.F, line 59: This entity cannot be PUBLIC since its derived type is PRIVATE.   [RAN]      type(forcing_fields)   ,save :: ran, ran1
-----------------------------------^

原程序的一部分:
   
[Fortran] 纯文本查看 复制代码
 module mod_random_forcing
#define FFTW 
      use mod_xc
      implicit none
c --- shield everything
      private
      type forcing_fields
         character(len=5) tforce
         real slp    (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  Sea level pressure
         real taux   (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  wind stress in x direction
         real tauy   (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  wind stress in y direction
         real wndspd (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  wind speed (tke source)
         real airtmp (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  pseudo air temperature
         real relhum (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  relative humidity
         real clouds (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  cloud cover
         real precip (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  precipitation
         real sss    (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  SSS for relax 
         real sst    (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  SST for relax 
         real uwind  (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  u-component of wind
         real vwind  (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  v-component of wind
         real tauxice(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  ice stress on water in x dir
         real tauyice(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) !  ice stress on water in y dir
      end type forcing_fields
c

...................
...................
...................
c --- These will hold the forcing fields (dim and nondimensional)
      type(forcing_fields)   ,save :: ran, ran1


我改为  type(forcing_fields)   ,save,private :: ran, ran1
依旧是一样的错误,不知道有没有高手可以指点一下,谢谢


mod_random_forcing.F

33.63 KB, 下载次数: 5

mod_xc_common_blocks.zip

32.96 KB, 下载次数: 1

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-2-14 18:19:15 | 只看该作者
不知道你用什么编译器?我这里是没法重现你的错误的。

如果可以,请给出更多的代码,至少要有 mod_xc 模块。或者经过简化以后给出,至少让我们能够正常编译。

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
板凳
 楼主| 发表于 2015-2-15 09:26:54 | 只看该作者
楚香饭 发表于 2015-2-14 18:19
不知道你用什么编译器?我这里是没法重现你的错误的。

如果可以,请给出更多的代码,至少要有 mod_xc 模块 ...

谢谢,已添加了附件,用的是ifort编译器

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2015-2-15 17:30:22 | 只看该作者
我还是找不到 mod_xc 模块,还有 common_blocks.h 文件。

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
5#
 楼主| 发表于 2015-2-16 09:02:01 | 只看该作者
楚香饭 发表于 2015-2-15 17:30
我还是找不到 mod_xc 模块,还有 common_blocks.h 文件。

不好意思哈,昨天漏传了,其实还有个问题,不知道这是不是和编译器版本不一样,或者netcdf还有openmpi的选择有关,就是在有的机器上没有问题,但是换机器就出现了这个问题。

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

6#
发表于 2015-2-16 09:53:08 | 只看该作者
1.如果 ran 是 public 属性的,那么它的类型 :forcing_fields 也必须是 public 属性的。这是 F95 的规定。
2.你的代码里有 public :: init_random_forcing, rand_update, ran,所以,尽管你写了 type(forcing_fields)   ,save,private :: ran, ran1 ,但 ran 仍然是 public 的。
3.请根据自己的需要,确定 ran 是 public 还是 private 的。
4.如果 ran 是 public 的,那么请加一句 public forcing_fields

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
7#
 楼主| 发表于 2015-2-16 09:59:03 | 只看该作者
楚香饭 发表于 2015-2-16 09:53
1.如果 ran 是 public 属性的,那么它的类型 :forcing_fields 也必须是 public 属性的。这是 F95 的规定。 ...

我之前把第六行的private注释了,就通过了,默认public属性,不知道会不会影响最终结果
谢谢您这几天的帮忙,祝新年快乐!

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

8#
发表于 2015-2-16 10:10:29 | 只看该作者
我一早就想让你去掉 private,但是怕影响你其他的程序。比如有重名的变量,如果public可能就变成同一个变量了。

所以最好还是保持原有的 private,单独让 ran 和 forcing_fields 变成 public 比较可靠。

新年好~~

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
9#
 楼主| 发表于 2015-2-25 10:06:43 | 只看该作者
楚香饭 发表于 2015-2-16 10:10
我一早就想让你去掉 private,但是怕影响你其他的程序。比如有重名的变量,如果public可能就变成同一个变量 ...

电脑坏了,才看到这条,再试试看,谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-1 10:18

Powered by Tencent X3.4

© 2013-2024 Tencent

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