3

我正在尝试使用 python 读取一些 smps 文件,并找到了一个 fortran 实现,所以我想我会给 f2py 一个机会。问题是我没有使用fortran的经验。

我已经在我的 Linux 机器上成功安装了 gfortran 和 f2py,并在 f2py 页面上运行了示例,但是我在编译和运行大程序时遇到了一些麻烦。有两个文件,一个带有文件阅读器包装器,一个带有所有逻辑。他们似乎互相调用,但是当我编译和链接或尝试 f2py 时,我得到了他们以某种方式找不到对方的错误:

f95 -c FILEWR~1.F
f95 -c SMPSREAD.F90 
f95 -o smpsread SMPSREAD.o FILEWR~1.o 

FILEWR~1.o In function `file_wrapper_'
FILEWR~1.F(.text+0x3d) undefined reference to `chopen_'
usrlibgcci486-linux-gnu4.4.1libgfortranbegin.a(fmain.o) In function `main'
(.text+0x27) undefined reference to `MAIN__'
collect2 ld returned 1 exit status  

我也尝试将名称更改为 FILE_WRAPPER.F 但这没有帮助。

使用 f2py 我发现我必须包含一条评论才能让它接受免费格式,并将其保存为一个新文件并尝试:

f2py -c -m smpsread smpsread.f90

我得到了很多输出和警告,但错误似乎是这个:

getctype: No C-type found in "{'typespec': 'type', 'attrspec': ['allocatable'],  'typename': 'node', 'dimension': [':']}", assuming void.

可以在此处找到 fortran 90 sms 阅读器。

任何帮助或建议表示赞赏。

4

1 回答 1

0

我建议完全跳过 fortran 业务。

http://myweb.dal.ca/gassmann/smps2.htm

此处描述了 MPS 记录布局,在 Python 中分离看起来相对简单。

http://myweb.dal.ca/gassmann/smps2.htm#CoreMPSline

无论如何,您都必须为所有数据定义适当的 Python 类(或命名元组)。

我不认为 Fortran 有帮助。

于 2010-03-17T13:50:39.223 回答