fortran 定义全局变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fortran 定义全局变量相关的知识,希望对你有一定的参考价值。

怎样在fortran中利用module建立全局变量呢?
如果是在module中建立的全局变量,可以通过read命令来赋值吗?
第一个问题麻烦回答详细一些,这个不大了解....谢谢

module主要有以下作用:
1)module 可以声明变量,经常用来声明程序中所需要的常量、或是用来存放全局变量
2)module里面可以定义自定义类型,在经过use的命令可以让程序中的每一个函数都能使用这个类型
3)module里面可以编写函数,同样使用use命令。
至于你提出的问题,可以用以下程序来解释:
module global
implicit none
integer a,b
common a,b
! read (*,*) a,b
end module

program ex0834
use global
implicit none
read (*,*) a,b
write(*,*) a,b
end program
在module里声明了全局变量a,b.在program里就可以省去定义a,b的部分,就可以直接使用a,b.
第二个问题,当把module里的注释符“!”去除, 把program里的read(*,*) a,b 注释掉就能发现程序错误,所以我认为在module里,不能通过read赋值。

参考资料:fortran95程序设计,彭国伦版 P205和P315

参考技术A module变量是模块变量,只要你use这个module就可以对它进行操作了。
用fortran编程,起步时尽量的不要拿C或是C++往里套,否则会越学越迷糊:)
当然,你也可以认为module变量其实就是C/C++中,某个结构体里面的静态变量:)它的作用域是全局的,但需要你带上结构体(module)的名字:)本回答被提问者采纳

OpenMP 的全局变量

【中文标题】OpenMP 的全局变量【英文标题】:Global variable with OpenMP 【发布时间】:2011-01-07 09:26:51 【问题描述】:

关于多线程代码的 OpenMP 问题:

线程是否共享所有全局变量?如何将某个全局变量设为主线程私有?

谢谢

PS:这是一个C代码。

【问题讨论】:

什么语言,C 还是 fortran?两种语言的细节有点不同。另外,如果是 fortran,您是否尝试私有公共块? 【参考方案1】:

如果我没记错的话

#pragma omp threadprivate

全局变量有点棘手,如果它们必须被初始化,你必须使用 copyfirst 指令(我认为这是正确的名称)。线程私有变量也可能带来重大损失,在某些实现中,变量访问变成了函数调用。

【讨论】:

以上是关于fortran 定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章

OpenMP 的全局变量

qml全局变量定义建议

解释啥是全局变量,如何定义

C语言中如何定义全局变量

全局变量怎么定义

js如何在方法内部定义全局变量