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

Le module avec les variables ressemble à ça:
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
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
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
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.

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.