Я пишу код с Fortran 90, и теперь мне нужно использовать специальные функции в библиотеке * amos Fotran 77 (http://www.netlib.org/amos/). Теперь я нашел интерфейс модуля для этих подпрограмм (https://github.com/certik/fortran-utils/blob/master/src/amos.f90).Как использовать подпрограммы Fortran 77 в Fortran 90/95?
Мой вопрос: как я могу объединить их и использовать их в своей программе Fortran 90 и как их правильно скомпилировать?
Я боролся за это целый день и все еще не мог понять это.
Ниже мой тестовый код:
PROGRAM TEST_ZBESI
USE set_precisions
USE amos
IMPLICIT NONE
INTEGER :: n, i, nz, ierr
!double precision :: zr,zi, cyr(5), cyi(5)
REAL(kind=DBL) :: zr, zi, cyr(5), cyi(5)
n=5
zr=1.0_DBL
zi=2.0_DBL
call ZBESI(zr,zi,0.0_DBL,1,n,cyr,cyi,nz,ierr)
print *,' '
do i=1, n
write(*,10) i-1, cyr(i)
write(*,11) i-1, cyi(i)
end do
print *,' NZ=', NZ
print *,' Error code:', ierr
print *,' '
10 format(' zr(',I1,') = ',F10.6)
11 format(' zi(',I1,') = ',F10.6)
END PROGRAM TEST_ZBESI
В результате я получил следующий:
zr(0) = 0.000000
zi(0) = 0.000000
zr(1) = 0.000000
zi(1) = 0.000000
zr(2) = 0.000000
zi(2) = 0.000000
zr(3) = 0.000000
zi(3) = 0.000000
zr(4) = 0.000000
zi(4) = 0.000000
NZ= 0
Error code: 4
Кажется, я никогда не мог получить правильный ответ независимо от того, каким образом.
Я попытался преобразовать код Zr.S. Fortran 77 в код Fortran 90 вручную. Но код настолько длинный, и это было катастрофой.
Пожалуйста, покажите образец кода, с которым вы боретесь. Также объясните, что именно не работает: ошибка компиляции? Связать проблему? – wallyk
Это должно быть очень просто. Что-то не так, как только FORTRAN. Более подробная информация поможет. –
должно быть просто бросить некоторые отладочные операторы записи в ZBESI, чтобы понять, почему он выбрасывает эту ошибку. – agentp