0

我有一个非常基本的问题。我有一些旧的 FORTRAN77 代码,我在 Windows 中通过 f2py 编译了它。当我在 Python 中调用它时,返回值为 0.0 而不是正确的。

这是我在编译之前正确的 FORTRAN 代码(用于测试)

  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。那么有人可以给我一些建议吗?提前致谢!!

4

1 回答 1

1

这是我在查看 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是特殊注释(fortran 注释c在第一列中有一个),它告诉 f2py 如何处理这些参数。在这种情况下,您有 2 个输入和 1 个输出...

编辑 我应该练习我在评论中所说的话......(在函数中添加了 IMPLICIT NONE)

于 2012-03-29T01:37:29.310 回答