Фортран 77 - своп - PullRequest
       6

Фортран 77 - своп

0 голосов
/ 22 октября 2010

С FORTRAN 77 возможно ли выполнить своп на двух массивах, точно так же, как своп работает в c ++?

У меня есть два больших массива, например v1 и v2, и хотели бы поменять местами v1 и v2 в конце каждой итерации, чтобы v2 всегда была последней итерацией, а v1 - рабочим массивом. Как это сделать в F77?

1 Ответ

1 голос
/ 07 ноября 2010

Если я получу это, вы захотите сделать следующее:

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
...