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 :
Et mon code est :else if (RMSD>2) THEN WRITE(101,*) "color",i,"orange"
1
Error: Unexpected junk after ELSE IF statement at (1)
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
Partager