Как мне создать модуль python из программы на фортране с помощью f2py? - PullRequest
3 голосов
/ 17 марта 2010

Я пытаюсь прочитать некоторые файлы smps с помощью python, и нашел реализацию на Фортране, поэтому я подумал, что смогу попробовать f2py. Проблема в том, что у меня нет опыта работы с Fortran.

Я успешно установил gfortran и f2py на свой Linux-компьютер и запустил пример на странице w 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 spms можно найти здесь .

Любая помощь или предложения приветствуются.

1 Ответ

0 голосов
/ 17 марта 2010

Я бы предложил вообще пропустить бизнес на Фортране.

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

Макет записи MPS описан здесь, и выглядит довольно простым, чтобы отделить его в Python.

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

Вы все равно должны будете определить соответствующие классы Python (или именованные кортежи) для всех данных.

Не думаю, что Фортран помогает.

...