模块中的fortran变量给出了意想不到的值

时间:2013-08-27 13:10:14

标签: module fortran mpi fortran90

该程序在MPI的上下文中使用。它是fortran的MPI实现。 我在module.like

中声明了一个数组
module var
 real,save ::arr(8)
end module

然后使用像init这样的子程序初始化数组arr。 在主程序单元中,首先调用init来初始化数组arr.And然后调用另一个 子程序如algo进行一些计算。在子程序algo的开头,arr的值是正确的。在计算过程中,虽然没有代码,但arr的值在某些处理器上发生了奇怪的变化。在其他处理器上更改arr的值时,该值是正确的。 我检查代码,我很确定在计算过程中没有代码更改arr的值。 顺便说一句,在模块var中声明的变量数量很多。

2 个答案:

答案 0 :(得分:0)

感谢所有提出建议的人。错误是由于数组元素的访问 在我的程序中,有一行代码访问数组中的索引0元素 超出fortran数组范围的arr(0)=...。此代码导致模块中另一个变量的值被更改,这对我来说是非常意外的。arr(0)=..导致另一个变量的更改,如模块中定义了parm

答案 1 :(得分:0)

由于您正在使用MPI,如果仅在一个处理器上进行初始化,您还必须将变量广播到所有处理器