Passage de tableau à des fonctions
Re-Hugh !
Alors voilà, j'ai vu ça là :
http://www.developpez.net/forums/d19...-tre-fonction/
Apparemment on peut passer des tableau en argument sans passer la taille : cool !
Alors je pars du code suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function f1(x)
implicit none
real :: f1
real ,dimension(2) :: x
write(*,*) x
f1=1.0
end function f1
subroutine programme(fonction)
implicit none
real fonction
real temp
real a(2)
a(1)=2.0
a(2)=2.0
temp=fonction(a)
end subroutine programme
program main
implicit none
external f1
call programme(f1)
end program main |
qui marche et j'enlève la dimension spécifiée à 2 dans la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function f1(x)
implicit none
real :: f1
real ,dimension(:) :: x
write(*,*) x
f1=1.0
end function f1
subroutine programme(fonction)
implicit none
real fonction
real temp
real a(2)
a(1)=2.0
a(2)=2.0
temp=fonction(a)
end subroutine programme
program main
implicit none
external f1
call programme(f1)
end program main |
Et là misère ça ne marche plus...
Vous auriez une idée ?
PS : la structure de ce programme est un peu tordue mais c'est voulu : mon problème est de faire un algorithme d'optim sur une fonction donnée
-> fonction est la fonction donnée, qui est définie en dehors de tout
-> program est le programme qui lance l'optim
-> subroutine est l'algo d'optim qui reçoit donc la fonction f en argument (car celle-ci peut changer)