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 :

identification d'erreur en declaration de variables


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 24
    Points : 36
    Points
    36
    Par défaut identification d'erreur en declaration de variables
    Bonjour
    lors de compilation de mon code je trouve le message suivant dans le subroutine qui calcul la temperature. merci bien pour vos aide
    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
    subroutine col(u,v,g,geq,th,theta,rho,
         &omegat,t_in,tw,w,cx,cy,n,m)
    	real g(0:8,0:n,0:m),geq(0:8,0:n,0:m),th(0:n,0:m)
    	real w(0:8),cx(0:8),cy(0:8)
    	real u(0:n,0:m),v(0:n,0:m),theta(0:n,0:m)
            real rho(0:n,0:m)
            real t_in(m/2),tw
            tw=0.0
            t_in(m/2)=1
             do i=0,n
    	 do j=0,m
     
             t1=u(i,j)*u(i,j)+v(i,j)*v(i,j)
             g(0,i,j)= -(2.d0/3.d0)*th(i,j)*t1(0,i,j)*rho(i,j)
             do k=1,4
             t2=u(i,j)*cx(k)+v(i,j)*cy(k)
              g(k,i,j)= w(k)* th(i,j)*rho(i,j)*(3.d0/2.d0
         &+(3.d0/2.d0)*t1+(9.d0/2.d0)*t2*t2-(3.d0/2.d0)*t2)
             end do
             do k=5,8
             t2=u(i,j)*cx(k)+v(i,j)*cy(k)
              g(k,i,j)= w(k)* th(i,j)*rho(i,j)*(3+(2.d0/3.d0)*t1+
         &(9.d0/2.d0)*t2*t2-(3.d0/2.d0)*t2)
              end do
             end do
             end do
    	return
    	end
    modthereco.for:278.9:

    g(0,i,j)= -(2.d0/3.d0)*th(i,j)*t1(0,i,j)*rho(i,j)
    1
    Error: Unclassifiable statement at (1)
    merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 35
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Le type de la variable t1 n'a pas été déclaré. Le type real lui est donc affecté implicitement à la ligne 14 de votre code. Or à la ligne suivante, t1 apparait dans l'expression de g(0,i,j) comme une référence à un tableau. D'où le message d'erreur.

    En supposant que t1 est une variable locale, de type real, qui sert de variable auxiliaire pour vos calculs, le code suivant se compile correctement :

    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
     
          subroutine col(u,v,g,th,rho,t_in,tw,w,cx,cy,n,m)
     
          real g(0:8,0:n,0:m),th(0:n,0:m)
          real w(0:8),cx(0:8),cy(0:8)
          real u(0:n,0:m),v(0:n,0:m)
          real rho(0:n,0:m)
          real t_in(m/2),tw
          real t1
     
           tw=0.0
           t_in(m/2)=1
           do i=0,n
            do j=0,m
             t1=u(i,j)*u(i,j)+v(i,j)*v(i,j)         
        	 g(0,i,j) = -(2.d0/3.d0)*th(i,j)*t1*rho(i,j)
     
             do k=1,4
              t2=u(i,j)*cx(k)+v(i,j)*cy(k)
              g(k,i,j)= w(k)* th(i,j)*rho(i,j)*(3.d0/2.d0
         &+(3.d0/2.d0)*t1+(9.d0/2.d0)*t2*t2-(3.d0/2.d0)*t2)
             end do
     
             do k=5,8
              t2=u(i,j)*cx(k)+v(i,j)*cy(k)
              g(k,i,j)= w(k)* th(i,j)*rho(i,j)*(3+(2.d0/3.d0)*t1+
         &(9.d0/2.d0)*t2*t2-(3.d0/2.d0)*t2)
              end do
     
           end do
          end do
     
          end subroutine col
    Par ailleurs, votre subroutine ne faisant pas appel aux paramètres geq, omegat et theta, je les ai retiré de la liste des paramètres et des déclarations.

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

Discussions similaires

  1. Erreur "Must declare the scalar variable "@id"
    Par Devlin111 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 15/03/2012, 12h26
  2. Réponses: 5
    Dernier message: 14/11/2006, 09h14
  3. Problème déclaration de variable dans un package
    Par LE NEINDRE dans le forum Modules
    Réponses: 3
    Dernier message: 23/08/2005, 18h26
  4. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50
  5. declarer une variable dans le query analyzer
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/03/2005, 11h26

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