.

Traduzir

domingo, 19 de setembro de 2010

Python e Fortran 77

É muito comum escutar no meio acadêmico que o motivo de não se utilizar o PYTHON é que o mesmo, por ser uma linguagem script é muito lento. Na verdade o que está por traz disso é o fato de que a linguagem dominante na ciência (inclusive no desenvolvimento de modelos que fazem projeção de que as geleiras do Himalaia irão derreter em 2020 ;p ) é FORTRAN 77.



É verdade sim que rodar a discretização de  uma equação diferencial parcial (EDP) em PYTHON é mais lenta. Mas para isso, temos a solução, usar o melhor de dois mundo, com f2py é possível compilar uma função em fortran empacota-la ("wrap") e chama-la em python. Dessa forma, é possível fazer só a discretização da EDP em fortran, na forma de uma função por exemplo, e chama-la em python.

Segue um "Oi Mundo" de como fazer isso.

Primeiro vamos ao código em FORTRAN 77.

c file: oimundo.f
       subroutine oi(a)
       real*8 a
cf2py   real intent(in) a
       write(6,*) 'Oi Mundo! O valor de a e: ',a
       end

Agora vamos empacotar essa função para ser entendida pelo python.

sh> f2py  -c  -m oimundo oimundo.f

O comando -m cria o modulo oimundo já o comando -c compila o arquivo oimundo.f


Feito isso é só rodar o python
sh> python
>>import oimundo
>>oimundo.oi(5)
>> Oi Mundo! O valor de a e: 5.0

Para os programadores das galáxias.

Eduardo e Monica, versão nerd

Esse quadrinho está ótimo, a fonte é http://nerdson.com/blog/os-nerds-tambem-amam-4/, que é um blog muito bom.