Eu conheço e usei o f2py2e para quebrar algum código antigo do Fortran 77, mas meu entendimento é que ele não funciona com o código Fortran 95 mais recente. Eu pesquisei o que eu deveria usar e me deparei com o fwrap e o G3 f2py, nenhum dos quais parece dar qualquer explicação sobre seu estado atual ou como usá-los (além do uso básico).
Também vi que a versão do f2py tem a opção de usar o f2py de terceira geração, mas é comentada como não funcional. Diante disso, não sei qual projeto devo usar para um projeto uni. Qual devo usar para o novo código?
PS: Esta é basicamente a mesma pergunta que /programming/10665717/current-best-method-for-wrapping-modern-fortran-code-with-python , foi sugerido que perguntar aqui pode fornecer respostas melhores .
Respostas:
Você pode usar o módulo ctypes interno do Python , conforme descrito em fortran90.org . É bem simples e não requer nenhuma dependência externa. Além disso, o auxiliar do tipo ndpointer arg é muito útil.
fonte
Eu pessoalmente uso o f2py para isso. No entanto, o Fortran que escrevo para o f2py não é realmente o Fortran moderno, mas o F90 de forma livre com módulos. Não uso formas assumidas ou tipos personalizados. Este método ainda funciona muito bem para mim.
Há um recurso que quero compartilhar sobre o uso de C como parte do pacote. O restante desta página também é recomendado.
fonte
cython
comando e reduzindo a sobreposição entre alterar meu código fortran ou python e fazer com que tudo funcione rapidamente.A documentação do f2py realmente não é tão boa. Estou no processo de mudar meus próprios projetos do f2py para o Cython . Embora o Cython possa ser usado para quebrar o código C, eu achei que ele é mais útil para criar um novo código de alto desempenho. Se sua intenção é escrever um novo código Fortran, envolvê-lo e chamá-lo em Python, eu recomendo que você use o Cython. Dessa forma, você pode escrever código Python e, se houver gargalos de desempenho, transfira-o para o Cython com pequenas modificações.
fonte
O f90wrap é construído sobre o f2py e gera automaticamente os wrappers Python para a base de código Fortran subjacente, incluindo o acesso a tipos derivados. Um conjunto de exemplos simples mostra como funciona.
fonte
Você pode usar o FortWrap para chegar até a metade do caminho. Isso criará uma interface C ++ para o seu código Fortran, que poderá ser empacotado com SWIG para obter uma interface Python. Fazemos isso em uma base um tanto grande do código Fortran e funciona muito bem (na verdade, o FortWrap foi desenvolvido por um membro da nossa equipe para esse propósito exato).
fonte
fwrap
visa especificamente o Fortran90 / 95 e usa parte da mesma pilha de software quef2py
.fonte
f2py
na F90. Também possui uma barreira de entrada muito baixa. Fiquei feliz por ter encontrado.f2py
suporta fortran moderno (matrizes em formato assumido e assim por diante), consulte um script de exemploAlém disso, para experimentos com o código fortran, recomendo a magia do IPython , que é fácil de instalar e muito conveniente (também depende do f2py).
fonte
Aqui está uma lista de wrappers Fortran para Python:
https://github.com/mgaitan/fortran_magic/issues/4
fonte