MOPAC bug fixes



I am consolidating some problems found with MOPAC in one message that
 has been sent to both the chemistry mailing list and USENET sci.chem
 to try to reach the widest possible audience.
 As noted in QCPE Bulletin Volume 11, No. 3, pp. 52-54 (1991) and
 on the chemistry mailing list recently, the following bugs have been
 found in MOPAC 6 (the 'esp.rof' problem also exists in MOPAC 5). I
 present the changes in UNIX 'patch' format, where lines modified
 are indicated with '!', lines added with '+', and 3 lines of context
 are also given. In all cases the "old" file is listed first and the
 "new" file second.
 *** fock2.f.orig	Thu Mar  7 15:39:15 1991
 --- fock2.f	Thu Oct 10 16:53:23 1991
 ***************
 *** 484,489 ****
 --- 484,491 ----
   C  FOR VECTOR MACHINES, REMOVE THE ARRAY SUM, UNCOMMENT THE LINES
   C  MARKED CVECTOR, AND COMMENT OUT THE SECOND WHOLE PART OF THE
   C  SUBROUTINE
 + C  *** IF...ELSE...ENDIF ADDED TO THE FOLLOWING LOOP AS NOTED
 + C  IN QCPE BULLETIN VOL. 11, NO. 3, PP. 52-54 (1991).
   C
   CVECTOR                  L=0
   CVECTOR                  M=0
 ***************
 *** 491,497 ****
   CVECTOR                  J=(J1*(J1-1))/2
   CVECTOR                  DO 130 J2=JA,JA+3
   CVECTOR                  M=M+1
 ! CVECTOR                  J3=J+J2
   CVECTOR                     SUM=0
   CVECTOR                     DO 120 I=1,16
   CVECTOR                        L=L+1
 --- 493,503 ----
   CVECTOR                  J=(J1*(J1-1))/2
   CVECTOR                  DO 130 J2=JA,JA+3
   CVECTOR                  M=M+1
 ! CVECTOR                  IF (IA .GT. JA) THEN
 ! CVECTOR                     J3=J+J2
 ! CVECTOR                  ELSE
 ! CVECTOR                     J3=J1+(J2*(J2-1))/2
 ! CVECTOR                  ENDIF
   CVECTOR                     SUM=0
   CVECTOR                     DO 120 I=1,16
   CVECTOR                        L=L+1
 *** hcore.f.orig	Thu Mar  7 15:49:19 1991
 --- hcore.f	Thu Oct 10 16:55:42 1991
 ***************
 *** 38,43 ****
 --- 38,48 ----
            IF(ID.NE.0)CUTOFF=60.D0
            IF(ID.NE.0)IONE=0
            DEBUG=(INDEX(KEYWRD,'HCORE') .NE. 0)
 + C  *** FOLLOWING 3 LINES ADDED AS NOTED
 + C  IN QCPE BULLETIN VOL. 11, NO. 3, PP. 52-54 (1991).
 + 	 EFIELD(1)=0.D0
 + 	 EFIELD(2)=0.D0
 + 	 EFIELD(3)=0.D0
         ENDIF
         FLDON = .FALSE.
         IF ((EFIELD(1).NE.0.0D00).OR.(EFIELD(2).NE.0.0D00).OR.
 *** wrtkey.f.orig	Sun Mar 10 20:45:45 1991
 --- wrtkey.f	Thu Oct 10 16:58:29 1991
 ***************
 *** 44,49 ****
 --- 44,52 ----
         IF (MYWORD(ALLKEY,'TIMES') )WRITE(6,280)
         IF (MYWORD(ALLKEY,'PARASOK') ) WRITE(6,290)
         IF (MYWORD(ALLKEY,'NODIIS') ) WRITE(6,300)
 + C  *** FOLLOWING LINE ADDED AS NOTED
 + C  IN QCPE BULLETIN VOL. 11, NO. 3, PP. 52-54 (1991).
 +       IF (MYWORD(ALLKEY,'NOTHIE') ) WRITE(6,305)
         IF (MYWORD(ALLKEY,'BONDS') ) WRITE(6,310)
         IF (MYWORD(ALLKEY,'GEO-OK') ) WRITE(6,320)
         IF (MYWORD(ALLKEY,'FOCK') ) WRITE(6,330)
 ***************
 *** 442,447 ****
 --- 445,453 ----
     290 FORMAT(' *  PARASOK  - USE SOME MNDO PARAMETERS IN AN AM1 CALCULA'
        1,'TION')
     300 FORMAT(' *  NODIIS   - DO NOT USE GDIIS GEOMETRY OPTIMIZER')
 + C  *** FOLLOWING LINE ADDED AS NOTED
 + C  IN QCPE BULLETIN VOL. 11, NO. 3, PP. 52-54 (1991).
 +   305 FORMAT(' *  NOTHIEL  - DO NOT USE THIEL''S FSTMIN OPTION')
     310 FORMAT(' *  BONDS    - FINAL BOND-ORDER MATRIX TO BE PRINTED')
     320 FORMAT(' *  GEO-OK   - OVERRIDE INTERATOMIC DISTANCE CHECK')
     330 FORMAT(' *  FOCK     - LAST FOCK MATRIX TO BE PRINTED')
 *** esp.rof.orig	Thu Mar  7 15:35:48 1991
 --- esp.rof	Thu Oct 10 17:02:10 1991
 ***************
 *** 949,955 ****
            WRITE(21,'(I5)') NESP
            DO 410 I=1,NESP
     410    WRITE(21,420) ESP(I),POTPT(1,I)/BOHR,POTPT(2,I)/BOHR,
 !      1POTPT(3,I)
         ENDIF
     420 FORMAT(1X,4E16.7)
         RETURN
 --- 949,955 ----
            WRITE(21,'(I5)') NESP
            DO 410 I=1,NESP
     410    WRITE(21,420) ESP(I),POTPT(1,I)/BOHR,POTPT(2,I)/BOHR,
 !      1POTPT(3,I)/BOHR
         ENDIF
     420 FORMAT(1X,4E16.7)
         RETURN
 Note that for the QCPE SGI version of MOPAC 6, an addition change
 is required in routine 'densit.f' at line 120: change
 	P(L)=SUM2+SUM1
 to
 	P(L)=-(SUM2+SUM1)
 The standard version of MOPAC does not contain code that looks like
 this in this routine.
 --
 Mike Peterson, System Administrator, U/Toronto Department of Chemistry
 E-mail: system;at;alchemy.chem.utoronto.ca
 Tel: (416) 978-7094                  Fax: (416) 978-8775