f2py不喜欢子程序中显式的形状数组

2024-10-03 00:22:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用f2py从一些Fortran代码编译python模块。代码使用ifort编译得很好,但是在使用f2py时会抛出错误。以下是代码(超过两个文件):

gdat.f90:

  MODULE GDAT
  PUBLIC

  INTEGER :: NX, NY

  END MODULE GDAT

f90部分:

^{pr2}$

我用f2py -c gdat.f90 part.f90 -m part编译它,但是我得到了关于nx和ny没有被定义的错误,例如: /var/tmp/tmp2hzU6s型/src.linux-x86_64-2.7/untitledmodule.c:在函数“f2py_rout_untitled_part”中: /var/tmp/tmp2hzU6s型/src.linux-x86_64-2.7/untitledmodule.c:180:错误:未声明“nx”(首次在此函数中使用)

这似乎是显式形状数组ARR的定义有问题。就像我说的,它在ifort上编译得很好。

我知道这是一段简单的代码,可以用另一种方式编写,但这只是我写的一个测试:我实际上是在编译一个更大的fortran模块集,这些模块在中有很多显式的数组定义(使用来自中央模块的变量来定义边界),所以我真的很想让这个工作,而不是重写这个其他的代码!


Tags: 模块代码定义var错误tmpmodulenx
2条回答

尝试通过创建签名文件

f2py -m pythmod -h signature.pyf gdat.f90 part.f90

然后用它

^{pr2}$

这将创建文件侏儒。在

据我所知,您有一个问题,数组的大小必须通过ALLOCATABLE动态变化,或者已经用数值常量或参数固定。在

在您的例子中,变量nxny既不是设置也不是参数。如果您想将两个文件分别编译成模块(使用ifort而不是{}),它也应该抱怨。在

相关问题 更多 >