2010-10-22 78 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