Вызов файла Fortran .pyd из Python и возврат 0.0 - PullRequest
0 голосов
/ 28 марта 2012

У меня очень простой вопрос.У меня есть старый код FORTRAN77, и я собрал его с помощью f2py в Windows.Когда я вызывал его в Python, возвращаемое значение равно 0,0, а не правильному.

Вот мой правильный FORTRAN CODE (для теста) перед компиляцией

  FUNCTION ttt (APPRAT, METRAT)

  REAL APPRAT, METRAT      

  IF(APPRAT.LE.0.0)THEN
    ttt = METRAT * 0.89218
  ELSE
    ttt = APPRAT
  ENDIF
  RETURN
  END 

Вот код Python

import al4 #the name of compiled FORTRAN 77 code which is a .pyd file
ff=(al4.ttt(-1,10))
print(ff)

Если всеправильно, я должен получить 8.9218 в качестве возвращаемого значения, но я всегда получаю 0.0.Так может кто-нибудь дать мне несколько советов?Заранее спасибо !!

1 Ответ

1 голос
/ 29 марта 2012

Вот кое-что, что я взломал вместе, просматривая документацию f2py:

 c This is file al4.f

      FUNCTION ttt (APPRAT, METRAT)
      IMPLICIT NONE
      REAL APPRAT, METRAT,ttt
 cf2py intent(in), APPRAT,METRAT
 cf2py intent(out) ttt      

      IF(APPRAT.LE.0.0)THEN
         ttt = METRAT * 0.89218
      ELSE
         ttt = APPRAT
      ENDIF
      RETURN
      END 

Затем я "скомпилировал" его с помощью: f2py -c al4.f -m al4 и затем запустил ваш скрипт на python выше (в том же каталогеal4.so - хотя расширение ".so" может отличаться в зависимости от вашей системы) и это сработало.cf2py - это особые комментарии (в первом столбце для комментариев на Фортране есть c), которые сообщают f2py, что делать с аргументами.В этом случае у вас есть 2 входа и 1 выход ...

РЕДАКТИРОВАТЬ Я должен практиковать то, что я говорю в комментариях ... (добавлено НЕПРАВИЛЬНОЕ НЕТ в функцию)

...