Interfac¸age de Python avec Fortran
Eric Sonnendr ¨
ucker
IRMA
Universit´
e Louis Pasteur, Strasbourg
projet CALVI
INRIA Lorraine
Journ´
ee Python et Calcul Scientifique,
IHP, Paris, 14 d´
ecembre 2006
Pourquoi interfacer Python avec Fortran ?
Python a un certain nombre d’avantages :
Langage interpr´
et´
e
Facile `
a programmer
Dispose de modules de calcul num´
erique, de
visualisation ...
Il est n´
eanmoins trop lent pour un des tˆ
aches num´
eriques
intensives.
Solution : interfacer avec C ou Fortran
Allie le meilleur des deux mondes.
Tˆ
aches de pr´
e- et post-traitement en Python.
Parties num´
eriques intensives en Fortran (ou C)
Quels outils pour l’interfac¸age Python-Fortran ?
Trois g´
en´
erateurs d’interface sont disponibles.
N´
ecessitent tous d’avoir install´
e le module Numeric
Pyfort, le plus ancien, uniquement Fortran 77 permet aussi
de traiter des fonctions de C structur ´
ees comme F77.
D´
evelopp ´
e par Paul Dubois.
http://sourceforge.net/projects/pyfortran
f2py, Fortran 95 (et C), mais ne permet pas d’interfacer les
types d´
eriv ´
es F90. D´
evelopp ´
e par Pearu Peterson. Bien
document´
e.
http://cens.ioc.ee/projects/f2py2e/
Forthon, Fortran 95, y compris interfac¸age des types
d´
eriv ´
es. D´
evelopp ´
e par Dave Grote. Pas de
documentation autre que des exemples livr´
es avec le
code. http://hifweb.lbl.gov/Forthon/
Utilisation de f2py
N´
ecessite l’installation de Numeric (Numpy), scipy distutils
(qui g`
ere la compilation et les compilateurs fortran)
Trois m´
ethodes sont propos´
ees :
1Interfacer des subroutines simples sans ´
ecrire de code
suppl´
ementaire.
2Ajouter des directives pour f2py dans le source Fortran
pour un interfac¸age plus complexe.
3Ecrire un fichier d’interface d´
ecrivant les subroutines et les
donn´
ees `
a interfacer. f2py peut g´
en´
erer automatiquement
un fichier d’interface simple qu’on peut ensuite ´
editer.
De premi`
eres interfaces
Le code Fortran
subroutine norme ( a , b )
! Ca lc ule l a norme
r e a l ( 8 ) : : a , b
r e a l ( 8 ) : : c
c= s q r t ( aa+bb )
print, l a norme de ( ” ,a , ” , ” ,b , ) es t ” , c
end subroutine norme
G´
en´
eration de l’interface python avec f2py dans le shell
f2py -c norme.f90 -m vect
Dans Python
>>> import vect
>>> vect.norme(3,4)
la norme de ( 3. , 4. ) est 5.
1 / 22 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !