2010-10-22 122 views
0

使用FORTRAN 77可以在两个数组上执行交换,与交换在C++中的工作方式相同?FORTRAN 77 - SWAP

我有两个大阵列,例如v1和v2,并且想要在每次迭代结束时交换v1和v2,使得v2总是最后一次迭代,v1是工作阵列。 F77如何做到这一点?

回答

1

如果我得到它,你想要做以下样的事情:

do while (i.LE.max_iter .AND. .NOT.converged) 
    call sub_iter(v1, v2) 
    call swap(v1,v2) 
enddo 

我认为这是不是真的可行,因为一个很好的办法做到这一点是使用指针切换在阵列之间,这在Fortran 77中不可用。

难道你不能在每次迭代中对子例程进行双重调用吗?

do while (i.LE.max_iter .AND. .NOT.converged) 
    call sub_iter(v1, v2) 
    call sub_iter(v2, v1) 
enddo 
+0

该应用程序稍有不同,但具有相同的问题/解决方案,你描述(指针)。我最终做了类似mod(iteration_count)的事情来确定当前迭代使用哪个索引,以避免必须移动数据。 – ccook 2010-11-07 17:47:44