Domanda

Sto cercando di leggere alcuni file SMPS con Python, e ho trovato un'implementazione FORTRAN, così ho pensato di dare f2py un colpo. Il problema è che non ho alcuna esperienza con FORTRAN.

Ho installato con successo gfortran e f2py sulla mia macchina Linux e corse l'esempio a pagina f2py Thew, ma ho qualche difficoltà a compilare ed eseguire il programma di grandi dimensioni. Ci sono due file, uno con un involucro lettore di file e uno con tutta la logica. Sembrano chiamare l'un l'altro, ma quando compilo e link o provo f2py, ottengo gli errori che in qualche modo non riescono a trovare un l'altro:

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  

Inoltre ho provato a cambiare il nome in FILE_WRAPPER.F, ma che non ha aiutato.

Con f2py ho scoperto che ho dovuto includere un commento per farlo accettare formato libero, e salvato questo come un nuovo file e provato:

f2py -c -m smpsread smpsread.f90

Ho un sacco di uscita e le avvertenze, ma l'errore sembra essere questa:

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

Il FORTRAN lettore 90 SPM può essere trovato qui .

Qualsiasi aiuto o suggerimenti apprezzato.

È stato utile?

Soluzione

Vorrei suggerire saltare il business FORTRAN del tutto.

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

Il tracciato record MPS è descritto qui, e sembra relativamente semplice da scegliere a parte in Python.

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

Si dovrà definire le classi Python appropriate (o namedtuples) per tutti i dati in ogni caso.

Non credo che il Fortran sta aiutando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top