2 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
4 C***********************************************************************
6 C THIS IS A DRIVER ROUTINE FOR ELECTROSTATIC POTENTIAL GENERATION
7 C WRITTEN BY K.M.MERZ FEB. 1989 AT UCSF
9 C***********************************************************************
10 COMMON /KEYWRD/ KEYWRD
13 C SET STANDARD PARAMETERS FOR THE SURFACE GENERATION
15 IF(INDEX(KEYWRD,'SCALE=') .NE. 0)THEN
16 SCALE = READA(KEYWRD,INDEX(KEYWRD,'SCALE='))
21 IF(INDEX(KEYWRD,'DEN=') .NE. 0)THEN
22 DEN = READA(KEYWRD,INDEX(KEYWRD,'DEN='))
27 IF(INDEX(KEYWRD,'SCINCR=') .NE. 0)THEN
28 SCINCR = READA(KEYWRD,INDEX(KEYWRD,'SCINCR='))
33 IF(INDEX(KEYWRD,'NSURF=') .NE. 0)THEN
34 N = READA(KEYWRD,INDEX(KEYWRD,'NSURF='))
41 C NOW CALCULATE THE SURFACE POINTS
43 IF(INDEX(KEYWRD,'WILLIAMS') .NE. 0) THEN
47 CALL SURFAC(SCALE,DEN,I)
48 SCALE = SCALE + SCINCR
52 C NEXT CALCULATE THE ESP AT THE POINTS CALCULATED BY SURFAC
59 WRITE(6,20) 'TIME TO CALCULATE ESP:',TIME1,' SECONDS'
60 20 FORMAT(/9X,A,F8.2,A)
65 C ROUTINE TO CALCULATE WILLIAMS SURFACE
67 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
69 DIMENSION IZ(100),XYZ(3,100),VDERW(53),DIST(100)
70 DIMENSION XMIN(3),XMAX(3),COORD(3,NUMATM)
71 COMMON /GEOM/ GEO(3,NUMATM)
72 COMMON /GEOKST/ NATOMS,LABELS(NUMATM), NABC(3*NUMATM)
74 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
75 COMMON /WORK1/ POTPT(3,MESP), WORK1D(4*MESP)
76 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
94 C CHECK IF VDERW IS DEFINED FOR ALL ATOMS
96 C CONVERT INTERNAL TO CARTESIAN COORDINATES
98 CALL GMETRY(GEO,COORD)
100 C STRIP COORDINATES AND ATOM LABEL FOR DUMMIES (I.E. 99)
105 10 CO(J,I) = COORD(J,I)
106 IF(LABELS(I) .EQ. 99) GOTO 20
108 IAN(ICNTR) = LABELS(I)
114 IF (VDERW(J).EQ.0.0D0) GO TO 40
118 WRITE(6,*) 'VAN DER WAALS'' RADIUS NOT DEFINED FOR ATOM',I
119 WRITE(6,*) 'IN WILLIAMS SURFACE ROUTINE PDGRID!'
121 C NOW CREATE LIMITS FOR A BOX
126 IF (CO(IX,IA)-XMIN(IX))60,70,70
127 60 XMIN(IX)=CO(IX,IA)
128 70 IF (CO(IX,IA)-XMAX(IX))90,90,80
129 80 XMAX(IX)=CO(IX,IA)
132 C ADD (OR SUBTRACT) THE MAXIMUM VDERW PLUS SHELL
135 IF (VDERW(I).GT.VDMAX) VDMAX=VDERW(I)
138 XMIN(I)=XMIN(I)-VDMAX-SHELL
139 120 XMAX(I)=XMAX(I)+VDMAX+SHELL
140 C STEP GRID BACK FROM ZERO TO FIND STARTING POINTS
142 130 XSTART=XSTART-GRID
143 IF (XSTART.GT.XMIN(1)) GO TO 130
145 140 YSTART=YSTART-GRID
146 IF (YSTART.GT.XMIN(2)) GO TO 140
148 150 ZSTART=ZSTART-GRID
149 IF (ZSTART.GT.XMIN(3)) GO TO 150
156 DIST(L)=SQRT((CO(1,L)-XGRID)**2+(CO(2,L)-YGRID)**2+
157 1 (CO(3,L)-ZGRID)**2)
158 C REJECT GRID POINT IF ANY ATOM IS TOO CLOSE
159 IF(DIST(L).LT.(VDERW(JZ)-CLOSER)) GO TO 220
161 C BUT AT LEAST ONE ATOM MUST BE CLOSE ENOUGH
164 IF(DIST(L).GT.(VDERW(JZ)+SHELL)) GO TO 200
174 IF (XGRID.LE.XMAX(1)) GO TO 180
176 IF (YGRID.LE.XMAX(2)) GO TO 170
178 IF (ZGRID.LE.XMAX(3)) GO TO 160
181 C***********************************************************************
182 SUBROUTINE SURFAC(SCALE,DENS,IPT)
183 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
185 C***********************************************************************
187 C THIS SUBROUTINE CALCULATES THE MOLECULAR SURFACE OF A MOLECULE
188 C GIVEN THE COORDINATES OF ITS ATOMS. VAN DER WAALS' RADII FOR
189 C THE ATOMS AND THE PROBE RADIUS MUST ALSO BE SPECIFIED.
191 C ON INPUT SCALE = INITIAL VAN DER WAALS' SCALE FACTOR
192 C DENS = DENSITY OF POINTS PER UNIT AREA
194 C THIS SUBROUTINE WAS LIFTED FROM MICHAEL CONNOLLY'S SURFACE
195 C PROGRAM FOR UCSF GRAPHICS SYSTEM BY U.CHANDRA SINGH AND
196 C P.A.KOLLMAN AND MODIFIED FOR USE IN QUEST. K.M.MERZ
197 C ADAPTED AND CLEANED UP THIS PROGRAM FOR USE IN AMPAC/MOPAC
198 C IN FEB. 1989 AT UCSF.
200 C***********************************************************************
201 COMMON /GEOM/ GEO(3,NUMATM)
202 COMMON /GEOKST/ NATOMS,LABELS(NUMATM),
203 1 NA(NUMATM),NB(NUMATM),NC(NUMATM)
204 COMMON /KEYWRD/ KEYWRD
206 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
207 COMMON /WORK1/ POTPT(3,MESP), PAD1(2*MESP), RAD(MESP),
209 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
213 C CARTESIAN COORDINATE AND ATOM LABELS
215 DIMENSION COORD(3,NUMATM),VANDER(100)
216 DIMENSION CON(3,1000),ROT(3,3)
220 C THIS SAME DIMENSION FOR THE MAXIMUM NUMBER OF NEIGHBORS
221 C IS USED TO DIMENSION ARRAYS IN THE LOGICAL FUNCTION COLLID
223 DIMENSION INBR(200),CNBR(3,200),RNBR(200)
224 LOGICAL SNBR(200),MNBR(200)
226 C ARRAYS FOR ALL ATOMS
228 C IATOM, JATOM AND KATOM COORDINATES
230 DIMENSION CI(3), IELDAT(56), TEMP0(3)
232 C GEOMETRIC CONSTRUCTION VECTORS
244 C DATA FOR VANDER VALL RADII
246 CHARACTER MARKER*3, MARKSS*3, MYNAM*3, IELDAT*4, NAMATM*4
247 DATA VANDER/1.20D0,1.20D0,1.37D0,1.45D0,1.45D0,1.50D0,1.50D0,
248 1 1.40D0,1.35D0,1.30D0,1.57D0,1.36D0,1.24D0,1.17D0,
249 2 1.80D0,1.75D0,1.70D0,17*0.0D0,2.3D0,65*0.0D0/
250 DATA MARKER/'A '/,MARKSS/'SS0'/,MYNAM/'UC '/
252 DATA IELDAT/' BQ',' H ',' HE',' LI',' BE',' B ',
253 1 ' C ',' N ',' O ',' F ',' NE',' NA',
254 2 ' MG',' AL',' SI',' P ',' S ',' CL',
255 3 ' AR',' K ',' CA',' SC',' TI',' V ',
256 4 ' CR',' MN',' FE',' CO',' NI',' CU',
257 5 ' ZN',' GA',' GE',' AS',' SE',' BR',
258 6 ' KR',' RB',' SR',' Y',' ZR',' NB',
259 7 ' MO',' TC',' RU',' RH',' PD',' AG',
260 8 ' CD',' IN',' SN',' SB',' TE',' I',
263 C INSERT VAN DER WAAL RADII FOR ZINC
266 C CONVERT INTERNAL TO CARTESIAN COORDINATES
268 CALL GMETRY(GEO,COORD)
270 C STRIP COORDINATES AND ATOM LABEL FOR DUMMIES (I.E. 99)
275 10 CO(J,I) = COORD(J,I)
276 IF(LABELS(I) .EQ. 99) GOTO 20
278 IAN(ICNTR) = LABELS(I)
281 C ONLY VAN DER WAALS' TYPE SURFACE IS GENERATED
289 RAD(I) = VANDER(IPOINT)*SCALE
290 IF (RAD(I) .LT. 0.01D0) THEN
291 WRITE(6,'(T2,''VAN DER WAALS'''' RADIUS FOR ATOM '',I3,
292 1 '' IS ZERO, SUPPLY A VALUE IN SUBROUTINE SURFAC)''
298 C BIG LOOP FOR EACH ATOM
300 DO 110 IATOM = 1, NATOM
301 IF (IAS(IATOM) .EQ. 0) GO TO 110
303 C TRANSFER VALUES FROM LARGE ARRAYS TO IATOM VARIABLES
305 NAMATM =IELDAT(IAN(IATOM)+1)
307 SI = IAS(IATOM) .EQ. 2
312 C GATHER THE NEIGHBORING ATOMS OF IATOM
315 DO 60 JATOM = 1, NATOM
316 IF (IATOM .EQ. JATOM .OR. IAS(JATOM) .EQ. 0) GO TO 60
317 D2 = DIST2(CI,CO(1,JATOM))
318 IF (D2 .GE. (2*RW+RI+RAD(JATOM)) ** 2) GO TO 60
320 C WE HAVE A NEW NEIGHBOR
321 C TRANSFER ATOM COORDINATES, RADIUS AND SURFACE REQUEST NUMBER
324 IF (NNBR .GT. 200)THEN
325 WRITE (6,'(''ERROR'',2X,''TOO MANY NEIGHBORS:'',I5)')NNBR
330 CNBR(K,NNBR) = CO(K,JATOM)
332 RNBR(NNBR) = RAD(JATOM)
333 SNBR(NNBR) = IAS(JATOM) .EQ. 2
338 IF (.NOT. SI) GO TO 110
339 NCON = (4 * PI * RI ** 2) * DEN
340 IF (NCON .GT. 1000) NCON = 1000
342 C THIS CALL MAY DECREASE NCON SOMEWHAT
344 IF ( NCON .EQ. 0) THEN
345 WRITE(6,'(T2,''VECTOR LENGTH OF ZERO IN SURFAC'')')
349 AREA = (4 * PI * RI ** 2) / NCON
351 C CONTACT PROBE PLACEMENT LOOP
355 CW(K,1) = CI(K) + (RI + RW) * CON(K,I)
358 C CHECK FOR COLLISION WITH NEIGHBORING ATOMS
360 IF (COLLID(CW(1,1),RW,CNBR,RNBR,MNBR,NNBR,1,
361 1 JNBR,KNBR)) GO TO 100
363 TEMP0(KK) =CI(KK)+RI*CON(KK,I)
366 C STORE POINT IN POTPT AND INCREMENT NESP
369 IF (NESP .GT. MESP) THEN
371 90 FORMAT(/'ERROR - TO MANY POINTS GENERATED IN SURFAC')
372 WRITE(6,'('' REDUCE NSURF, SCALE, DEN, OR SCINCR'')')
375 POTPT(1,NESP) = TEMP0(1)
376 POTPT(2,NESP) = TEMP0(2)
377 POTPT(3,NESP) = TEMP0(3)
382 C****************************************************************
385 C DETERMINE DISTANCES BETWEEN NEIGHBORING ATOMS
387 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
390 DIST2 = (A(1)-B(1))**2 + (A(2)-B(2))**2 + (A(3)-B(3))**2
393 C****************************************************************
394 LOGICAL FUNCTION COLLID(CW,RW,CNBR,RNBR,MNBR,NNBR,ISHAPE,
396 C****************************************************************
398 C COLLISION CHECK OF PROBE WITH NEIGHBORING ATOMS
399 C USED BY SURFAC ONLY.
401 C****************************************************************
402 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
404 DIMENSION CNBR(3,200)
407 IF (NNBR .LE. 0) GO TO 20
409 C CHECK WHETHER PROBE IS TOO CLOSE TO ANY NEIGHBOR
412 IF (ISHAPE .GT. 1 .AND. I .EQ. JNBR) GO TO 10
413 IF (ISHAPE .EQ. 3 .AND. (I .EQ. KNBR .OR. .NOT. MNBR(I)))
415 SUMRAD = RW + RNBR(I)
416 VECT1 = DABS(CW(1) - CNBR(1,I))
417 IF (VECT1 .GE. SUMRAD) GO TO 10
418 VECT2 = DABS(CW(2) - CNBR(2,I))
419 IF (VECT2 .GE. SUMRAD) GO TO 10
420 VECT3 = DABS(CW(3) - CNBR(3,I))
421 IF (VECT3 .GE. SUMRAD) GO TO 10
423 DD2 = VECT1 ** 2 + VECT2 ** 2 + VECT3 ** 2
424 IF (DD2 .LT. SR2) GO TO 30
434 C****************************************************************
435 SUBROUTINE GENUN(U,N)
436 C****************************************************************
438 C GENERATE UNIT VECTORS OVER SPHERE. USED BY SURFAC ONLY.
440 C****************************************************************
441 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
444 NEQUAT = SQRT(N * PI)
448 FI = (PI * (I-1)) / NVERT
452 IF (NHOR .LT. 1) NHOR = 1
454 FJ = (2.D0 * PI * (J-1)) / NHOR
457 IF (NU .GE. N) GO TO 30
468 C***********************************************************************
470 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
472 C***********************************************************************
474 C THIS SUBROUTINE CALCULATES THE TOTAL ELECTROSTATIC POTENTIAL
475 C THE NUCLEAR CONTRIBUTION IS EVALUATED BY NUCPOT
476 C THE ELECTRONIC CONTRIBUTION IS EVALUATED BY ELESP
477 C ESPFIT FITS THE QUANTUM POTENTIAL TO A CLASSICAL POINT CHARGE
479 C THIS SUBROUTINE WAS WRITTEN BY B.H.BESLER AND K.M.MERZ IN FEB.
482 C***********************************************************************
483 COMMON /KEYWRD/ KEYWRD
484 COMMON /CORE/ TORE(107)
485 COMMON /ELEMTS/ ELEMNT(107)
486 COMMON /DENSTY/ P(MPACK),PA(MPACK),PB(MPACK)
487 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
488 COMMON /WORK1/ POTPT(3,MESP), ES(MESP), ESP(MESP), WORK1D(2*MESP)
489 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
490 COMMON /DIPSTO/ UX,UY,UZ,CH(NUMATM)
491 COMMON /ESPF/ AL((NUMATM+4)**2),A(NUMATM,NUMATM),B(NUMATM),
492 1Q(NUMATM+4),QSC(NUMATM+4),CF, ESPFD(MAXORB**2-NUMATM-5)
495 LOGICAL DEBUG,WRTESP,CEQUIV(NUMATM,NUMATM)
497 C DEBUG PRINTING - RESULTS IN COPIOUS OUTPUT
499 DEBUG = (INDEX(KEYWRD,'DEBUG') .NE. 0)
505 C NOW FIT THE ELECTROSTATIC POTENTIAL
507 WRITE(6,'(//12X,''ELECTROSTATIC POTENTIAL CHARGES'',/)')
509 IF(INDEX(KEYWRD,'CHARGE=') .NE. 0) IZ=READA(KEYWRD,INDEX(KEYWRD,
512 C DIPOLAR CONSTRAINTS IF DESIRED
514 IF(INDEX(KEYWRD,'DIPOLE') .NE. 0) THEN
518 WRITE(6,'(/12X,'' DIPOLE CONSTRAINTS NOT USED'')')
519 WRITE(6,'(12X,'' CHARGED MOLECULE'',/)')
524 IF (IDIP .EQ. 1) THEN
525 WRITE(6,'(/12X,''DIPOLE CONSTRAINTS WILL BE USED'',/)')
528 C GET X,Y,Z DIPOLE COMPONENTS IF DESIRED
530 IF(INDEX(KEYWRD,'DIPX=') .NE. 0) THEN
531 DX = READA(KEYWRD,INDEX(KEYWRD,'DIPX='))
535 IF(INDEX(KEYWRD,'DIPY=') .NE. 0) THEN
536 DY = READA(KEYWRD,INDEX(KEYWRD,'DIPY='))
540 IF(INDEX(KEYWRD,'DIPZ=') .NE. 0) THEN
541 DZ = READA(KEYWRD,INDEX(KEYWRD,'DIPZ='))
545 CALL ESPFIT(IDIP,NATOM,NESP,IZ,ESP,POTPT,CO,DX,DY,DZ,RMS,RRMS)
547 C WRITE OUT OUR RESULTS TO CHANNEL 6
548 C THE CHARGES ARE SCALED TO REPRODUCE 6-31G* CHARGES FOR MNDO ONLY
549 C AM1 AND MINDO/3 CHARGES ARE NOT SCALED DUE TO THE LOW COORELATION
550 C COEFFICIENT. SEE BESLER,MERZ,KOLLMAN IN J. COMPUT. CHEM.
553 IF((INDEX(KEYWRD,'AM1') .NE. 0) .OR.
554 1(INDEX(KEYWRD,'MINDO') .NE. 0) .OR.
555 2(INDEX(KEYWRD,'PDG') .NE. 0) .OR.
556 3(INDEX(KEYWRD,'PM3') .NE. 0))THEN
557 WRITE(6,'(15X,''ATOM NO. TYPE CHARGE'')')
559 WRITE(6,'(17X,I2,9X,A2,1X,F10.4)')I,ELEMNT(IAN(I)),Q(I)
563 C MNDO CALCULATION-SCALE THE CHARGES. TEST FOR SLOPE KEYWORD
565 IF(INDEX(KEYWRD,'SLOPE=') .NE. 0) THEN
566 SLOPE = READA(KEYWRD,INDEX(KEYWRD,'SLOPE='))
573 WRITE(6,'(7X,''ATOM NO. TYPE CHARGE SCALED CHARGE'')')
575 WRITE(6,'(9X,I2,9X,A2,1X,F10.4,2X,F10.4)')I,ELEMNT(IAN(I
579 WRITE(6,'(/12X,A,4X,I6)') 'THE NUMBER OF POINTS IS:',NESP
580 WRITE(6,'(12X,A,4X,F9.4)') 'THE RMS DEVIATION IS:',RMS
581 WRITE(6,'(12X,A,3X,F9.4)') 'THE RRMS DEVIATION IS:',RRMS
583 C CALCULATE DIPOLE MOMENT IF NEUTRAL MOLECULE
589 40 FORMAT (//5X,'DIPOLE MOMENT EVALUATED FROM '
590 1,'THE POINT CHARGES',/)
592 DIPX=DIPX+CO(1,I)*Q(I)/BOHR
593 DIPY=DIPY+CO(2,I)*Q(I)/BOHR
594 DIPZ=DIPZ+CO(3,I)*Q(I)/BOHR
596 DIP=SQRT(DIPX**2+DIPY**2+DIPZ**2)
597 WRITE(6,'(12X,'' X Y Z TOTAL'')')
598 WRITE(6,'(8X,4F9.4)')DIPX*CF,DIPY*CF,DIPZ*CF,DIP*CF
601 C DETERMINE WHICH CHARGES SHOULD BE EQUIVALENT BY SYMMETRY AND
602 C AVERAGE THEM IF DESIRED
603 IF(INDEX(KEYWRD,'SYMAVG') .NE. 0) THEN
607 IF(ABS(ABS(CH(I))-ABS(CH(J))) .LT. 1.D-5) CEQUIV(I,J)=.T
615 QSC(I)=QSC(I)+ABS(Q(J))
619 CH(I)=Q(I)/ABS(Q(I))*QSC(I)/IEQ
622 WRITE(6,*)' ELECTROSTATIC POTENTIAL CHARGES AVERAGED FOR'
623 WRITE(6,*)' SYMMETRY EQUIVALENT ATOMS'
625 IF((INDEX(KEYWRD,'AM1') .NE. 0) .OR.
626 1(INDEX(KEYWRD,'MINDO') .NE. 0) .OR.
627 2(INDEX(KEYWRD,'PDG') .NE. 0) .OR.
628 3(INDEX(KEYWRD,'PM3') .NE. 0))THEN
629 WRITE(6,'(7X,''ATOM NO. TYPE CHARGE'')')
631 WRITE(6,'(9X,I2,9X,A2,1X,F10.4)')I,ELEMNT(IAN(I)),
635 WRITE(6,'(7X,''ATOM NO. TYPE CHARGE SCALED CHARGE'')
638 WRITE(6,'(9X,I2,9X,A2,1X,F10.4,2X,F10.4)')I,ELEMNT(IA
639 1N(I)), CH(I),CH(I)*SLOPE
646 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
647 C***********************************************************************
648 C ELESP LOADS THE STO-6G BASIS SET ONTO THE ATOMS, PERFOMS THE
649 C DEORTHOGONALIZATION OF THE COEFFICIENTS AND EVALUATES THE
650 C ELECTRONIC CONTRIBUTION TO THE ESP. IT WAS WRITTEN BY B.H.BESLER
651 C AND K.M.MERZ IN FEB. 1989 AT UCSF.
653 C***********************************************************************
655 DOUBLE PRECISION NORM,OVL
656 LOGICAL CALLED,POTWRT,RST,STO3G
658 COMMON/ESPF/ AL((NUMATM+4)**2),A(NUMATM,NUMATM),B(NUMATM),
659 1Q(NUMATM+4),CESPM(MAXORB,MAXORB)
660 COMMON /DENSTY/ P(MPACK),PA(MPACK),PB(MPACK)
661 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
662 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
663 COMMON /WORK1/ POTPT(3,MESP), ES(MESP), ESP(MESP), WORK1D(2*MESP)
664 COMMON /STO6G/ ALLC(6,5,2),ALLZ(6,5,2)
665 COMMON /VECTOR/ C(MORB2*2+MAXORB*2)
666 COMMON /MOLKST/ NUMAT,NAT(NUMATM),NFIRST(NUMATM),NMIDLE(NUMATM),
667 1 NLAST(NUMATM), NORBS, NELECS,NALPHA,NBETA,
668 2 NCLOSE,NOPEN,NDUMY,FRACT
669 COMMON /KEYWRD/ KEYWRD
670 COMMON /ESPC/ CC(MAXPR),CEN(MAXPR,3),IAM(MAXPR,2),IND(MAXPR),
671 1 EX(MAXPR),ESPI(MAXORB,MAXORB),
672 2 FV(0:8,821),FAC(0:7),
673 3 DEX(-1:96),TF(0:2),TEMP(MAXPR),ITEMP(MAXPR),
674 4 OVL(MAXORB,MAXORB),FC(MAXPR*6)
676 7 /EXPONT/ ZS(107),ZP(107),ZD(107)
678 * END OF MINDO/3 COMMON BLOCKS
680 COMMON /INDX/ INDC(MAXORB)
681 DIMENSION CESPM2(MAXORB,MAXORB),SLA(10)
682 DIMENSION CESPML(MAXORB*MAXORB),CESP(MAXORB*MAXORB)
683 DATA BOHR/0.529167D0/
686 C PUT STO-6G BASIS SET ON ATOM CENTERS
696 FV(M,1)=1.D0/(2.D0*M+1.D0)
697 DO 30 T=0.05D0,41.D0,0.05D0
703 C LOAD BASIS FUNCTIONS INTO ARRAYS
705 STO3G=(INDEX(KEYWRD,'STO3G') .NE. 0)
716 IF (IAN(I) .LE. 2) THEN
718 CC(NPR+J)=ALLC(J,1,1)
719 EX(NPR+J)=ALLZ(J,1,1)*ZS(1)**2
720 CEN(NPR+J,1)=CO(1,I)/BOHR
721 CEN(NPR+J,2)=CO(2,I)/BOHR
722 CEN(NPR+J,3)=CO(3,I)/BOHR
730 C DETERMINE PRINCIPAL QUANTUM NUMBER(NQN)
731 C OF ORBITALS TO BE USED
734 IF(IAN(I) .GT. 10 .AND. IAN(I) .LE. 18) NQN=3
735 IF(IAN(I) .GT. 18 .AND. IAN(I) .LE. 36) NQN=4
736 IF(IAN(I) .GT. 36 .AND. IAN(I) .LE. 54) NQN=5
739 CC(NPR+J)=ALLC(J,NQN,1)
740 EX(NPR+J)=ALLZ(J,NQN,1)*ZS(IAN(I))**2
741 CEN(NPR+J,1)=CO(1,I)/BOHR
742 CEN(NPR+J,2)=CO(2,I)/BOHR
743 CEN(NPR+J,3)=CO(3,I)/BOHR
751 CC(NPR+J)=ALLC(J,NQN,2)
752 EX(NPR+J)=ALLZ(J,NQN,2)*ZP(IAN(I))**2
753 CEN(NPR+J,1)=CO(1,I)/BOHR
754 CEN(NPR+J,2)=CO(2,I)/BOHR
755 CEN(NPR+J,3)=CO(3,I)/BOHR
765 C CALCULATE NORMALIZATION CONSTANTS AND INCLUDE
766 C THEM IN THE CONTRACTION COEFFICIENTS
769 NORM=(2.D0*EX(I)/PI)**0.75D0*(4.D0*EX(I))**(IAM(I,1)/2.D0)/
770 1 SQRT(DEX(2*IAM(I,1)-1))
775 C PERFORM SORT OF PRIMITIVES BY ANGULAR MOMENTUM
783 IF (IAM(I,1) .EQ. 0) THEN
790 IF (IAM(I,1) .EQ. 1 .AND. IAM(I,2) .EQ. 1) THEN
796 IF (IAM(I,1) .EQ. 1 .AND. IAM(I,2) .EQ. 2) THEN
802 IF (IAM(I,1) .EQ. 1 .AND. IAM(I,2) .EQ. 3) THEN
809 IF (IAM(IN,1) .EQ. 0) THEN
817 IF (IAM(IN,1) .EQ. 1 .AND. IAM(IN,2) .EQ. 1) THEN
824 IF (IAM(IN,1) .EQ. 1 .AND. IAM(IN,2) .EQ. 2) THEN
831 IF (IAM(IN,1) .EQ. 1 .AND. IAM(IN,2) .EQ. 3) THEN
849 TEMP(I)=CEN(IND(I),1)
855 TEMP(I)=CEN(IND(I),2)
861 TEMP(I)=CEN(IND(I),3)
867 ITEMP(I)=IAM(IND(I),1)
873 ITEMP(I)=IAM(IND(I),2)
878 C CALCULATE OVERLAP MATRIX OF STO-6G FUNCTIONS
881 CALL OVLP(J,1,IS,IP,NPR,NC,ICD)
886 CESPM2(INDC(J),INDC(K))=OVL(J,K)
899 C DEORTHOGONALIZE THE COEFFICIENTS AND REFORM THE DENSITY MATRIX
901 CALL RSP(CESP,NC,1,TEMP,CESPML)
906 SUM=SUM+CESPML(I+(K-1)*NC)/SQRT(TEMP(K))*CESPML(J+(K-1)*N
911 CALL MULT(C,CESP,CESPML,NC)
912 CALL DENSIT(CESPML,NC,NC,NCLOSE,NOPEN,FRACT,CESP,2)
914 C NOW CALCULATE THE ELECTRONIC CONTRIBUTION TO THE ELECTROSTATIC POT
928 CALL NAICAS(ISC,IS,IP,NPR,NC,IPE,IPX,ICD)
929 CALL NAICAP(ISC,IS,IP,NPR,NC,IPE,IPX,ICD)
930 C CALCULATE TOTAL ESP AND FORM ARRAYS FOR ESPFIT
934 RA=SQRT((CO(1,J)-POTPT(1,I))**2+(CO(2,J)-POTPT(2,I))**2+(CO(
935 13,J)-POTPT(3,I))**2)
936 ESP(I)=ESP(I)+TORE(IAN(J))/(RA/BOHR)
940 RIJ=SQRT((CO(1,J)-POTPT(1,I))**2+(CO(2,J)-POTPT(2,I))**2
941 1+(CO(3,J)-POTPT(3,I))**2)/BOHR
942 B(J)=B(J)+ESP(I)*1.D0/RIJ
945 C IF REQUESTED WRITE OUT ELECTRIC POTENTIAL DATA TO
948 POTWRT=(INDEX(KEYWRD,'POTWRT') .NE. 0)
950 OPEN(21,FILE='FOR021',STATUS='NEW')
951 WRITE(21,'(I5)') NESP
953 410 WRITE(21,420) ESP(I),POTPT(1,I)/BOHR,POTPT(2,I)/BOHR,
956 420 FORMAT(1X,4E16.7)
959 DOUBLE PRECISION FUNCTION DEX2(M)
960 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
971 IMPLICIT DOUBLE PRECISION (A-H, O-Z)
973 COMMON /ESPC/ CC(MAXPR),CEN(MAXPR,3),IAM(MAXPR,2),IND(MAXPR),
974 1 EX(MAXPR),ESPI(MAXORB,MAXORB),
975 2 FV(0:8,821),FAC(0:7),
976 3 DEX(-1:96),TF(0:2),TEMP(MAXPR),ITEMP(MAXPR),
977 4 OVL(MAXORB,MAXORB),FC(MAXPR*6)
978 DATA TF/33.D0,37.D0,41.D0/
979 DATA FAC/1.D0,1.D0,2.D0,6.D0,24.D0,120.D0,720.D0,5040.D0/
981 C***********************************************************************
982 SUBROUTINE ESPFIT(IDIP,NATOM,NESP,IZ,ESP,POTPT,CO,
984 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
986 C***********************************************************************
988 C THIS ROUTINE FITS THE ELECTROSTATIC POTENTIAL TO A MONOPOLE
989 C EXPANSION. FITTING TO THE DIPOLE MONENT CAN ALSO BE DONE.
990 C THIS ROUTINE WAS WRITTEN BY B.H.BESLER AND K.M.MERZ
991 C IN FEB. 1989 AT UCSF.
993 C ON INPUT: IDIP = FLAG TO INDICATE IF THE DIPOLE IS FIT
994 C NATOM = NUMBER OF ATOMS
995 C NESP = NUMBER OF ESP POINTS
996 C IZ = MOLECULAR CHARGE
997 C ESP = TOTAL ESP AT THE POINTS
1000 C DX = X COMPONENT OF THE DIPOLE
1001 C DY = Y COMPONENT OF THE DIPOLE
1002 C DZ = Z COMPONENT OF THE DIPOLE
1004 C ON OUTPUT: Q = ESP CHARGES
1005 C RMS = ROOT MEAN SQUARE FIT
1006 C RRMS = RELATIVE ROOT MEAN SQUARE FIT
1008 C FOR MORE DETAILS SEE: BESLER,MERZ,KOLLMAN J. COMPUT. CHEM.
1010 C***********************************************************************
1011 COMMON/ESPF/ AL((NUMATM+4)**2),A(NUMATM,NUMATM),B(NUMATM),
1012 1Q(NUMATM+4),QSC(NUMATM+4),CF, ESPFD(MAXORB**2-NUMATM-5)
1013 DIMENSION CO(3,*),ESP(*),POTPT(3,*)
1015 C CONVERSION FACTOR FOR DEBYE TO ATOMIC UNITS
1016 CF=5.2917715D-11*1.601917D-19/3.33564D-30
1018 C THE FOLLOWING SETS UP THE LINEAR EQUATION A*Q=B
1019 C SET UP THE A(J,K) ARRAY
1024 RIK=SQRT((CO(1,K)-POTPT(1,I))**2+(CO(2,K)-POTPT(2,I))**2
1025 1 +(CO(3,K)-POTPT(3,I))**2)/BOHR
1026 RIJ=SQRT((CO(1,J)-POTPT(1,I))**2+(CO(2,J)-POTPT(2,I))**2
1027 1 +(CO(3,J)-POTPT(3,I))**2)/BOHR
1028 A(J,K)=A(J,K)+1.D0/RIK*1.D0/RIJ
1032 A(NATOM+1,NATOM+1)=0.D0
1033 IF(IDIP .EQ. 1) THEN
1034 A(NATOM+2,K)=CO(1,K)/BOHR
1035 A(K,NATOM+2)=CO(1,K)/BOHR
1036 A(NATOM+2,NATOM+2)=0.D0
1037 A(NATOM+3,K)=CO(2,K)/BOHR
1038 A(K,NATOM+3)=CO(2,K)/BOHR
1039 A(NATOM+3,NATOM+3)=0.D0
1040 A(NATOM+4,K)=CO(3,K)/BOHR
1041 A(K,NATOM+4)=CO(3,K)/BOHR
1042 A(NATOM+4,NATOM+4)=0.D0
1045 B(NATOM+1)=FLOAT(IZ)
1050 C INSERT CHARGE AND DIPOLAR (IF DESIRED) CONSTRAINTS
1052 IF(IDIP .EQ. 1) THEN
1065 IF (IDIP .EQ. 1) THEN
1066 CALL OSINV(AL,NATOM+4,DET)
1068 CALL OSINV(AL,NATOM+1,DET)
1070 IF(IDIP .EQ. 1) THEN
1084 C SOLVE FOR THE CHARGES
1086 IF(IDIP .EQ. 1) THEN
1089 Q(I)=Q(I)+A(I,J)*B(J)
1094 Q(I)=Q(I)+A(I,J)*B(J)
1098 C CALCULATE ROOT MEAN SQUARE FITS AND RELATIVE ROOT MEAN SQUARE FITS
1104 RIJ=SQRT((CO(1,J)-POTPT(1,I))**2+(CO(2,J)-POTPT(2,I))**2
1105 1 +(CO(3,J)-POTPT(3,I))**2)/BOHR
1106 90 ESPC=ESPC+Q(J)/RIJ
1107 RMS=RMS+(ESPC-ESP(I))**2
1108 100 RRMS=RRMS+ESP(I)**2
1110 RRMS=RMS/SQRT(RRMS/NESP)
1114 C***********************************************************************
1115 SUBROUTINE FSUB(N,X,FVAL)
1116 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
1117 C***********************************************************************
1119 C CALCULATE THE FM(T). KINDLY SUPPLIED BY RUS PITZER AND CLEANED UP
1120 C BY K.M.MERZ IN FEB. 1989 AT UCSF.
1122 C ON INPUT: N = INDEX
1124 C ON OUTPUT: FVAL = VALUE OF THE FUNCTION
1126 C FOR MORE DETAILS SEE: OBARA AND SAIKA J. CHEM. PHYS. 1986,84,3963
1127 C***********************************************************************
1128 DIMENSION FF(21),TERM(200),A(10),RT(10)
1129 DATA A0, A1S2, PIE4, A1
1130 1 /0.0D0,0.5D0,0.7853981633974483096156608D0,1.0D0/
1135 IF(X.GT.XSW) GO TO 50
1143 IF(KU.LT.1) GO TO 30
1145 C SUM INCREASING TERMS FORWARDS
1156 IF(SUM.EQ.SUMA) GO TO 90
1159 TERM(I)=TERM(I-1)*X/FAC
1162 IF(SUM1-SUMA) 40,90,40
1164 C USE ASYMPTOTIC SERIES
1176 IF(SUM.EQ.SUMA) GO TO 90
1181 TERM(I)=TERM(I-1)*FAC/X
1184 IF(SUM1.EQ.SUMA) GO TO 90
1187 C XSW SET TOO LOW. USE POWER SERIES.
1191 C SUM DECREASING TERMS BACKWARDS
1195 SUM1=SUM1+TERM(I+1-K)
1199 C USE RECURRENCE RELATION
1204 FF(N+1-K)=(E+X*FF(N+2-K))/FAC0
1210 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
1212 COMMON /NATYPE/ NZTYPE(107),MTYPE(30),LTYPE
1213 COMMON /STO6G/ ALLC(6,5,2),ALLZ(6,5,2)
1214 C SET-UP THE STEWART'S STO-3G EXPANSIONS
1215 C FROM J. CHEM. PHYS. 52 431.
1217 ALLZ(1,1,1) =2.227660584D00
1218 ALLZ(2,1,1) =4.057711562D-01
1219 ALLZ(3,1,1) =1.098175104D-01
1221 ALLC(1,1,1) =1.543289673D-01
1222 ALLC(2,1,1) =5.353281423D-01
1223 ALLC(3,1,1) =4.446345422D-01
1225 ALLZ(1,2,1) =2.581578398D00
1226 ALLZ(2,2,1) =1.567622104D-01
1227 ALLZ(3,2,1) =6.018332272D-02
1229 ALLC(1,2,1) =-5.994474934D-02
1230 ALLC(2,2,1) =5.960385398D-01
1231 ALLC(3,2,1) =4.581786291D-01
1233 ALLZ(1,2,2) =9.192379002D-01
1234 ALLZ(2,2,2) =2.359194503D-01
1235 ALLZ(3,2,2) =8.009805746D-02
1237 ALLC(1,2,2) =1.623948553D-01
1238 ALLC(2,2,2) =5.661708862D-01
1239 ALLC(3,2,2) =4.223071752D-01
1241 ALLZ(1,3,1) =5.641487709D-01
1242 ALLZ(2,3,1) =6.924421391D-02
1243 ALLZ(3,3,1) =3.269529097D-02
1245 ALLC(1,3,1) =-1.782577972D-01
1246 ALLC(2,3,1) =8.612761663D-01
1247 ALLC(3,3,1) =2.261841969D-01
1249 ALLZ(1,3,2) =2.692880368D00
1250 ALLZ(2,3,2) =1.489359592D-01
1251 ALLZ(3,3,2) =5.739585040D-02
1253 ALLC(1,3,2) =-1.061945788D-02
1254 ALLC(2,3,2) =5.218564264D-01
1255 ALLC(3,3,2) =5.450015143D-01
1257 ALLZ(1,4,1) =2.267938753D-01
1258 ALLZ(2,4,1) =4.448178019D-02
1259 ALLZ(3,4,1) =2.195294664D-02
1261 ALLC(1,4,1) =-3.349048323D-01
1262 ALLC(2,4,1) =1.056744667D00
1263 ALLC(3,4,1) =1.256661680D-01
1265 ALLZ(1,4,2) =4.859692220D-01
1266 ALLZ(2,4,2) =7.430216918D-02
1267 ALLZ(3,4,2) =3.653340923D-02
1269 ALLC(1,4,2) =-6.147823411D-02
1270 ALLC(2,4,2) =6.604172234D-01
1271 ALLC(3,4,2) =3.932639495D-01
1273 ALLZ(1,5,1) =1.080198458D-01
1274 ALLZ(2,5,1) =4.408119382D-02
1275 ALLZ(3,5,1) =2.610811810D-02
1277 ALLC(1,5,1) =-6.617401158D-01
1278 ALLC(2,5,1) =7.467595004D-01
1279 ALLC(3,5,1) =7.146490945D-01
1281 ALLZ(1,5,2) =2.127482317D-01
1282 ALLZ(2,5,2) =4.729648620D-02
1283 ALLZ(3,5,2) =2.604865324D-02
1285 ALLC(1,5,2) =-1.389529695D-01
1286 ALLC(2,5,2) =8.076691064D-01
1287 ALLC(3,5,2) =2.726029342D-01
1291 SUBROUTINE OVLP(IC,IESP,IS,IP,NPR,NC,ICD)
1292 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
1293 C***********************************************************************
1295 C OVLP CALCULATES THE OVERLAP INTEGRALS FOR A STO-6G BASIS SET.
1296 C THE RESULTING INTEGRALS ARE USED IN THE DEORTHOGONALIZATION
1298 C THE CODE WAS WRITTEN BY B.H.BESLER AND K.M.MERZ IN FEB. 1989
1301 C ON INPUT: IC = LOOP INDEX
1303 C IS = NUMBER OF S ORBITALS
1304 C IP = NUMBER OF P ORBITALS
1305 C NPR = NUMBER OF PRIMITIVES
1306 C NC = NUMBER OF CONTRACTED FUNCTIONS
1308 C ON OUTPUT: OVL IS FILLED WITH THE OVERLAP INTEGRAL VALUE
1310 C FOR FURTHER INFO SEE: OBARA & SAIKA J.CHEM.PHYS. 1986,84,3963
1311 C***********************************************************************
1313 DOUBLE PRECISION NAI,NAI1,NAI2
1315 COMMON /DENSTY/ P(MPACK),PA(MPACK),PB(MPACK)
1316 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
1317 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
1318 COMMON /WORK1/ POTPT(3,MESP), ES(MESP), ESP(MESP), WORK1D(2*MESP)
1319 COMMON /EXPONT/ ZS(107),ZP(107),ZD(107)
1320 COMMON /STO6G/ ALLC(6,5,2),ALLZ(6,5,2)
1321 COMMON /ESPC/ CC(MAXPR),CEN(MAXPR,3),IAM(MAXPR,2),IND(MAXPR),
1322 1EX(MAXPR),ESPI(MAXORB,MAXORB),FV(0:8,821),
1323 2FAC(0:7),DEX(-1:96),TF(0:2),
1324 3TEMP(MAXPR),ITEMP(MAXPR),OVL(MAXORB,MAXORB),XDMY(MAXPR*6)
1325 COMMON/X/ DX(MAXPR),DY(MAXPR),DZ(MAXPR),F1(MAXPR,6),F2(MAXPR,6),
1326 1TD(MAXPR),CE(MAXPR,6),U(MAXPR,6),EXS(MAXPR,6),EXPN(MAXPR,6),
1327 2NAI(MAXPR,6),EWCX(MAXPR,6),EWCY(MAXPR,6),EWCZ(MAXPR,6),F0(MAXPR,6)
1328 3,NAI1(MAXPR,6),NAI2(MAXPR,6)
1329 DATA BOHR/0.529167D0/
1331 C CALCULATE DISTANCE ARRAYS
1337 DX(I)=CEN(IPR,1)-CEN(I,1)
1338 DY(I)=CEN(IPR,2)-CEN(I,2)
1339 DZ(I)=CEN(IPR,3)-CEN(I,3)
1340 TD(I)=DX(I)**2+DY(I)**2+DZ(I)**2
1343 C CALCULATE EXPONENT SUM
1347 EXS(I,J)=1.D0/(EX(IPR+J-1)+EX(I))
1348 CE(I,J)=EX(IPR+J-1)*EX(I)*EXS(I,J)
1351 C CALCULATE EXPONENT WEIGHTED CENTERS
1355 EWCX(I,J)=(EX(I)*CEN(I,1)+EX(IPR+J-1)
1356 1*CEN(IPR+J-1,1))*EXS(I,J)
1357 EWCY(I,J)=(EX(I)*CEN(I,2)+EX(IPR+J-1)
1358 1*CEN(IPR+J-1,2))*EXS(I,J)
1359 EWCZ(I,J)=(EX(I)*CEN(I,3)+EX(IPR+J-1)
1360 1*CEN(IPR+J-1,3))*EXS(I,J)
1364 EXPN(I,J)=EXP(-CE(I,J)*TD(I))
1365 NAI(I,J)=(PI*EXS(I,J))**1.5D0*EXPN(I,J)
1369 C CALCULATE (S||P) ESP INTEGRALS
1371 IF((IAM(IPR,1) .EQ. 0) .AND. (IS .NE. IP)) THEN
1375 GO TO (50,60,70),IAM(I,2)
1376 50 NAI(I,J)=(EWCX(I,J)-CEN(I,1))*EXPN(I,J)
1378 60 NAI(I,J)=(EWCY(I,J)-CEN(I,2))*EXPN(I,J)
1380 70 NAI(I,J)=(EWCZ(I,J)-CEN(I,3))*EXPN(I,J)
1384 C CALCULATE (P||S) ESP INTEGRALS
1386 IF((IAM(IPR,1) .EQ. 1) .AND. (IS .NE. IP)) THEN
1388 DO 120 I= ISTART,NPR
1390 GO TO (90,100,110),IAM(IPR+J-1,2)
1391 90 NAI(I,J)=(EWCX(I,J)-CEN(IPR+J-1,1))*EXPN(I,J)
1393 100 NAI(I,J)=(EWCY(I,J)-CEN(IPR+J-1,2))*EXPN(I,J)
1395 110 NAI(I,J)=(EWCZ(I,J)-CEN(IPR+J-1,3))*EXPN(I,J)
1399 C CALCULATE (P||P) ESP INTEGRALS
1401 IF((IAM(IPR,1) .EQ. 1) .AND. (IS .NE. IP)) THEN
1404 GO TO (130,140,150),IAM(I,2)
1405 130 NAI(I,J)=(EWCX(I,J)-CEN(I,1))*NAI(I,J)
1406 IF(IAM(IPR+J-1,2) .EQ. IAM(I,2))
1407 1NAI(I,J)=NAI(I,J)+EXS(I,J)*0.5D0
1410 140 NAI(I,J)=(EWCY(I,J)-CEN(I,2))*NAI(I,J)
1411 IF(IAM(IPR+J-1,2) .EQ. IAM(I,2))
1412 1NAI(I,J)=NAI(I,J)+EXS(I,J)*0.5D0
1415 150 NAI(I,J)=(EWCZ(I,J)-CEN(I,3))*NAI(I,J)
1416 IF(IAM(IPR+J-1,2) .EQ. IAM(I,2))
1417 1NAI(I,J)=NAI(I,J)+EXS(I,J)*0.5D0
1425 DO 170 J=JPS,JPS+ICD-1
1426 DO 170 K=IPS,IPS+ICD-1
1427 OVL(IC,I)=OVL(IC,I)+CC(J)*CC(K)*NAI(J,K-IPS+1)
1433 SUBROUTINE NAICAS(ISC,IS,IP,NPR,NC,IPE,IPX,ICD)
1434 IMPLICIT DOUBLE PRECISION(A-H,O-Z)
1435 C***********************************************************************
1437 C THIS SUBROUTINE EVALUATES (S|S) , (S|P) TYPE NUCLEAR ATTRACTION
1438 C INTEGRALS FOR A STO-NG BASIS SET
1439 C WRITTEN BY B.H. BESLER AT FORD SCIENTIFIC RESEARCH LABS IN
1442 C ON INPUT: IC = LOOP INDEX OF THE GAUSSIAN
1443 C IESP = LOOP INDEX OF THE ESP POINT
1444 C IPE = INDEX OF LAST Px PRIMITIVE
1445 C IPX = NUMBER OF Px PRIMITIVES
1446 C IS = NUMBER OS S ORBITALS
1447 C ISC = NUMBER OF CONTRACTED S ORBITALS
1448 C IP = NUMBER OF P ORBITALS
1449 C NPR = NUMBER OF PRIMITIVES
1450 C NC = NUMBER OF CONTRACTED FUNCTIONS
1453 C FOR MORE INFO SEE: OBARA&SAIKA J.CHEM.PHYS. 1986,84,3963.
1454 C***********************************************************************
1456 DOUBLE PRECISION NAI,NAI1,NAI2
1457 CHARACTER*241 KEYWRD
1458 COMMON/KEYWRD/ KEYWRD
1459 COMMON/ESPF/ AL((NUMATM+4)**2),A(NUMATM,NUMATM),B(NUMATM),
1460 1Q(NUMATM+4),CESPM(MAXORB,MAXORB)
1461 COMMON /INDX/ INDC(MAXORB)
1462 COMMON /DENSTY/ P(MPACK),PA(MPACK),PB(MPACK)
1463 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
1464 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
1465 COMMON /WORK1/ POTPT(3,MESP), ES(MESP), ESP(MESP), WORK1D(2*MESP)
1466 COMMON /EXPONT/ ZS(107),ZP(107),ZD(107)
1467 COMMON /STO6G/ ALLC(6,5,2),ALLZ(6,5,2)
1468 COMMON /ESPC/ CC(MAXPR),CEN(MAXPR,3),IAM(MAXPR,2),IND(MAXPR),
1469 1EX(MAXPR),ESPI(MAXORB,MAXORB),FV(0:8,821),
1470 2FAC(0:7),DEX(-1:96),TF(0:2),
1471 3TEMP(MAXPR),ITEMP(MAXPR),OVL(MAXORB,MAXORB),EXSR(MAXPR,6)
1472 COMMON/X/ DX(MAXPR),DY(MAXPR),DZ(MAXPR),F1(MAXPR,6),F2(MAXPR,6),
1473 1TD(MAXPR),CE(MAXPR,6),U(MAXPR,6),EXS(MAXPR,6),EXPN(MAXPR,6),
1474 2NAI(MAXPR,6),EWCX(MAXPR,6),EWCY(MAXPR,6),EWCZ(MAXPR,6),F0(MAXPR,6)
1475 3,NAI1(MAXPR,6),NAI2(MAXPR,6)
1476 DATA BOHR/0.529167D0/
1478 C CALCULATE DISTANCE ARRAYS
1483 C IF THIS IS A RESTART RUN, READ IN RESTART INFO
1484 IF(INDEX(KEYWRD,'ESPRST') .NE. 0) THEN
1485 OPEN(UNIT=15,FILE='ESP.DUMP',STATUS='OLD',FORM='UNFORMATTED')
1486 READ(15) JSTART,IESPS
1487 IF(JSTART .EQ. ISC*2) THEN
1501 DO 200 IC=JSTART,ISC
1505 DX(I)=CEN(IPR,1)-CEN(I,1)
1506 DY(I)=CEN(IPR,2)-CEN(I,2)
1507 DZ(I)=CEN(IPR,3)-CEN(I,3)
1508 TD(I)=DX(I)**2+DY(I)**2+DZ(I)**2
1511 C CALCULATE EXPONENT SUM
1515 EXSR(I,J)=EX(IPR+J-1)+EX(I)
1516 EXS(I,J)=1.D0/EXSR(I,J)
1517 CE(I,J)=EX(IPR+J-1)*EX(I)*EXS(I,J)
1518 EXPN(I,J)=EXP(-CE(I,J)*TD(I))
1521 C CALCULATE EXPONENT WEIGHTED CENTERS
1525 EWCX(I,J)=(EX(I)*CEN(I,1)+EX(IPR+J-1)
1526 1*CEN(IPR+J-1,1))*EXS(I,J)
1527 EWCY(I,J)=(EX(I)*CEN(I,2)+EX(IPR+J-1)
1528 1*CEN(IPR+J-1,2))*EXS(I,J)
1529 EWCZ(I,J)=(EX(I)*CEN(I,3)+EX(IPR+J-1)
1530 1*CEN(IPR+J-1,3))*EXS(I,J)
1533 C BEGIN LOOP OVER ESP POINTS
1536 POTP1=POTPT(1,IESP)/BOHR
1537 POTP2=POTPT(2,IESP)/BOHR
1538 POTP3=POTPT(3,IESP)/BOHR
1540 C BEGIN LOOP OVER COMPONENTS OF CONTRACTED FUNCTION IC
1544 C CALCULATE DISTANCE BETWEEN EXPONENT WEIGHTED AND PROBE POINT
1547 U(I,J)=((EWCX(I,J)-POTP1)**2+(EWCY(I,J)-POTP2)**2+
1548 1 (EWCZ(I,J)-POTP3)**2)*EXSR(I,J)
1549 NAI(I,J)=SQRT(PI/U(I,J))
1552 C CALCULATE ESP INTEGRALS
1555 IF(U(I,J) .LE. TF(0)) THEN
1556 IREF=DNINT(U(I,J)*20.D0)
1568 F0(I,J)=NAI(I,J)*0.5D0
1572 IF(U(I,J) .LE. TF(1)) THEN
1573 IREF=DNINT(U(I,J)*20.D0)
1585 F1(I,J)=NAI(I,J)*0.25D0/U(I,J)
1589 100 U(I,J)=2.D0*PI*EXS(I,J)*EXPN(I,J)*F0(I,J)
1592 NAI(I,J)=2.D0*PI*EXS(I,J)*EXPN(I,J)*F0(I,J)
1593 NAI1(I,J)=2.D0*PI*EXS(I,J)*EXPN(I,J)*F1(I,J)
1596 C CALCULATE (S||P) ESP INTEGRALS
1598 IF((IAM(IPR,1) .EQ. 0) .AND. (IS .NE. IP)) THEN
1600 120 U(I,J)=(EWCX(I,J)-CEN(I,1))*NAI(I,J)
1601 1-(EWCX(I,J)-POTP1)*NAI1(I,J)
1602 DO 130 I=IPE+1,IPE+1+IPX
1603 130 U(I,J)=(EWCY(I-IPX,J)-CEN(I-IPX,2))*NAI(I-IPX,J)
1604 1-(EWCY(I-IPX,J)-POTP2)*NAI1(I-IPX,J)
1605 DO 140 I=IPE+1+IPX,NPR
1606 140 U(I,J)=(EWCZ(I-IPX2,J)-CEN(I-IPX2,3))*NAI(I-IPX2,J)
1607 1-(EWCZ(I-IPX2,J)-POTP3)*NAI1(I-IPX2,J)
1614 DO 160 J=JPS,JPS+ICD-1
1615 DO 160 K=IPS,IPS+ICD-1
1616 ESPI(I,IC)=ESPI(I,IC)+CC(J)*CC(K)*U(J,K-IPS+1)
1618 ES(IESP)=ES(IESP)+2.D0*CESPM(INDC(I),INDC(IC))*ESPI(I,IC)
1620 ES(IESP)=ES(IESP)-CESPM(INDC(IC),INDC(IC))*ESPI(IC,IC)
1622 C WRITE OUT RESTART INFORMATION
1623 OPEN(UNIT=15,FILE='ESP.DUMP',STATUS='UNKNOWN',FORM='UNFORMATTED
1632 WRITE(6,'(A,F6.2,A)')
1633 1'NAICAS DUMPED: ',100.D0/ISC*IC,' PERCENT COMPLETE'
1637 SUBROUTINE NAICAP(ISC,IS,IP,NPR,NC,IPE,IPX,ICD)
1638 IMPLICIT DOUBLE PRECISION(A-H,O-Z)
1639 C***********************************************************************
1640 C THIS ROUTINE EVALUATES (P|P) NUCLEAR ATTRACTION INTEGRALS OVER
1642 C A STO-NG BASIS SET.
1643 C WRITTEN BY B.H. BESLER AT FORD SCIENTIFIC RESEARCH LABS IN
1646 C ON INPUT: IC = LOOP INDEX OF THE GAUSSIAN
1647 C ICD = CONTRACTION DEPTH OF BASIS SET
1648 C IESP = LOOP INDEX OF THE ESP POINT
1649 C IS = NUMBER OS S PRIMITIVES
1650 C IPE = INDEX OF LAST PX PRIMITIVE
1651 C IPX = NUMBER OF PX PRIMITIVES
1652 C IS = NUMBER OS S PRIMITIVES
1653 C ISC = NUMBER OF CONTRACTED
1654 C NPR = NUMBER OF PRIMITIVES
1655 C NC = NUMBER OF CONTRACTED FUNCTIONS
1658 C FOR MORE INFO SEE: OBARA&SAIKA J.CHEM.PHYS. 1986,84,3963.
1659 C***********************************************************************
1661 DOUBLE PRECISION NAI,NAI1,NAI2
1662 CHARACTER*241 KEYWRD
1663 COMMON /KEYWRD/ KEYWRD
1664 COMMON/ESPF/ AL((NUMATM+4)**2),A(NUMATM,NUMATM),B(NUMATM),
1665 1Q(NUMATM+4),CESPM(MAXORB,MAXORB)
1666 COMMON /INDX/ INDC(MAXORB)
1667 COMMON /DENSTY/ P(MPACK),PA(MPACK),PB(MPACK)
1668 COMMON /POTESP/ XC,YC,ZC,ESPNUC,ESPELE,NESP
1669 COMMON /ABC/ CO(3,NUMATM),IAN(NUMATM),NATOM
1670 COMMON /WORK1/ POTPT(3,MESP), ES(MESP), ESP(MESP), WORK1D(2*MESP)
1671 COMMON /EXPONT/ ZS(107),ZP(107),ZD(107)
1672 COMMON /STO6G/ ALLC(6,5,2),ALLZ(6,5,2)
1673 COMMON /ESPC/ CC(MAXPR),CEN(MAXPR,3),IAM(MAXPR,2),IND(MAXPR),
1674 1EX(MAXPR),ESPI(MAXORB,MAXORB),FV(0:8,821),
1675 2FAC(0:7),DEX(-1:96),TF(0:2),
1676 3TEMP(MAXPR),ITEMP(MAXPR),OVL(MAXORB,MAXORB),EXSR(MAXPR,6)
1677 COMMON/X/ DX(MAXPR),DY(MAXPR),DZ(MAXPR),F1(MAXPR,6),F2(MAXPR,6),
1678 1TD(MAXPR),CE(MAXPR,6),U(MAXPR,6),EXS(MAXPR,6),EXPN(MAXPR,6),
1679 2NAI(MAXPR,6),EWCX(MAXPR,6),EWCY(MAXPR,6),EWCZ(MAXPR,6),F0(MAXPR,6)
1680 3,NAI1(MAXPR,6),NAI2(MAXPR,6)
1681 COMMON/FP/ PF0(MAXHES),PF1(MAXHES),PF2(MAXHES),ID(MAXPAR),
1682 1PEXS(MAXHES),PCE(MAXHES),PEXPN(MAXHES),PTD(MAXHES),
1683 2PEWCX(MAXHES),PEWCY(MAXHES),PEWCZ(MAXHES),IRD(MAXHES)
1684 DATA BOHR/0.529167D0/
1685 C SET NUMBER OF EQUALLY SPACED DUMPS
1700 C CALCULATE QUANTITIES INVARIANT WITH ESP POINT FOR
1701 C (P|P) ESP INTEGRALS
1708 PTD(L)=(CEN(I,1)-CEN(J,1))**2+(CEN(I,2)-CEN(J,2))**2+
1709 1(CEN(I,3)-CEN(J,3))**2
1710 PEXS(L)=1.d0/(EX(I)+EX(J))
1711 PCE(L)=EX(I)*EX(J)*PEXS(L)
1712 PEXPN(L)=EXP(-PCE(L)*PTD(L))
1713 PEWCX(L)=(EX(I)*CEN(I,1)+EX(J)*CEN(J,1))*PEXS(L)
1714 PEWCY(L)=(EX(I)*CEN(I,2)+EX(J)*CEN(J,2))*PEXS(L)
1715 PEWCZ(L)=(EX(I)*CEN(I,3)+EX(J)*CEN(J,3))*PEXS(L)
1718 C SET UP OTHER INDEX ARRAY FOR PACKED SYMMETRIC ARRAY
1724 C READ IN RESTART INFORMATION IF THIS IS A RESTART
1726 IF(INDEX(KEYWRD,'ESPRST') .NE. 0) THEN
1727 OPEN(UNIT=15,FILE='ESP.DUMP',STATUS='UNKNOWN',FORM='UNFORMATTED
1729 READ(15) JSTART,IESPS
1730 IF(JSTART .NE. ISC*2) THEN
1739 IDC=FLOAT(IESPS)/FLOAT(NESP)*10
1745 C LOOP OVER ESP PROBE POINTS
1747 DO 250 IESP=IESPS+1,NESP
1748 POTP1=POTPT(1,IESP)/BOHR
1749 POTP2=POTPT(2,IESP)/BOHR
1750 POTP3=POTPT(3,IESP)/BOHR
1751 C CALCULATE QUANTITY U
1757 PTD(L)=((PEWCX(L)-POTP1)**2+(PEWCY(L)-POTP2)**2+
1758 1 (PEWCZ(L)-POTP3)**2)/PEXS(L)
1759 PCE(L)=SQRT(PI/PTD(L))
1762 C CALCULATE F0, F1, AND F2(U) USING TAYLOR SERIES
1763 C OR ASYMPTOTIC EXPANSION
1768 IF(PTD(I) .LE. TF(0)) THEN
1769 IREF=DNINT(PTD(I)*20.D0)
1783 IF(PTD(I) .LE. TF(1)) THEN
1784 IREF=DNINT(PTD(I)*20.D0)
1796 PF1(I)=PCE(I)*0.25D0/PTD(I)
1798 IF(PTD(I) .LE. TF(2)) THEN
1799 IREF=DNINT(PTD(I)*20.D0)
1806 TS2=FII*TERM2*FAC(K)
1811 PF2(I)=PCE(I)*0.375D0/(PTD(I)*PTD(I))
1815 C CALCULATE (S||S) TYPE INTEGRALS
1818 PF0(I)=2.D0*PI*PEXS(I)*PEXPN(I)*PF0(I)
1820 PF1(I)=2.D0*PI*PEXS(I)*PEXPN(I)*PF1(I)
1821 PF2(I)=2.D0*PI*PEXS(I)*PEXPN(I)*PF2(I)
1829 C CALCULATE (P||S) ESP INTEGRALS
1831 IF((IAM(IPR,1) .EQ. 1) .AND. (IS .NE. IP)) THEN
1834 IR=IRD(I)+ID(IRD(IN))
1835 IR2=ID(IRD(I))+IRD(IN)
1836 IF(IR2 .LE. IR ) IR=IR2
1837 GO TO (120,130,140),IAM(IN,2)
1838 120 NAI2(I,J)=(PEWCX(IR)-CEN(IN,1))*PF1(IR)-PF2(IR)*
1840 NAI(I,J)=(PEWCX(IR)-CEN(IN,1))*PF0(IR)-PF1(IR)*
1843 130 NAI2(I,J)=(PEWCY(IR)-CEN(IN,2))*PF1(IR)-PF2(IR)*
1845 NAI(I,J)=(PEWCY(IR)-CEN(IN,2))*PF0(IR)-PF1(IR)*
1848 140 NAI2(I,J)=(PEWCZ(IR)-CEN(IN,3))*PF1(IR)-PF2(IR)*
1850 NAI(I,J)=(PEWCZ(IR)-CEN(IN,3))*PF0(IR)-PF1(IR)*
1855 C CALCULATE (P||P) ESP INTEGRALS
1857 IF((IAM(IPR,1) .EQ. 1) .AND. (IS .NE. IP)) THEN
1860 IR=IRD(I)+ID(IRD(IN))
1861 IR2=ID(IRD(I))+IRD(IN)
1862 IF(IR2 .LE. IR ) IR=IR2
1863 GO TO (160,170,180),IAM(I,2)
1864 160 NAI(I,J)=(PEWCX(IR)-CEN(I,1))*NAI(I,J)-(PEWCX(IR)-P
1866 IF(IAM(IN,2) .EQ. IAM(I,2)) NAI(I,J)=NAI(I,J)+PEXS(
1867 1IR)* 0.5D0*(PTD(IR)-PF1(IR))
1869 170 NAI(I,J)=(PEWCY(IR)-CEN(I,2))*NAI(I,J)-(PEWCY(IR)-P
1871 IF(IAM(IN,2) .EQ. IAM(I,2)) NAI(I,J)=NAI(I,J)+PEXS(
1872 1IR)* 0.5D0*(PTD(IR)-PF1(IR))
1874 180 NAI(I,J)=(PEWCZ(IR)-CEN(I,3))*NAI(I,J)-(PEWCZ(IR)-P
1876 IF(IAM(IN,2) .EQ. IAM(I,2)) NAI(I,J)=NAI(I,J)+PEXS(
1877 1IR)* 0.5D0*(PTD(IR)-PF1(IR))
1882 C FORM INTEGRALS OVER CONTRACTED FUNCTIONS
1888 DO 210 J=JPS,JPS+ICD-1
1889 DO 210 K=IPS,IPS+ICD-1
1890 ESPI(I,IC)=ESPI(I,IC)+CC(J)*CC(K)*NAI(J,K-IPS+1)
1892 ES(IESP)=ES(IESP)+2.D0*CESPM(INDC(I),INDC(IC))*ESPI(I,IC)
1894 ES(IESP)=ES(IESP)-CESPM(INDC(IC),INDC(IC))*ESPI(IC,IC)
1897 C WRITE OUT RESTART INFORMATION EVERY NESP/10 POINTS
1899 IF(MOD(IESP,NESP/IDN) .EQ. 0) THEN
1900 OPEN(UNIT=15,FILE='ESP.DUMP',STATUS='UNKNOWN',FORM='UNFORMAT
1903 WRITE(15) JSTART,IESP
1909 WRITE(6,'(A,F6.2,A)')
1910 1'NAICAP DUMPED: ',100.D0/IDN*IDC,' PERCENT COMPLETE'