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