Frage

Ich versuche, einige SMPS-Dateien mit Python zu lesen, und fand eine Fortran-Implementierung, so dass ich dachte, ich würde ein Schuss f2py. Das Problem ist, dass ich keine Erfahrung mit Fortran haben.

Ich habe erfolgreich gfortran und f2py auf meiner Linux-Box installiert und lief das Beispiel auf Thew f2py Seite, aber ich habe einige Probleme kompilieren und das große Programm ausgeführt wird. Es gibt zwei Dateien, eine mit einem Dateileser-Wrapper und eine mit allen Logik. Sie scheinen einander zu nennen, aber wenn ich kompilieren und verknüpfen oder versuchen f2py, bekomme ich Fehler, dass sie irgendwie nicht zueinander finden können:

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  

Ich habe auch versucht, den Namen zu ändern, aber FILE_WRAPPER.F das hat nicht geholfen.

Mit f2py fand ich heraus, dass ich einen Kommentar enthalten musste, um es frei Format und gespeichert diese als neue Datei und versuchte zu übernehmen:

f2py -c -m smpsread smpsread.f90

Ich bekomme eine Menge von Produktion und Warnungen, aber der Fehler scheint dies zu sein:

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

Die Fortran 90 SPMs Leser finden Sie hier .

Jede Hilfe oder Anregungen geschätzt.

War es hilfreich?

Lösung

Ich würde vorschlagen, insgesamt das Fortran Geschäft zu überspringen.

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

Die MPS Satzaufbau hier beschrieben wird, und sieht relativ einfach auseinander nimmt in Python.

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

Sie werden entsprechende Python-Klassen definieren müssen (oder namedtuples) für alle die ohnehin Daten.

Ich glaube nicht, das Fortran hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top