The Atmol Tran4 Program, Nijmegen version

With thanks to the Utrecht Theoretical Chemistry Group, who supplied a manual which formed the basis of the present manual.

Table of Contents


Preface


This manual describes the ATMOL 2- and 4-index transformation program, as implemented in Nijmegen on the IBM RS/6000 and the SUN Enterprise 4000. The original version of this program was written by V.R. Saunders and M.F. Guest (Daresbury, UK).

Introduction



This program transforms 1- and 2-electron integrals over atomic orbitals (AOs) to the corresponding set over molecular orbitals (MOs). Very large cases can be run in small memory, but at the cost of many passes over the integral files, and at a corresponding cost of I/O.

The memory required to accomplish a transformation is a function of the number of AOs, the number of the MO's specified in the ACTIVE directive, and the number of passes in the sort procedure specified in the PASS directive and must be specified on the first input line.

User data input and printed output are on FORTRAN standard input and output. Further the following files are required:

MAINFILE:
A dataset containing the 2-electron integrals over AOs. It may be assigned to any ATMOL file name. The program INTEGW will normally have been used to generate this dataset. The MFILE directive may be used to specify the MAINFILE, but by default it will be assumed to be on ED2.

SECONDARY MAINFILE:
Partially transformed 2-electron integrals are output to a dataset referred to as the SECONDARY MAINFILE. The user may direct this dataset to any ATMOL file, using the SFILE directive. By default, the file will be ED4.

Care should be taken if the user assigns the SECONDARY MAINFILE with the same filename as the MAINFILE. The SECONDARY MAINFILE should not be allowed to overwrite the MAINFILE except where the latter can be sorted in one pass. An approximation to the length of the SECONDARY MAINFILE can be calculated as S=2*L*R, where L defines the length of the MAINFILE in ATMOL blocks, and R=NACT/NBASIS, with NACT and NBASIS being the number of active MOs (see the ACTIVE directive below) and the number of AOs respectively.

FINAL MAINFILE:
Fully transformed 2-electron integrals over the MOs are output to a dataset referred to as the FINAL MAINFILE. The user may direct this dataset to any ATMOL file, using the FFILE directive. By default the file will be ED6. The FINAL MAINFILE may overwrite the MAINFILE. The FINAL MAINFILE should not be allowed to overwrite the SECONDARY MAINFILE unless the latter can be sorted in one pass. The approximate size of the FINAL MAINFILE is L*(R**2) blocks.

SORTFILE:
The direct access dataset ED7 used as a scratch file during sorting of the MAINFILE and the SECONDARY MAINFILE. An approximation to the length of the SORTFILE can be computed as the greater of 2*L/NPASS1 or S/NPASS2, where NPASS1 and NPASS2 denote the number of passes required to sort the MAINFILE and the SECONDARY MAINFILE respectively.

DUMPFILE:
The file used by the Gaussian integrals program for the output of 1-electron integrals over the AOs. It can be any ED file except ED7. By default it will be ED3. The DUMPFILE is used as a source of MO coefficients (produced by the SCF program, for example), 1-electron integrals over AOs, and for output of dump control information to enable restarts, and for output of 1-electron integrals over the MOs. The user should take every precaution to prevent overwriting of the DUMPFILE.

The First Two Lines of Data


The syntax of the first line of data is format (A,I):
       TEXT I

where TEXT must be the string CORE and I is the number of Kbytes set aside for the program.
  Example:

       CORE 4096

will tell the program to use 4Mbyte of main memory. The syntax of the second line of data is:
       NBASIS IBLKD [ DDUMP [ INTSEC ] ]

NBASIS
This is an integer specifying the number of basis functions, as defined at integral evaluation. The maximum allowed value is 255.
IBLKD
This is an integer specifying the starting block of the DUMPFILE.
DDUMP
This is a string specifying the ATMOL filename of the DUMPFILE. If this parameter is omitted, the DUMPFILE will be assumed to be ED3.
INTSEC
This is an integer specifying the section number of the 1-electron integrals. By default the 1-electron integrals reside on section 192. Note that if this parameter is specified DDUMP should be specified also.
The remainder of the user data consists of directives.

The Directives.


Some restrictions have been imposed on the order in which the directives may be presented, the recommended order being as follows (not all directives need be used).

The TITLE Directive


    Allows the user to define an 80 character title for the run, and
extends over two lines.  The first line consists of the string TITLE
in the first data field, the second line comprises the title.

    example:

      TITLE
      H2O - TRANSFORMATION


The SIZE Directive


    The SIZE directive may be used to overide the previous SIZE
assignment of the DUMPFILE as given by the Integrals or SCF program.
It is read to TEXT,ISIZE in format (A,I).

    TEXT   should be set to the character string SIZE.

    ISIZE  specifies the maximum size (in blocks) of the DUMPFILE.


The ACCURACY Directive


    This directive is read to TEXT,K in the format (A,I).

    TEXT   should be set to the character string ACCURACY.

    K     A threshold factor ACC = 10**(-K) is computed, and if the
absolute value of a transformed 2-electron integral is less than ACC,
that integral will not be output to the FINAL MAINFILE.  A factor ACC1
= ACC/100 is also computed, and if the absolute value of a partially
transformed 2-electron integral is less than ACC1, that integral will
not be output to the SECONDARY MAINFILE.

    The ACCURACY directive may be omitted, when the default value K=10
is assumed.  The smaller the value of K, the shorter will be the size
of the SECONDARY and FINAL MAINFILE, and the shorter the computation
time in the second phase of the 4-index transformation.


The MFILE Directive


    This directive is used to define the location of the MAINFILE.
The syntax has been given in the description of the directive of the
same name in the ATMOL SCF program.

    example 1:

      MFILE
      ED2
      75
      0

    example 2:

    Omission of the MFILE directive is equivalent to:

      MFILE
      ED2
      1
      0


The SFILE Directive


    This directive is used to specify the destination of the partially
transformed 2-electron integrals, the SECONDARY MAINFILE, and consists
of four lines.  The first line conists of the text SFILE in the first
data field, the syntax for the remaining three lines being as for the
MFILE directive above.

    example 1:

      SFILE
      ED2 ED3
      1 80
      101 0

    The first 100 blocks of the SECONDARY MAINFILE will be routed to
ED2 commencing at block 1, while the remainder will be routed to ED3
commencing at block 80.

    example 2:

    Omission of the SFILE directive is equivalent to:

      SFILE
      ED4
      1
      0


The FFILE Directive


    This directive is used to specify the destination of the fully
transformed 2-electron integrals, the FINAL MAINFILE, and consists of
four lines.  The first line consists of the character string FFILE in
the first data field, the syntax of the remaining three lines being as
for the MFILE or SFILE directives above.

    example 1:

      FFILE
      ED5 ED6
      1 1
      4001 0

    example 2:

    Omission of the FFILE directive is equivalent to:

      FFILE
      ED6
      1
      0


The PASS Directive


    This directive is read to TEXT,NPASS1,NPASS2 in format (A,2I).

    TEXT   should be set to the character string PASS.

    NPASS1 specifies the minimum number of passes of the MAINFILE in
the first phase of the 4-index transformation.

    NPASS2 specifies the minimum number of passes of the SECONDARY
MAINFILE in the second phase of the 4-index transfomation.

    In the absence of a PASS directive the program will use the
smallest number of passes possible in both phases.  However, the size
of the SORTFILE is inversely proportional to either NPASS1 or NPASS2,
so multi-passing may be necessary if only limited disc space is
available.  Note also that the program forms a dump to enable restarts
at the end of each pass, so the more passes, the shorter the time
interval between dumps.


    Example:

      PASS 3 2

    Specifies a 3 and 2 pass sort of the MAINFILE and SECONDARY
MAINFILE respectively.


The VECTORS Directive


    This directive is used to obtain a MO coefficient matrix from the
DUMPFILE, format (A,I,A):

    TEXT  ISECV  [PRIN]

    TEXT should be set to the character string VECTORS.  ISECV should
be set to the section number on the DUMPFILE where the MO coefficient
matrix is to be found.  This matrix will have been written by the SCF
program, or as natural orbitals by the program MACINTOS.  PRIN may be
set to the string PRINT, if printing of the coefficient matrix is
desired.  These parameters can be omitted, when MO printing will be
omitted.

    If a CTRANS directive was used in the SCF run which created the
MOs, the data associated with the CTRANS directive will be retrieved
from the DUMPFILE.

    Example:

      VECTORS 1 PRINT

    The MO coefficient matrix will be retrieved from Section 1 of the
DUMPFILE, and the MOs will be printed.


The ACTIVE Directive


    This directive specifies those members of the MO set which are
deemed 'active' in the 4-index transformation, so that integrals over
MOs will be computed and output to the FINAL MAINFILE only if all four
MOs are specified using the ACTIVE directive.  The syntax of the
directive has been described in the description of the directive of
the same name in the ATMOL SCF program.

    example 1:

      ACTIVE
      3 4 5 6 8 7
      END

    MOs 3,4,5,6,8 and 7 are made active, they will be re-indexed
1,2,3,4,5 and 6 respectively, and the subsequent programs, such as
TDCHF, the 3BODY suite, POLCOR, or MACINTOS, will refer to the MOs in
this re-indexed convention.

    example 2:

      ACTIVE
      3 TO 6 8 7
      end

    This example shows the use of the string TO to abbreviate
consecutive sequences of integers, and is equivalent to example 1.


The ONELEC Directive


    This directive allows a frozen core Fock matrix to be computed.
The first line is read to

    TEXT  NSECT

    TEXT   should be set to the character string ONELEC. It initiates
           the reading of a frozen core list.

    NSECT specifies the section number on the DUMPFILE where the
transformed Fock matrix is to be placed.  NSECT must lie between 1 and
190.  This line is followed by a specification of a set of frozen core
orbitals and is ended by the string END on a single line.

    Example:

      ONELEC 50
      1 to 5
      7 9
      END
Note: this directive is seldom used in Nijmegen, see the old one-electron directive OLDONE.

The OLDONE Directive

    This directive allows specification of one-electron matrices to be
transformed.  The first line is read to

    TEXTA TEXTB NSECT  [TEXTC NSECTC] ...

    TEXTA   should be set to the character string OLDONE.

    TEXTB  is any of S, T, T+V, FOCK, X, Y, Z, or K(Q).

    NSECTB specifies the section number on the DUMPFILE where the
transformed 1-electron integrals are to be placed.  NSECTB must lie
between 1 and 190.

    Examples:

      OLDONE S 50  T 51 T+V 52

    Transform S, T, and T+V and store into section 50, 51, and 53
    of the dumpfile respectively.

      OLDONE FOCK 60


    This example computes the closed-shell Fock matrix and stores it
on section 60 of the dump file.  Here


      F = T + V + 2 J[R] - K[R]


T + V denotes the usual 1-electron operator (sum of kinetic and nuclear attraction), R denotes the density matrix, and J and K are coulomb and exchange matrices constructed therefrom. The density matrix R is computed from molecular orbital coefficients and a set of molecular orbitals ocupation numbers, the latter being either retrieved from the dumpfile with the VECTORS directive or user specified by means of the MOPOPS directive or OCCDEF directive.

The quantity K(Q) is "the half-open shell exchange matrix" required for high spin TDCHF calculations. It is defined by K(Q)_{i,j} = \sum_{p \in open} (ip|jp), where p designates the orbitals in the half-open shell.

X, Y, and Z are components of the dipole operator. This possibility of transforming dipoles has been made obsolete by the MULTIPOLE directive.


The BRILLOUIN directive

The Brillouin directive allows one to check if the orbitals on the dump file satisfy the Brillouin theorem, format(A,F):

    TEXT CHECK

Text must be the character string BRILL and CHECK is the threshold again which the Brillouin condition is tested. If any of the virtual-occupied Fock matrix elements is larger than CHECK, the program abends with error code 211.


The MULTIPOLE Directive

    The multipole directive is of the form format(A,I,A)

     TEXT I [PRINT]

    here TEXT should be the string MULT, I is the maximum order
(maximum l) of the multipoles to be transformed and the option print
specifies whether they are to be printed to standard output.
The number I should be less or equal the number specified in
the MULTIPOLE directive of INTEGW.


The MOPOPS Directive

Allows the user to specify the molecular orbital occupation numbers to be used in Fock matrix construction, the syntax being the same as the MOPOPS directive for the SCF program.

The OCCDEF Directive

An alternative to the MOPOPS directive for specifying molecular orbital occupation numbers. The first data line consists of the character string OCCDEF in the first data field. Subsequent lines are read as follows: The first data field is read in F-format, and should contain a specific occupation number. Subsequent data fields are read in I-format; let the value of an integer specified in such a field be j. Then the j'th molecular orbital will be assigned the occupation number in the first data field of the line. The following comprises a valid occupation number definition line
      2.0 1 2 3 4 5 7
Such a line may be shortened by means of TO. Thus the abbreviated form of the above is
      2.0 1 TO 5  7
The occupation definition lines are presented until all the MO's to be assigned a non-zero occupancy have been specified. The sequence is terminated by END on a line by itself. Orbitals not specified will be assigned zero occupancy.
    Example:

      OCCDEF
      2.0 1 TO 11
      1.0 12
      END
MO's 1 to12 are assigned double occupancy, orbital 12 has single ocupancy, the remainder being unoccupied.

The BYPASS Directive


    This directive is used to by-pass either the 2- or 4-index
transformation phase, and is read to TEXT,TPASS in format (2A).

    TEXT   should be set to the character string BYPASS.

    TPASS should be set to one of the strings FOUR or TWO, depending
on which phase of the transformation the user wishes to neglect.



The ENTER Directive


    This directive should be last presented, since it causes assembly
of all the preceding data, and execution of the transformation process
to commence.  It is read to TEXT,ISECTD in format (A,I).

    TEXT   should be set to the character string ENTER.

    ISECTD specifies the section number on the DUMPFILE where restart
control information is to be deposited.  If omitted, when restart
control information will be routed to Section 203.  If specified,
ISECTD should lie between 1 and 190.  It is normally specified only
when more than one 4-index transformation is running from the same
DUMPFILE and MAINFILE concurrently, when it is essential to set up a
separate control block on the DUMPFILE for each case.

    example:

      ENTER 140

    causes the 4-index transformation process to commence, restart
control information being routed to section 140 of the DUMPFILE.


The RESTART Directive


    This directive is used instead of ENTER for a job which has only
partially completed the 4-index transformation, and dumped.  It is
read to TEXT,ISECTD in format (A,I).

    TEXT   should be set to the character string RESTART.

    ISECTD should be set to the same value as was used in the startup
job on the ENTER directive.  If ISECTD was omitted on the ENTER
directive of the startup job, it should be omitted on the RESTART
directive of the restart job, when it will take the default value 203.

    For a restart to be possible, the MAINFILE, SECONDARY MAINFILE and
FINAL MAINFILE should have been permanent files in the startup job,
exactly the same files being presented to the restart job, and
identical MFILE, SFILE and FFILE directives should be used in the
startup and restart jobs.  The SORTFILE need not be preserved between
jobs.  Suppose that in a startup job a PASS directive was issued of
the form:

      PASS 3 3

and the job dumped after the first pass in phase 1. In the restart
job it is necessary to alter the PASS directive to take account of the
already completed first pass in phase 1, so a PASS directive of the
form:

      PASS 2 3

should be presented in the restart job.  However, if the number of
passes is calculated by the program, due account will be taken of the
number of passes accomplished in the startup job.




Error Monitoring




    A brief explanation of the possible ATMOL error codes is given below:

  Error Code   Explanation
  __________   ___________

           1   Illegal value for NATOMS. It should be greater than 0.
           3   Basisset is not closed under symmetry operations in the
               point group. I.e. space spanned by basisset is of different
               symmetry than the geometry of molecule.
          15   Illegal value for NBASIS. It should lie between 2 and 255.
          16   Directive unknown.
          32   The number of sections of the MAINFILE, or SECONDARY
               MAINFILE or FINAL MAINFILE as specified in a MFILE,
               SFILE or FFILE directive respectively, is invalid.
          40   An ENTER or RESTART directive appears before the VECTORS
               directive.
          42   Atmol file name in MFILE, SFILE or FFILE directive not
               known.
          51   OCCDEF directive before VECTORS directive.
          53   The ACTIVE directive appears before the VECTORS directive.
          61   Index block of DUMPFILE not in correct format.
          62   ATMOL block with invalid checksum has been read,
               or input/output error on ATMOL file.
          63   A DUMPFILE Section number outside the allowed range of
               1 to 190 has been specified.
          64   An attempt has been made to retrieve an
               undefined Section from the DUMPFILE.
          65   A DUMPFILE Section is of the wrong TYPE.
          67   Illegal search of an ATMOL file.
          68   Illegal character found in F-format data field.
          69   Illegal character found in I-format data field.
          70   The SIZE directive specifies a maximum size less
               than the current size of the DUMPFILE.
          71   An attempt has been made to expand the DUMPFILE beyond
               its maximum size (as specified by a SIZE directive).
          72   An attempt has been made to overwrite a Section on
               the DUMPFILE with a Section of greater length.
          80   No active MOs have been specified.
          81   Error in ACTIVE directive.
          83   Invalid parameter on the BYPASS directive.
          85   Dump file specified as ED7 (the sort file).
          86   Error in OLDO directive
          87   Invalid matrix specified in OLDO directive.
          88   Invalid number of passes (NPASS1, NPASS2) specified by the
               PASS directive. NPASS1 and NPASS2 must be greater than 0.
         210   Sum of closed, open and virtual orbitals not
               equal to number of active orbitals.
         211   Brillouin check requested and orbitals do not satisfy
               Brillouin's theorem.
         666   End of file condition detected on FORTRAN stream 5.
               The program expects more data.
         704   Eigenvectors obtained by the VECTORS directive are
               incompatible with the value of NBASIS.
         709   Invalid MO specified in the OCCDEF directive.
         710   Invalid MO specified in the ACTIVE directive.
         711   Invalid MO specified in the SPLICE directive.
         888   Insufficient space on the SECONDARY MAINFILE.
         889   Insufficient space on the FINAL MAINFILE.
         990   Active directive and onelec directive are inconsistent.
         999   Insufficient main memory for the program to continue.



Specimen Job


The following example does not illustrate all the features of the Transformation program, only a guide is intended.

This example is based on the H2O monomer. Omission of the MFILE directive causes the program to read AO 2-electron integrals from ED2, while omission of SFILE and FFILE directives will cause the SECONDARY MAINFILE and FINAL MAINFILE to be routed to ED4 and ED6 respectively. The DUMPFILE is assumed to be on ED3, and closed shell SCF vectors are taken from section 1. MOs 2 to 25 are active, while the oxygen 1s inner shell MO is incorporated in the Fock operator. The latter is routed to section 60 of the DUMPFILE by default.

     CORE 8000
     25 1
     TITLE
     (H2O) TRANSFORMATION 24 ORBITALS 1 CORE
     VECTORS 1
     OLDO FOCK 60
     ACTIVE PRINT
     2 TO 25
     END
     ENTER