Bonjour,
Voici mon problème:
Je lance une fonction "interpolate" située dans un module "FIM". Or ce module charge un autre module contenant mes variables générales utiles (que je n'aurais ainsi pas besoin de passer en argument.
Cela fonctionne très bien pour toutes les fonctions du module FIM... sauf interpolate:
Lorsque le programme arrive dans interpolate, j'ai le droit au message d'erreur suivant:
Pourtant la variable nthei est bel et bien définit et lue plus tôt et utilisée par d'autres fonctions du module FIM. alors pourquoi dans le cas de cette fonction cela ne marche pas?
Code : Sélectionner tout - Visualiser dans une fenêtre à part forrtl: severe (193): Run-Time Check Failure. The variable 'fim_mp_interpolate_$NTHEI' is being used without being defined
Le module avec les variables ressemble à ça:
Je le charge dans mon module FIM:
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 module AAA use BBB use CCC implicit none save ... integer :: nb_shaperatio, align_process, nthei,ntheo,nphio,nphii ... end module ellipsoidal
Au niveau du test donc, la variable nthei est inconnue alors même que je l'avait utilisé dans d'autres subroutines de FIM auparavant.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37 module FIM use AAA use CCC contains SUBROUTINE FIM1(a,b,c...) ... END SUBROUTINE FIM1 SUBROUTINE interpolate(sz_grain,lambda,shp_ratio,thei,theo,phio,phii,f) implicit none ... integer:: m,nthei,ntheo,nphio,nphii real, dimension(:),pointer:: tab_thei !size nthei real, dimension(:),pointer:: tab_theo !size ntheo real, dimension(:),pointer:: tab_phio !size nphio real, dimension(:),pointer:: tab_phii !size nphii if (.not.((size(tab_thei).eq.nthei).and.(size(tab_theo).eq.ntheo)& .and.(size(tab_phio).eq.nphio).and.(size(tab_phii).eq.nphii)))then write(*,*)"interpolate input error : array size unexpected" STOP end if ... END SUBROUTINE INTERPOLATE ... END MODULE FIM
Comment cela se fait-il ? Comment solutionner ce problème ?
Je code en f90 et j'utilise ifort sous linux.
Merci beaucoup pour votre aide.
Partager