Fortran Coder

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

[数值问题] Common语句相关请教

[复制链接]

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
跳转到指定楼层
楼主
发表于 2015-4-21 13:29:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序结构如下:

program Fcode

implicit real*8 (A-H,O-Z)
implicit integer*4(I-M)

  ……
include 'main.com'
……
(程序部分)
end

在相同路径下有main.com的一个文本格式的文件,内容如下
common /ustar/ use(ndn), usc2(ndn,ndl), us2(ndn), iss(ndn), jss(ndn,ndl)


现在问题来了:
1.common里面的数组其类别遵从于 上面的implicit real*8 (A-H,O-Z)和implicit integer*4(I-M)吗?
比如说use 是real*8类别的吗?
2.用common开辟的某个有名字的公共区,里面的数组其类型有必要相同吗?
比如说 iss和 jss这两个数组的类型是整型还是实型?


还有关于module的一个问题。
我用module定义了几个数组如下
module Mtr
implicit none
real*8,allocatable:: a(:)
……
end module Mtr

和一个allocate的子函数
subroutine alloca
implicit none
allocate(a(8))
end subroutine alloca

子程序如下:
subroutine xxx
  use Mtr
……
end subroutine


subroutine yyy
  use Mtr
……
end subroutine


在主程序中有:

protram main
  use Mtr
  implicit none
  call alloca
  call xxx  
  call yyy
  ……
end

请问在这种情况下,xxx中的数组a和yyy中的数组a是一致的么?

还有就是:有没有查询数组或者变量类别的函数?

求各位指点迷津。






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

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2015-4-21 15:06:29 | 只看该作者
1、 include 'main.com' 的作用,相当于把 main.com 的所有内容,复制粘贴到该位置,跟直接在该位置写语句是一样的效果;
2、公共区内的不同数据,类型可以不同。公共区不会检查其内的数据类型,甚至可以把字符型转为整型(很多老代码这样干过);
3、根据你的代码,xxx中的数组a和yyy中的数组a是同一个数组;
4、fortran中变量类型是编译时就确定的,不会也不可能在运行时改变,因此没有查询类型的函数。

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
板凳
 楼主| 发表于 2015-4-21 15:59:31 | 只看该作者
li913 发表于 2015-4-21 15:06
1、 include 'main.com' 的作用,相当于把 main.com 的所有内容,复制粘贴到该位置,跟直接在该位置写语句 ...

谢谢,受教了。

对公共区中的数据还是有一点不理解。
对于公共区名的设定,也就是说计算机会根据公共区名来查找到数据,然后再根据数据存储的顺序而不是变量名把值传递给变量。由此可以猜测,计算机在一开始就必须确定数据的类型,从而知道数据的长度,从而传递数值。请问这样理解是否正确?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
地板
发表于 2015-4-21 16:58:09 来自移动端 | 只看该作者
主站 教程 栏目,有专门文章介绍common和module
http://fcode.cn/guide-92-1.html

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
5#
 楼主| 发表于 2015-4-22 09:32:08 | 只看该作者
vvt 发表于 2015-4-21 16:58
主站 教程 栏目,有专门文章介绍common和module
http://fcode.cn/guide-92-1.html

谢谢,刚看完,受益匪浅。

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
6#
发表于 2015-4-27 12:59:58 | 只看该作者
Kind也是编译时确定的,但 Kind 函数可以返回其值.
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 08:00

Powered by Tencent X3.4

© 2013-2024 Tencent

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