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:
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
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 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