Sé y he usado f2py2e para envolver un código Fortran 77 antiguo, pero entiendo que no funciona con el código Fortran 95 más nuevo. He investigado qué debo usar, y he encontrado fwrap y G3 f2py, ninguno de los cuales parece dar una explicación de su estado actual o cómo usarlos (más allá del uso básico).
También he visto que la versión de f2py tiene la opción de usar la f2py de tercera generación, pero se comenta que no es funcional. Dado esto, no sé qué proyecto debo usar para un proyecto uni. ¿Cuál debo usar para el nuevo código?
PD Esta es básicamente la misma pregunta que /programming/10665717/current-best-method-for-wrapping-modern-fortran-code-with-python , se sugirió que preguntar aquí podría dar mejores respuestas .
Respuestas:
Puede usar el módulo de tipos incorporados de Python como se describe en fortran90.org . Es bastante sencillo y no requiere dependencias externas. Además, el ndpointer arg type helper es muy útil.
fuente
Yo personalmente uso f2py para esto. Sin embargo, el Fortran que escribo para f2py no es un Fortran realmente moderno, sino un F90 de forma libre con módulos. No uso formas asumidas o tipos personalizados. Este método todavía funciona muy bien para mí.
Hay un recurso que quiero compartir sobre el uso de C como parte del ajuste. El resto de esta página también se recomienda.
fuente
cython
comando, y reduciendo la superposición entre cambiar mi código fortran o código python y hacer que todo funcione rápidamente.La documentación de f2py realmente no es tan buena. Estoy en el proceso de mover mis propios proyectos de f2py a Cython . Aunque Cython se puede usar para envolver el código C, descubrí que es más útil para crear un nuevo código de alto rendimiento. Si su intención es escribir un nuevo código Fortran, envolverlo y llamarlo en Python, le recomiendo que use Cython en su lugar. De esa forma puede escribir código Python, y si hay cuellos de botella en el rendimiento, lo transfiere a Cython con modificaciones menores.
fuente
f90wrap se crea sobre f2py y genera automáticamente los envoltorios de Python para la base de código Fortran subyacente, incluido el acceso a los tipos derivados. Un conjunto de ejemplos simples muestra cómo funciona.
fuente
Podrías usar FortWrap para llegar hasta la mitad. Esto creará una interfaz C ++ para su código Fortran, que luego podría envolverse con SWIG para obtener una interfaz Python. Hacemos esto sobre una base algo grande de código Fortran y funciona bastante bien (de hecho, FortWrap fue desarrollado por un miembro de nuestro equipo para este propósito exacto).
fuente
fwrap
se dirige específicamente a Fortran90 / 95 y usa parte de la misma pila de software quef2py
.fuente
f2py
en F90. También tiene una barrera de entrada muy baja. Me alegré de haberlo encontrado.f2py
admite fortran moderno (matrices con forma asumida, etc.), vea un script de ejemploAdemás, para los experimentos con código fortran, recomendaría IPython magic , que es fácil de instalar y muy conveniente (también se basa en f2py).
fuente
Aquí hay una lista de envoltorios de Fortran para Python:
https://github.com/mgaitan/fortran_magic/issues/4
fuente