C C $Id: wrtrst.F,v 1.3 1998/07/16 16:40:56 jjv5 Exp arjan $ C C------------------------------------------------------------------------ SUBROUTINE WRTRST C C-RDC C WRITES LATEST COORDINATES TO RESTART FILE divcon.rst AND, C IF THE 'TRAJECTORY' KEYWORD HAS BEEN SPECIFIED, COORDINATES C WILL BE APPENDED TO divcon.trj. C IMPLICIT DOUBLE PRECISION (A-H,O-Z) #include "divcon.dim" #include "divcon.h" C C LOCAL: C LOGICAL TRAJEC,FIRST DATA FIRST /.TRUE./ SAVE FIRST DIMENSION SCALE(3) C SCALE(1) = 1.0D0 SCALE(2) = DEGREE SCALE(3) = DEGREE C TRAJEC = INDEX(KEYWRD,'TRAJECTORY').NE.0 C C-RDC WRITE(IOUT,'(/" WRITING RESTART FILE")') C-RDC IF(SCREEN) WRITE(ISCR,'(/" WRITING RESTART FILE")') IF(TRAJEC)THEN C-RDC WRITE(IOUT,'(" APPENDING TO TRAJECTORY FILE")') C-RDC IF(SCREEN) WRITE(ISCR,'(" APPENDING TO TRAJECTORY FILE")') ENDIF C OPEN(IRST,FILE=FNAME(4),STATUS=FSTAT(4)) C C OPEN TRAJECTORY FILE ONLY ON FIRST CALL. C IF(FIRST)THEN FIRST = .FALSE. IF(TRAJEC)THEN OPEN(ITRJ,FILE=FNAME(6),STATUS=FSTAT(6)) C-RDC WRITE(ITRJ,'(I6)') NATOMS ENDIF ENDIF IF(CART)THEN DO 100 I=1,NATOMS IAI = IATNUM(I) C-RDC WRITE(IRST,'(A2,2X,3F20.14)') SYMBOL(IAI), C-RDC . (XYZ(J,I),J=1,3) 100 CONTINUE ELSE IF(XYZSPACE)THEN DO 200 I=2,NATOMS IA = IZMAT(1,I) CALL BLENG(XYZ,I,IA,ZMAT(1,I)) IF(I.GT.2)THEN IB = IZMAT(2,I) CALL BNDANG(XYZ,I,IA,IB,ZMAT(2,I)) ENDIF IF(I.GT.3)THEN IC = IZMAT(3,I) CALL DIHEDR(XYZ,I,IA,IB,IC,ZMAT(3,I)) ENDIF 200 CONTINUE ENDIF DO 300 I=1,NATOMS IAI = IATNUM(I) C-RDC WRITE(IRST,'(A2,2X,3F20.14,3I5)') SYMBOL(IAI), C-RDC . (SCALE(J)*ZMAT(J,I),J=1,3), C-RDC . (IZMAT(J,I),J=1,3) 300 CONTINUE ENDIF CLOSE(IRST) C C-RDC C WRITE TRAJECTORY FILE IN CARTESIAN COORDINATES ONLY. C IF(TRAJEC)THEN DO 400 I=1,NATOMS,2 C C TWO ATOMS PER LINE: C I1 = I I2 = MIN(I+1,NATOMS) C-RDC WRITE(ITRJ,'(6F12.6)') ((XYZ(K,IATM),K=1,3),IATM=I1,I2) 400 CONTINUE ENDIF RETURN END