C C $Id: getcrd.F,v 1.3 1998/07/16 16:39:53 jjv5 Exp arjan $ C C------------------------------------------------------------------------ SUBROUTINE GETCRD(COORD0,DIRECT1,STEP,IERROR) C C CHANGES THE COORDINATES BY STEP*DIRECT1. IF THE OPERATION IS CARRIED C OUT ON INTERNAL COORDINATES, THEN THE CARTESIAN COORDINATES ARE C RECALCULATED. SINCE THE CARTESIAN AND/OR INTERNAL COORDINATES ARE C UPDATED THROUGH THE COMMON BLOCKS /XYZCRD/ AND /INTCRD/, THE ARRAY C COORD0 SHOULD NOT BE XYZ OR ZMAT. C IMPLICIT DOUBLE PRECISION (A-H,O-Z) #include "divcon.dim" #include "divcon.h" DIMENSION COORD0(*),DIRECT1(*) C C IF(XYZSPC)THEN IJ = 0 DO 20 I=1,NATOMS DO 10 J=1,3 IJ = IJ + 1 XYZ(J,I) = COORD0(IJ) + STEP*DIRECT1(IJ) 10 CONTINUE 20 CONTINUE ELSE DO 40 I=1,NPAR ITYP = IPAR(1,I) IATM = IPAR(2,I) ZMAT(ITYP,IATM) = COORD0(I) + STEP*DIRECT1(I) 40 CONTINUE IFIRST = 1 CALL GETXYZ1(NATOMS,ZMAT,IZMAT,IFIRST,XYZ,IERROR) ENDIF RETURN END