我正在尝试用python读取一些smps文件,并发现了一个fortran实现,所以我想我会给f2py一个镜头。问题是我没有遇到过fortran的经历。
我已经在我的Linux机器上成功安装了gfortran和f2py并在w2py页面上运行了示例,但是我在编译和运行大型程序时遇到了一些麻烦。有两个文件,一个带有文件阅读器包装器,另一个带有所有逻辑。他们似乎互相打电话,但是当我编译和链接或尝试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 spms reader can be found here。
任何帮助或建议表示赞赏。
答案 0 :(得分:0)
我建议完全跳过fortran业务。
http://myweb.dal.ca/gassmann/smps2.htm
这里描述了MPS记录布局,看起来相对简单,可以在Python中分开。
http://myweb.dal.ca/gassmann/smps2.htm#CoreMPSline
无论如何,您必须为所有数据定义适当的Python类(或命名元组)。
我认为Fortran没有帮助。