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 :

Programme Fortran Application Chimie


Sujet :

Fortran

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Programme Fortran Application Chimie
    Bonjour,


    Je débute en FORTRAN et j'ai un peu du mal... je viens donc demander votre aide.

    Je désirerai réaliser un programme qui calcule la différence entre des coordonnées d'atome dans deux fichiers.. Une fois ces valeurs obtenues, j'aimerai que ce programme m'écrive (dans un fichier externe) une commande en fonction des distances calculées, par exemple si j'ai une distance entre les coordonnées atomoque de moins de deux Angstroms, alors il m'écrit (dans un fichier externe) une commande particulière (que je pourrai alors réutiliser avec un autre programme).



    J'ai déjà "l'algorithme en tete", je vous mets en copie ci-dessus mon code. Lors de la compilation j'obtiens l'erreur suivante :



    else if (RMSD>2) THEN WRITE(101,*) "color",i,"orange"
    1
    Error: Unexpected junk after ELSE IF statement at (1)
    Et mon code est :

    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
    PROGRAM fluctuation_atome
    IMPLICIT NONE
    INTEGER:: natom,i,RMSD 
    REAL::X1,Y1,Z1,X2,Y2,Z2,deltaX,deltaY,deltaZ
     
    OPEN(unit=101,file='output.py')
     
    OPEN (unit=99,file='before.pdb')
    READ(99,*) natom
     
       DO i=1,natom
              READ(99,*) X1,Y1,Z1
       ENDDO 
    CLOSE(99)
     
    OPEN (unit=100,file='after.pdb')
    READ(100,*) natom
     
       DO i=1,natom
               READ(100,*) X2,Y2,Z2
       ENDDO
    CLOSE(100)
     
     
       DO i=1,natom
               deltaX=abs(X1-X2)
               deltaY=abs(Y1-Y2)
               deltaZ=abs(Z1-Z2)
     
     
     
        RMSD=SQRT(deltaX**2 + deltaY**2 + deltaZ**2) 
     
             if(RMSD < 2) WRITE (101,*) "color",i,"green"
     
             else if (RMSD>2) THEN WRITE(101,*) "color",i,"orange"
     
       ENDDO
     
    CLOSE(unit=101)
     
     
    END PROGRAM fluctuation_atome

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    La syntaxe "if (condition) instruction" en une ligne est un cas particulier (tout tient sur une ligne).
    Si il y a des instructions à effectuer ou une clause "else" il faut impérativement écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (condition) then
      instructions
    else
      instructions
    endif
    Si le "else" est également soumis à condition, on peut en faire un "else if () then":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (condition) then
      instructions
    else if (condition) then
      instructions
    endif
    qui est plus succinct (mais pas forcément plus lisible pour certains) que de déployer complètement les conditionnelles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (condition) then
      instructions
    else 
      if (condition) then
        instructions
      else
        instructions
      endif
    endif
    Ton code semble en tout cas ne pas avoir besoin de condition sur le "else" et devrait donc fonctionner avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
             if(RMSD < 2) then
               WRITE (101,*) "color",i,"green"
             else  
               WRITE(101,*) "color",i,"orange"
             endif
    Bonne continuation.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/10/2006, 01h42
  2. Réponses: 5
    Dernier message: 06/03/2006, 00h51
  3. [VB.NET] Programmer une Application qui tourne sur un PDA?
    Par Bils dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/01/2006, 04h23
  4. Liste des programme ou applications sous windows xp
    Par bob40 dans le forum Windows XP
    Réponses: 1
    Dernier message: 12/01/2006, 02h14
  5. une IHM pour mon programme fortran
    Par mehdouchi dans le forum Fortran
    Réponses: 5
    Dernier message: 09/09/2005, 16h00

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