1 SUBROUTINE DCART (COORD,DXYZ)
2 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
4 DIMENSION COORD(3,*), DXYZ(3,*)
5 COMMON /MOLKST/ NUMAT,NAT(NUMATM),NFIRST(NUMATM),NMIDLE(NUMATM),
6 1 NLAST(NUMATM), NORBS, NELECS,NALPHA,NBETA,
7 2 NCLOSE,NOPEN,NDUMY,FRACT
8 COMMON /DENSTY/ P(MPACK), PA(MPACK), PB(MPACK)
9 C***********************************************************************
11 C DCART CALCULATES THE DERIVATIVES OF THE ENERGY WITH RESPECT TO THE
12 C CARTESIAN COORDINATES. THIS IS DONE BY FINITE DIFFERENCES.
14 C THE MAIN ARRAYS IN DCART ARE:
15 C DXYZ ON EXIT CONTAINS THE CARTESIAN DERIVATIVES.
17 C***********************************************************************
18 COMMON /KEYWRD/ KEYWRD
19 COMMON /EULER / TVEC(3,3), ID
20 COMMON /MOLMEC/ HTYPE(4),NHCO(4,20),NNHCO,ITYPE
21 COMMON /UCELL / L1L,L2L,L3L,L1U,L2U,L3U
22 COMMON /DCARTC/ K1L,K2L,K3L,K1U,K2U,K3U
23 COMMON /NUMCAL/ NUMCAL
25 DIMENSION PDI(171),PADI(171),PBDI(171),
26 1CDI(3,2),NDI(2),LSTOR1(6), LSTOR2(6), ENG(3)
27 LOGICAL DEBUG, FORCE, MAKEP, ANADER, LARGE
28 EQUIVALENCE (LSTOR1(1),L1L), (LSTOR2(1), K1L)
29 SAVE CHNGE, CHNGE2, ANADER, DEBUG, FORCE
34 * CHNGE IS A MACHINE-PRECISION DEPENDENT CONSTANT
37 IF (ICALCN.NE.NUMCAL) THEN
39 LARGE = (INDEX(KEYWRD,'LARGE') .NE. 0)
40 ANADER= (INDEX(KEYWRD,'ANALYT') .NE. 0)
41 DEBUG = (INDEX(KEYWRD,'DCART') .NE. 0)
42 FORCE = (INDEX(KEYWRD,'PREC')+INDEX(KEYWRD,'FORCE') .NE. 0)
44 NCELLS=(L1U-L1L+1)*(L2U-L2L+1)*(L3U-L3L+1)
55 III=NCELLS*(II-1)+IOFSET
62 30 CDI(I,2)=COORD(I,II)
65 C FORM DIATOMIC MATRICES
78 40 CDI(L,1)=COORD(L,JJ)+TVEC(L,1)*IK+TVEC(L,2)*JK+TVEC
80 IF(.NOT. MAKEP) GOTO 90
91 C GET SECOND ATOM FIRST ATOM INTERSECTION
110 IF(II.EQ.JJ) GOTO 120
112 CALL ANALYT(PDI,PADI,PBDI,CDI,NDI,JF,JL,IF,IL
115 DXYZ(K,III)=DXYZ(K,III)-ENG(K)
116 100 DXYZ(K,JJJ)=DXYZ(K,JJJ)+ENG(K)
118 IF( .NOT. FORCE) THEN
119 CDI(1,1)=CDI(1,1)+CHNGE2
120 CDI(2,1)=CDI(2,1)+CHNGE2
121 CDI(3,1)=CDI(3,1)+CHNGE2
122 CALL DHC(PDI,PADI,PBDI,CDI,NDI,JF,JM,JL,IF,IM
127 CDI(K,2)=CDI(K,2)-CHNGE2
128 CALL DHC(PDI,PADI,PBDI,CDI,NDI,JF,JM,JL,IF
131 CDI(K,2)=CDI(K,2)+CHNGE
132 CALL DHC(PDI,PADI,PBDI,CDI,NDI,JF,JM,JL,IF,IM
134 CDI(K,2)=CDI(K,2)-CHNGE2
135 IF( .NOT. FORCE) CDI(K,2)=CDI(K,2)-CHNGE2
136 DERIV=(AA-EE)*23.061D0/CHNGE
137 DXYZ(K,III)=DXYZ(K,III)-DERIV
138 DXYZ(K,JJJ)=DXYZ(K,JJJ)+DERIV
145 C NOW ADD IN MOLECULAR-MECHANICS CORRECTION TO THE H-N-C=O TORSION
151 COORD(K,NHCO(J,I))=COORD(K,NHCO(J,I))-DEL
152 CALL DIHED(COORD,NHCO(1,I),NHCO(2,I),NHCO(3,I),NHCO(4,
154 REFH=HTYPE(ITYPE)*SIN(ANGLE)**2
155 COORD(K,NHCO(J,I))=COORD(K,NHCO(J,I))+DEL*2.D0
156 CALL DIHED(COORD,NHCO(1,I),NHCO(2,I),NHCO(3,I),NHCO(4,
158 COORD(K,NHCO(J,I))=COORD(K,NHCO(J,I))-DEL
159 HEAT=HTYPE(ITYPE)*SIN(ANGLE)**2
160 SUM=(REFH-HEAT)/(2.D0*DEL)
161 DXYZ(K,NHCO(J,I))=DXYZ(K,NHCO(J,I))-SUM
167 170 LSTOR1(I)=LSTOR2(I)
168 IF ( .NOT. DEBUG) RETURN
169 WRITE(6,'(//10X,''CARTESIAN COORDINATE DERIVATIVES'',//3X,
170 1''NUMBER ATOM '',5X,''X'',12X,''Y'',12X,''Z'',/)')
172 WRITE(6,'(2I6,F13.6,2F13.6)')
173 1 (I,NAT(I),(DXYZ(J,I),J=1,3),I=1,NUMTOT)
175 WRITE(6,'(2I6,F13.6,2F13.6)')
176 1 (I,NAT((I-1)/NCELLS+1),(DXYZ(J,I),J=1,3),I=1,NUMTOT)
178 WRITE(6,'(2I6,F13.6,2F13.6)')
179 1 (I,NAT((I-1)/NCELLS+1),(DXYZ(J,I)+DXYZ(J,I+1)+DXYZ(J,I+2)
180 2,J=1,3),I=1,NUMTOT,3)
185 SUBROUTINE DHC (P,PA,PB,XI,NAT,IF,IM,IL,JF,JM,JL,DENER,MODE)
186 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
187 DIMENSION P(*), PA(*), PB(*)
188 DIMENSION XI(3,*),NFIRST(2),NMIDLE(2),NLAST(2),NAT(*)
189 C***********************************************************************
191 C DHC CALCULATES THE ENERGY CONTRIBUTIONS FROM THOSE PAIRS OF ATOMS
192 C THAT HAVE BEEN MOVED BY SUBROUTINE DERIV.
194 C***********************************************************************
195 COMMON /KEYWRD/ KEYWRD
196 1 /ONELEC/ USS(107),UPP(107),UDD(107)
197 COMMON /EULER / TVEC(3,3), ID
198 COMMON /NUMCAL/ NUMCAL
199 SAVE ICALCN, WLIM, UHF
202 DIMENSION H(171), SHMAT(9,9), F(171),
203 1 WJ(100), E1B(10), E2A(10), WK(100), W(100),
205 DOUBLE PRECISION WJS, WKS
207 IF( ICALCN.NE.NUMCAL) THEN
211 UHF=(INDEX(KEYWRD,'UHF') .NE. 0)
217 NMIDLE(2)=NFIRST(2)+JM-JF
218 NLAST(2)=NFIRST(2)+JL-JF
219 LINEAR=(NLAST(2)*(NLAST(2)+1))/2
235 CALL H1ELEC(NI,NJ,XI(1,1),XI(1,2),SHMAT)
236 IF(NAT(1).EQ.102.OR.NAT(2).EQ.102) THEN
255 CALL ROTATE (NJ,NI,XI(1,2),XI(1,1),W(KR),KR,E2A,E1B,ENUCLR,100.
258 CALL SOLROT (NJ,NI,XI(1,2),XI(1,1),WJ,WK,KR,E2A,E1B,ENUCLR,100.
260 IF(MODE.EQ.1)CUTOFF=(WJ(1).LT.WLIM)
271 C * ENUCLR IS SUMMED OVER CORE-CORE REPULSION INTEGRALS.
280 70 F(II)=F(II)+E1B(I2)
284 80 H(II)=H(II)+E1B(1)
292 90 F(II)=F(II)+E2A(I2)
296 100 H(II)=H(II)+E2A(1)
297 CALL FOCK2(F,P,PA,W, WJS, WKS,2,NFIRST,NMIDLE,NLAST)
298 EE=HELECT(NLAST(2),PA,H,F)
302 CALL FOCK2(F,P,PB,W, WJS, WKS,2,NFIRST,NMIDLE,NLAST)
303 EE=EE+HELECT(NLAST(2),PB,H,F)