0
使用FORTRAN 77可以在两个数组上执行交换,与交换在C++中的工作方式相同?FORTRAN 77 - SWAP
我有两个大阵列,例如v1和v2,并且想要在每次迭代结束时交换v1和v2,使得v2总是最后一次迭代,v1是工作阵列。 F77如何做到这一点?
使用FORTRAN 77可以在两个数组上执行交换,与交换在C++中的工作方式相同?FORTRAN 77 - SWAP
我有两个大阵列,例如v1和v2,并且想要在每次迭代结束时交换v1和v2,使得v2总是最后一次迭代,v1是工作阵列。 F77如何做到这一点?
如果我得到它,你想要做以下样的事情:
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
该应用程序稍有不同,但具有相同的问题/解决方案,你描述(指针)。我最终做了类似mod(iteration_count)的事情来确定当前迭代使用哪个索引,以避免必须移动数据。 – ccook 2010-11-07 17:47:44