2010-03-17 3 views
3

J'essaye de lire quelques fichiers smps avec python, et j'ai trouvé une implémentation fortran, alors j'ai pensé que je donnerais un coup de f2py. Le problème est que je n'ai aucune expérience avec fortran.Comment créer un module python à partir d'un programme fortran avec f2py?

J'ai réussi à installer gfortran et f2py sur ma machine Linux et j'ai exécuté l'exemple sur la page f2py, mais j'ai de la difficulté à compiler et exécuter le grand programme. Il y a deux fichiers, un avec un gestionnaire de fichiers et un avec toute la logique. Ils semblent appeler les uns des autres, mais quand je compile et un lien ou d'essayer f2py, je reçois des erreurs qu'ils peuvent en quelque sorte pas trouver les uns les autres:

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 

J'ai aussi essayé de changer le nom de FILE_WRAPPER.F mais cela ne pas d'aide.

Avec f2py j'ai découvert que je devais inclure un commentaire pour l'obtenir pour accepter le format libre, et enregistré cela comme un nouveau fichier et essayé:

f2py -c -m smpsread smpsread.f90 

Je reçois beaucoup de la production et des avertissements, mais l'erreur semble être celle-ci:

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

Le fortran 90 spms reader can be found here.

Toute aide ou suggestion appréciée.

Répondre

0

Je suggérerais de ne pas faire affaire avec Fortran.

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

La mise en page d'enregistrement MPS est décrit ici, et semble relativement simple à prendre part en Python.

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

Vous devez définir des classes Python appropriées (ou namedtuples) pour toutes les données de toute façon.

Je ne pense pas que le Fortran aide.

+0

Bon point. Le format MPS n'est pas trop mauvais, je l'ai déjà plus ou moins cloué, le problème commence avec les extensions stochastiques, où vous avez, entre autres choses, la possibilité de nombreuses spécifications MPS embarquées. J'ai eu l'impression que les structures de données de fortran seraient immédiatement lisibles en python, mais cela pourrait être un malentendu de ma part. – Lars

+0

@Lars Hellemo: Fortran est assez différent (j'étais un programmeur Fortran à un moment donné). Une traduction automatique ne sera pas très intelligente en tant que structure Python. Au mieux, un outil pourrait créer des listes de tuples nommés à partir du code Fortran. –

+0

pourriez-vous reformuler le titre de cette question? c'est trompeur, car ce fil ne contient que des informations sur votre problème spécifique et n'a rien à voir avec f2py –

Questions connexes