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 :

[Fortran 90][Débutant] Erreurs de compilation


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Points : 16
    Points
    16
    Par défaut [Fortran 90][Débutant] Erreurs de compilation
    salut a tous,
    voila apres éditer un programme sur fortran 90, je compile mais ça me donne des erreurs. sachant que c'est mon premier code sur fortran je vous demande s'il y a quelqu'un qui est pret à m'aider et merci à lui...
    voici les erreurs dont je parle:
    1/program "pompage" is missing an END statement.
    2/this unnamed main program unit is missing an END statement.
    3/this compilation unit contains multiple main program units.
    4/ unknown statement. expected assignment statement but found "(" instead "=" or "=>".
    5/the left hand side of an assignment statement must be a variable or a function result.
    6/this DO variable is already being used as the DO variable of an outer loop.

    Merci à vous tous; bonne journée..

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Points : 89
    Points
    89
    Par défaut Erreurs compilation
    Bonjour,

    Globalement un compilateur ne fait pas l'effort d'écrire des messages d'erreurs pour ne rien dire ...
    Les messages me semblent assez explicites mais bon ...

    1/program "pompage" is missing an END statement.
    2/this unnamed main program unit is missing an END statement.
    3/this compilation unit contains multiple main program units.
    Commence par vérifier si tu as bien terminé ton programme par un
    et que tu n'utilise pas plusieurs fois l'instruction "program" dans ton code.
    Pour la suite des erreurs, je préfèrerais voir le code source mais il me semble qu'une assignation soit mal écrite et qu'une boucle Do soit mal fermée.

    Mais une fois de plus sans code source et avec si peu d'information...c'est difficile de t'aider !

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 41
    Points
    41
    Par défaut Erreurs de compilation
    Bonjour,
    En fait, la dernière erreur que tu relèves correspond au fait que tu dois avoir deux boucles emboîtées qui fonctionnent avec la même variable d'itération. Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    do i=1,toto
    ...
      do i=1,toto2
     ...
     enddo
    enddo
    Pour l'erreur 5, j'ai déjà rencontré ça avec des tableaux alloués, si tu oublies l'indice designant la cellule où tu veux placer la valeur indiquée à droite de ton assignation.
    Mais effectivement, sans le code, pas facile de t'aider plus...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par doguette Voir le message
    Bonjour,
    En fait, la dernière erreur que tu relèves correspond au fait que tu dois avoir deux boucles emboîtées qui fonctionnent avec la même variable d'itération. Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    do i=1,toto
    ...
      do i=1,toto2
     ...
     enddo
    enddo
    Pour l'erreur 5, j'ai déjà rencontré ça avec des tableaux alloués, si tu oublies l'indice designant la cellule où tu veux placer la valeur indiquée à droite de ton assignation.
    Mais effectivement, sans le code, pas facile de t'aider plus...
    bonjour, le code source est le suivant:
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
     
          PROGRAM pompage 
          Implicit none
          integer :: i,j,k,m,Nstep
          real (kind=8) :: Rco,Aco,Rfo,Acl,gamma_p
          real (kind=8) :: lambda_s,sigma_ap,sigma_ep,sigma_es,sigma_as
          real (kind=8) :: alpha_p,alpha_s,tau,delta_lambda_s,n
          real (kind=8) :: gamma_s,R1,R2,tau_s,h
          real (kind=8) :: c,vp,vs,A21
          real (kind=8) :: v,deltaX,Dt
          real (kind=8) :: T,deltaT,Tmin,Tmax
          real (kind=8) :: resultat,TOL
          real (kind=8) :: pi=4.D0*atan(1.D0) 
     
          Integer, parameter :: Nmax=201, Nit=200
          real (kind=8), parameter :: PsmoinsL=1.D-06,W0=30.D0, L=500.D0
          real (kind=4), Dimension(Nit) :: N1,N2,X,Pp
          real (kind=8), Dimension(Nit) :: Psplus,Psmoins
          real (kind=8), Dimension(Nit) :: R12,R21,W12,W21
          Do 10 i=1,Nit
       10   N1(i)=0.D0
    !
          Do 20 i=1,Nit   
       20   N2(i)=0.D0
    !
          Do 30 i=1,Nit   
       30   X(i)=0.D0
    !
          Do 40 i=1,Nit      
       40   Pp(i)=0.D0
    !      
          Do 50 i=1,Nit     
       50   Psplus(i)=0.D0
    !     
          Do 60 i=1,Nit    
       60   Psmoins(i)=0.D0 
    !     
          Do 70 i=1,Nit
       70   R12(i)=0.D0
    !     
          Do 80 i=1,Nit
       80   R21(i)=0.D0
    !      
          Do 90 i=1,Nit
       90   W12(i)=0.D0
    !   
          Do 100 i=1,Nit
      100    W21(i)=0.D0 
     
    !!!!!!!!!!!!!!!!!!!  ouverture du fichier resultats.dat
     
          open(20,file='F:\projet_these_mghaaraz\calcul_static\&
         &resultats.dat',form='formatted',status='unknown')
     
          Dt=0.1D0
          Tmin = 0.D0
          Tmax = 1000.D0
          t=Tmin
          Nstep=(Tmax-Tmin)/Dt
          write(*,*)'Nstep=',Nstep
     
          t=Nstep*Dt
          TOL = 1.D-03
     
    !!!!!!!!!!!!!!!!!!!  déclaration des données 
     
          data sigma_ap,sigma_ep,sigma_es,sigma_as,alpha_p,alpha_s,&
          delta_lambda_s,gamma_s,R1,R2,tau_s,h,vp,N/3.D-25,5.D-26,&
          2.5D-25,1.4D-27,3.D-03,5.D-03,2.D-08,0.75D0,0.04D0,0.4D0,3.D-07,&
          6.62D-34,3.D08,319.D12/
     
          Rco=8.D-06
          Aco=pi*Rco**2.D0
          write(*,*) 'Aco=', Aco
     
          Rfo=200.D-06     
          Acl=pi*(Rfo**2-Rco**2)
          write(*,*) 'Acl=', Acl
     
          gamma_p=Aco/Acl
          write(*,*) 'gamma_p=', gamma_p
     
          c=3.D08
          lambda_s=1.08D-06
          vs=c/lambda_s
          write(*,*) 'vs=', vs 
     
          tau=1.D-03
          A21=1.D0/tau
          write(*,*) 'A21=', A21
     
          n=1.45D0
          v=c/n
          write(*,*) 'v=', v
     
          deltaX=L/float(Nit)
          write(*,*) 'deltaX=', deltaX
     
    !!!!!!!!!!!!!!!!!!!  conditions initiales
     
          N=3.D19
          N2(1)=7.2D20
          N1(1)=2.28D19   ! N1(0)=N-N2(0)
          Pp(1)=W0
          Psplus(1)=0.D0
          X(1)=0.D0
          R12(1)=0.D0
          R21(1)=0.D0
          W12(1)=0.D0
          W21(1)=0.D0
          write(*,*)'N2(1)=',N2(1)
          write(*,*)'N1(1)=',N1(1)
          write(*,*)'Pp(1)=',Pp(1)
          write(*,*)'Psplus(1)=',Psplus(1)
          write(*,*)'X(1)=',X(1)
          write(*,*)'R12(1)=',R12(1)
          write(*,*)'R21(1)=',R21(1)
          write(*,*)'W12(1)=',W12(1)
          write(*,*)'W21(1)=',W21(1)     
     
     
    !!!!!!!!!!!!!!!!!!!  Boucles de calcul statique
     
     
          call initialisation1(Psmoins, 201, 200, X)  
          write (*,*) 'Psmoins=', Psmoins, 'X=', X
          if (i.lt.Nmax) then 
     
             do i=1,Nit
                N1(i+1)=((R21(i)+W21(i)+A21)/(R12(i)+W12(i)+R21(i)+W21(i)+&
                A21))*N 
                N2(i+1)=N-N1(i+1)
     
                do j=1,Nit
                   R12(j+1)=(sigma_ap*Pp(j+1)*gamma_p)/(Aco*h*vp)
                   R21(j+1)=(sigma_ep*Pp(j+1)*gamma_p)/(Aco*h*vp)
                   W12(j+1)=(sigma_as*(Psplus(j+1)+Psmoins(j+1))*gamma_s)/&
                   (Aco*h*vs)
                   W21(j+1)=(sigma_es*(Psplus(j+1)+Psmoins(j+1))*gamma_s)/&
                   (Aco*h*vs)
     
                   do k=1,Nit
                      Psplus(k+1)=Psplus(k)+gamma_s*(sigma_es*N2(k)-&
                      sigma_as*N1(k))*Psplus(k)*deltaX+gamma_s*N2(k)*&
                      sigma_es*2.D0*int(n)*h*c*c*(delta_lambda_S/lambda_S**&
                      3)*deltaX-alpha_s*Psplus(k)*deltaX
     
                      do m=1,Nit
                         Pp(m+1)=Pp(m)+gamma_p*(sigma_ep*N2(m)-sigma_ap*&
                         N1(m))*Pp(m)*deltaX-alpha_p*Pp(m)*deltaX
                      end do
     
                   end do
     
                end do
     
             end do
             write(20,3000) "Pp=", Pp, "Psplus=", Psplus, "N2/N=", N2/N  
     
          else if (i.gt.1) then
             do i=Nit, 2, -1
                N1(i-1)=((R21(i)+W21(i)+A21)/(R12(i)+W12(i)+R21(i)+W21(i)+&
                A21))*N
                N2(i-1)=N-N1(i-1)
     
                do j=Nit, 2, -1
                   R12(j-1)=(sigma_ap*Pp(j-1)*gamma_p)/(Aco*h*vp)
                   R21(j-1)=(sigma_ep*Pp(j-1)*gamma_p)/(Aco*h*vp)
                   W12(j-1)=(sigma_as*(Psplus(j-1)+Psmoins(j-1))*gamma_s)/&
                   (Aco*h*vs)
                   W21(j-1)=(sigma_es*(Psplus(j-1)+Psmoins(j-1))*gamma_s)/&
                   (Aco*h*vs)
     
                   do k=Nit, 2, -1
                      Psmoins(k-1)=Psmoins(k)+gamma_s*(sigma_es*N2(k)-&
                      sigma_as*N1(k))*Psmoins(k)*deltaX+gamma_s*N2(k)*&
                      sigma_es*2.D0*int(n)*h*c*c*(delta_lambda_S/lambda_S**&
                      3)*deltaX-alpha_s*Psmoins(k)*deltaX
                   end do
     
                end do
     
             end do
             write(20,3000) "Psmoins=", Psmoins
          else
             write(*,*) 'erreur!!!'   
     
          end if
     
     
     
    !!!!!!!!!!!!!!!!!!!  test condition initiale entre Ps+ et Ps- en 0
     
          R1=R1*100.D+0
          write(*,*) 'R1=', R1
     
          resultat=Psplus(1)/Psmoins(1)
          resultat=resultat*100.D+0
          write(*,*) 'resultat=', resultat
     
          if (resultat.ge.R1-0.005D+0 .and. resultat.le.R1+0.005D+0) then
             write(*,*) 'la valeur initiale de Ps- "OK"'
          else
             write(*,*) 'la valeur initiale de Ps- "not OK"'
          endif
     
          write(20,2000)
          write(20,1000)
     1000 format( 64('-') )    
     2000 format(' / X',10X,'Pp',10X,'N2/N',10X,'Psplus',10X,'Psmoins / ')
     3000 format(' /', 3(5X,F5.3), 2(5X,D10.3), ' /') 
          close(20)
     
          contains 
     
    !!!!!!!!!!!!!!!!!!!  subroutine initialisation de Psmoins et X
     
          subroutine initialisation1(Psmoins, Nmax, Nit, X)
          implicit none
          real (kind=8), Dimension(Nit) :: Psmoins
          real (kind=4), Dimension(Nit) ::  X
          integer :: i,Nit,Nmax
          real (kind=8) :: PsmoinsL, deltaX, L
          L=500.D0
          PsmoinsL=1.D-06
          Psmoins(1)=PsmoinsL
          X(1)=0.
          deltaX=L/float(Nit)
          do while (i.lt.Nmax)
             do i=1, Nit
             Psmoins(i+1)=Psmoins(1)
             X(i+1)=X(i)+deltaX
             enddo
          end do
          end subroutine initialisation1
     
          end
    et merci encore

Discussions similaires

  1. [VBA-E]{Débutant} Erreurs de compilation
    Par kenny49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/04/2007, 08h15
  2. Réponses: 15
    Dernier message: 01/11/2005, 13h32
  3. [MASM32][Débutant] Erreur de compilation
    Par Priest dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 02/10/2005, 02h06
  4. Réponses: 12
    Dernier message: 26/08/2005, 10h02
  5. [Débutant]Erreur de compilation inconprehensible
    Par @r$£~%[ dans le forum C++
    Réponses: 15
    Dernier message: 14/08/2005, 20h04

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