Como faço para criar um módulo Python a partir de um programa fortran com F2PY?

StackOverflow https://stackoverflow.com/questions/2462354

  •  20-09-2019
  •  | 
  •  

Pergunta

Estou tentando ler alguns arquivos SMPs com o Python e encontrei uma implementação do Fortran, então pensei em dar uma chance ao F2PY. O problema é que não tenho experiência com a Fortran.

Instalei com sucesso o GForTran e o F2PY na minha caixa Linux e corri o exemplo na página F2PY, mas tenho alguns problemas para compilar e executar o programa grande. Existem dois arquivos, um com um wrapper de leitor de arquivos e outro com toda a lógica. Eles parecem ligar um para o outro, mas quando eu compilar e vincular ou tentar F2PY, recebo erros que eles de alguma forma não conseguem se encontrar:

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  

Também tentei alterar o nome para file_wrapper.f, mas isso não ajudou.

Com o F2PY, descobri que tinha que incluir um comentário para aceitar o formato gratuito, e salvei isso como um novo arquivo e tentei:

f2py -c -m smpsread smpsread.f90

Eu recebo muitas saídas e avisos, mas o erro parece ser este:

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

o O leitor do Fortran 90 SPMS pode ser encontrado aqui.

Qualquer ajuda ou sugestões apreciadas.

Foi útil?

Solução

Eu sugeriria pular completamente o negócio da Fortran.

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

O layout de registro do MPS é descrito aqui e parece relativamente simples de separar em Python.

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

Você terá que definir as classes Python apropriadas (ou nomeadas) para todos os dados de qualquer maneira.

Eu não acho que o Fortran esteja ajudando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top