.

Traduzir

segunda-feira, 24 de setembro de 2012

Definição de Tipo para funções em f2py

Para começar, o f2py é uma ferramenta que hoje está incluída no numpy e que permite criar extensões em FORTRAN para python.
Eu estava com um problema ao criar uma função em fortran, que seria chamada por uma subrotina. Ao tentar compilar o código com f2py. Em um ponto aparecia a seguinte mensagem:

unknown type name ‘func_typedef’

Ai descobri que quando se cria uma função, o f2py não consegue identificar o seu tipo por si só, é preciso declarar o tipo da função na subrotina na qual a mesma será chamada

Nesse caso, a declaração tem que ser a seguinte

c file:teste.f
       subroutine teste(func,a,b)
           external func
           real a,b,func
cf2py intent(in) :: a
cf2py intent(out) :: b
c Declaracao do tipo da funcao func
cf2py real(DP) a
cf2py a = func(a)

           b = func(a)
       end

       real function func(a)

c Declaracao do tipo da funcao func

cf2py real(DP) a
cf2py a = func(a)
           func = a**2.0
           return
       end




Agora é só compilar com

$ f2py -c teste.f -m teste