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
qui marche et j'enlève la dimension spécifiée à 2 dans la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Et là misère ça ne marche plus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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)
Partager