IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Problème lors de la compilation


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème lors de la compilation
    Bonjour à tous,
    Je vous écris parce que j'ai un problème lors de la compilation de mon programme et je ne vois pas du tout comment le résoudre...
    Je l'insère ci-dessous, je suis sous linux et utilise gfortran comme compilateur, lorsque je tape gfortran -o blablabla blablabla.f90, il me renvoie l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do i=1,nx
               1
    Error: Name 'nx' at (1) is an ambiguous reference to 'nx' from current program unit
    Et ceci dès que j'utilise nx,ny,u,v...
    Donc avez-vous une idée? Je vous remercie par avance.
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    MODULE parametres
      INTEGER,PARAMETER :: nx=900,ny=300,nt=1000 !Déclaration des entiers
      REAL,PARAMETER :: dx=1/nx,dy=1/ny,dt=1/nt,h=2.0,k=0.3,m=0.8,e1=0.0000002,e2=0.00003,e3=0.00012          !Déclaration des réels
    END MODULE parametres
     
    MODULE my_variables
      USE parametres
      REAL, DIMENSION(0:nx+1,0:ny+1) :: u,v,u2,v2 !Déclaration des abondances (u =proie, v=prédateur) comme une matrice à deux dimensions
    END MODULE my_variables
     
    SUBROUTINE initiale(u,v,dx,dy,dt,h,k,m,nx,ny,e1,e2,e3,nt) !sous programme créant les tableaux initiaux u et v à l'instant t=0
      USE parametres
      USE my_variables
      do i=1,nx
         do j=1,ny
            u(i,j)=m/k*h/(1-m/k)-e1*(i-0.1*j-225)*(i-0.1*j-675) !conditions initiales sur u
            v(i,j)=(1-(m/k*h/(1-m/k)))*(h+(m/k*h/(1-m/k)))-e2*(i-450)-e3*(j-150)!conditions initiales sur v
         end do
      end do
     
    END SUBROUTINE initiale
     
    SUBROUTINE stockage(u,v,u2,v2,nx,ny) !sous programme qui stock les matrices u et v de l'instant n dans les matrices u2 et v2 et qui impose les conditions aux bords (absence de flux aux bords)
      USE parametres, ONLY:nx,ny
      USE my_variables
      do i=0,nx+1               !première et dernière ligne égale à 3e et avant avant dernière
         u(i,0)=u(i,2)
         u(i,nx+1)=u(i,nx-1)
         v(i,0)=v(i,2)
         v(i,nx+1)=v(i,nx-1)
      end do
     
      do j=0,ny+1               !première et dernière colonne égale à 3e et avant avant dernière
         u(0,j)=u(2,j)
         u(ny+1,j)=u(ny-1,j)
         v(0,j)=v(2,j)
         v(ny+1,j)=v(ny-1,j)
      end do
     
      u2=u                       !on stock les valeurs de u à l'instant n dans u2
      v2=v                       !on stock les valeurs de v à l'instant n dans v2
    END SUBROUTINE stockage
     
     
     
    SUBROUTINE espace(u,v,dx,dy,dt,h,k,m,u2,v2,nx,ny,nt)
      USE parametres
      USE my_variables
      CALL stockage(u,v,u2,v2,nx,ny)
     
      do i=1,nx
         do j=1,ny
     
     
            u(i,j)=u2(i,j) + dt*((u2(i+1,j)-2*u2(i,j)+u2(i-1,j))/dx**2 + & 
                 (u2(i,j+1)-2*u2(i,j)+u2(i,j-1))/dy**2 + &
                 u2(i,j)*(1-u2(i,j)) - u2(i,j)*v2(i,j)/(u2(i,j)+h)) !calcul de u(n+1) en fonction de u(n) et v(n)
     
            v(i,j)=v2(i,j) + dt*((v2(i+1,j)-2*v2(i,j)+v2(i-1,j))/dx**2 + &
                 (v2(i,j+1)-2*v2(i,j)+v2(i,j+1))/dy**2 + &
                 k*u2(i,j)*v2(i,j)/(u2(i,j)+h) - m*v2(i,j))        !calcule de v(n+1) en fonction de u(n) et v(n)
     
         end do
      end do
    END SUBROUTINE espace
     
    PROGRAM proie_predateur
     
      USE parametres
      USE my_variables
      IMPLICIT NONE
     
      CALL initiale(u,v,dx,dy,dt,h,k,m,nx,ny,e1,e2,e3)
     
      do t=1,nt
         CALL espace(u,v,dx,dy,dt,h,k,m,u2,v2)
      end do
     
    END PROGRAM proie_predateur

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Le problème vient du fait que nx, ... apparaissent comme arguments de la routine Initiale et qu'ils sont aussi accessibles via le use parametres. Le compilateur voit donc 2 identificateurs distincts ayant le même nom et ne sait pas auquel tu fais référence.

    La solution : tu n'as pas à passer en argument des éléments accessibles via les uses, surtout quand ce sont des constants.

    Je suis quand même surpris qu'il indique une erreur car je croyais que les arguments avaient préséance et masquaient les identificateurs accessibles via les uses...

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    En effet, c'était bien le problème, ceci est désormais résolu merci beaucoup!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème lors de la compilation
    Par snake264 dans le forum Dev-C++
    Réponses: 5
    Dernier message: 14/11/2006, 20h07
  2. Réponses: 4
    Dernier message: 25/09/2006, 10h24
  3. Problème lors de la compilation
    Par nicolas66 dans le forum C++
    Réponses: 9
    Dernier message: 25/07/2006, 22h32
  4. problème lors de la compilation : Unsatisfied symbols
    Par la schtroumpfette dans le forum C
    Réponses: 6
    Dernier message: 29/12/2005, 09h52
  5. Réponses: 7
    Dernier message: 27/09/2005, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo