¿Cómo se crea un módulo de Python desde un programa FORTRAN con f2py?
Pregunta
Estoy tratando de leer algunos archivos SMPS con Python, y encontré una aplicación Fortran, así que pensé que le daría f2py un tiro. El problema es que no tengo ninguna experiencia con FORTRAN.
He instalado con éxito gfortran y f2py en mi máquina Linux y corrió el ejemplo en la página f2py Thew, pero tengo algunos problemas para compilar y ejecutar el programa grande. Hay dos archivos, uno con un envoltorio lector de archivos y otra con toda la lógica. Parece que llamar a los demás, pero cuando compilación y enlace o intento f2py, tengo errores que de alguna manera no pueden encontrar uno al otro:
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
También probé cambiando el nombre a FILE_WRAPPER.F pero eso no ayuda.
Con f2py descubrí que tenía que incluir un comentario para conseguir que se acepte el formato libre, y se guarda como un archivo nuevo y trató de:
f2py -c -m smpsread smpsread.f90
tengo una gran cantidad de la producción y las advertencias, pero el error parece ser éste:
getctype: No C-type found in "{'typespec': 'type', 'attrspec': ['allocatable'], 'typename': 'node', 'dimension': [':']}", assuming void.
El FORTRAN lector 90 SPMS se puede encontrar aquí .
Cualquier ayuda o sugerencia apreció.
Solución
Me consultad el negocio FORTRAN por completo.
http://myweb.dal.ca/gassmann/smps2.htm
El diseño de registro MPS se describe aquí, y parece relativamente fácil de desmenuzar en Python.
http://myweb.dal.ca/gassmann/smps2.htm#CoreMPSline
Vas a tener que definir las clases de Python apropiados (o namedtuples) para todos los datos de todos modos.
No creo que el Fortran está ayudando.