Table of Contents

Integration

Before starting any energy calculations, the geometry and basis set must be defined in GEOMETRY and BASIS blocks, respectively. By default, two electron integrals are evaluated once and stored on disk. This behaviour may be overridden by using the input command gdirect (see section INTEGRAL-DIRECT CALCULATIONS (GDIRECT)) to force evaluation of integrals on the fly. Molpro checks if the one-and two-electron integrals are available for the current basis set and geometry, automatically computing them if necessary. The program also recognizes automatically if only the nuclear charges have been changed, as is the case in counterpoise calculations. In this case, the two-electron integrals are not recomputed.

By default a point charge nuclear model is used for all atoms. Alternatively, a Gaussian nuclear model can be used by setting

SET,FNUC=1
before the first energy evaluation (a value of 0 corresponds to a point charge nucleus). Alternatively, this also can be given as an option to the INT command:

INT,FNUC=1

Sorted integrals

If the integrals are stored on disk, immediately after evaluation they are sorted into complete symmetry-packed matrices, so that later program modules that use them can do so as efficiently as possible. As discussed above, it is normally not necessary to call the integral and sorting programs explicitly, but sometimes additional options are desired, and can be specified using the INT command, which should appear after geometry and basis specifications, and before any commands to evaluate an energy.

INT, [[NO]SORT,] [SPRI=value]

SORT, [SPRI=value]

INT,NOSORT;SORT can be used to explicitly separate the integral evaluation and sorting steps, for example to collect separate timing data. With value set to more than 1 in the SPRI option, all the two-electron integrals are printed.

The detailed options for the integral sort can be specified using the AOINT parameter set, using the input form

AOINT, key1=value1, key2=value2, $\dots$

AOINT can be used with or without an explicit INT command.

The following summarizes the possible keys, together with their meaning, and default values.

For backward-compatibility purposes, two convenience commands are also defined: COMPRESS is equivalent to AOINT,COMPRESS=1, and NOCOMPRESS is equivalent to AOINT,COMPRESS=0.

Imported hamiltonian

It is possible to import the second-quantised hamiltonian completely from outside Molpro. In order to do so, it is necessary to set up a job that simulates the desired calculation by having a basis set of exactly the same dimensions as the one to be imported. One can then import the hamiltonian using the command

HAMILTONIAN,filename

filename is the name of a file that contains the hamiltonian in FCIDUMP format, which can be produced using Molpro’s {FCI,DUMP=} facility, or by another method.

Note that this facility is fragile, and is limited to energy-only calculations. Attempts to calculate gradients or other properties will inevitably fail. At present, the implementation does not support the use of point-group symmetry.

INTEGRAL-DIRECT CALCULATIONS (GDIRECT)

References:

Direct methods, general: M. Schütz, R. Lindh, and H.-J. Werner, Mol. Phys. 96, 719 (1999).
Linear scaling LMP2: M. Schütz, G. Hetzer, and H.-J. Werner J. Chem. Phys. 111, 5691 (1999).

Most methods implemented in MOLPRO can be performed integral-direct, i.e., the methods are integral driven with the two-electron integrals in the AO basis being recomputed whenever needed, avoiding the bottleneck of storing these quantities on disk. Exceptions are currently full CI (FCI), perturbative triple excitations (T), UMP2, RMP2, CPP, MRCI-F12, and RS2-F12. For small molecules, this requires significantly more CPU time, but reduces the disk space requirements when using large basis sets. However, due to efficient prescreening techniques, the scaling of the computational cost with molecular size is lower in integral-direct mode than in conventional mode, and therefore integral-direct calculations for extended molecules may even be less expensive than conventional ones. The break-even point depends strongly on the size of the molecule, the hardware, and the basis set. Depending on the available disk space, calculations with more than 150–200 basis functions in one symmetry should normally be done in integral-direct mode.

Integral-direct calculations are requested by the DIRECT or GDIRECT directives. If one of these cards is given outside the input of specific programs it acts globally, i.e. all subsequent calculations are performed in integral-direct mode. On the other hand, if the DIRECT card is part of the input of specific programs (e.g. HF, CCSD), it affects only this program. The GDIRECT directive is not recognized by individual programs and always acts globally. Normally, all calculations in one job will be done integral-direct, and then a DIRECT or GDIRECT card is required before the first energy calculation. However, further DIRECT or GDIRECT directives can be given in order to modify specific options or thresholds for particular programs.

The integral-direct implementation in MOLPRO involves three different procedures: (i) Fock matrix evaluation (DFOCK), (ii) integral transformation (DTRAF), and (iii) external exchange operators (DKEXT). Specific options and thresholds exist for all three programs, but it is also possible to specify the most important thresholds by general parameters, which are used as defaults for all programs.

Normally, appropriate default values are automatically used by the program, and in most cases no parameters need to be specified on the DIRECT directive. However, in order to guarantee sufficient accuracy, the default thresholds are quite strict, and in calculations for extended systems larger values might be useful to reduce the CPU time.

The format of the DIRECT directive is

DIRECT, key1=value1, key2=value2

The following table summarizes the possible keys and their meaning. The default values are given in the subsequent table. In various cases there is a hierarchy of default values. For instance, if THREST_D2EXT is not given, one of the following is used: [THR_D2EXT, THREST_DTRAF, THR_DTRAF, THREST, default]. The list in brackets is checked from left to right, and the first one found in the input is used. default is a default value which depends on the energy threshold and the basis set (the threshold is reduced if the overlap matrix contains very small eigenvalues).

SCREEN$\ge 0$: full screening enabled.
SCREEN$\lt 0$: THRPROD is unused. No density screening in direct SCF.
SCREEN$\lt -1$: THRINT is unused.
SCREEN$\lt -2$: THREST is unused.

PAGE_DTRAF=0: use minimum memory algorithm, requiring four integral evaluations.
PAGE_DTRAF=1: use paging algorithm,leading to the minimum CPU time (one integral evaluation for DMP2/LMP2 and two otherwise).

Defaults: [THR_DTRAF, THREST, default].

Defaults: [THR_DTRAF, THRINT, default].

Defaults: [THR_DTRAF, THRPROD, default].

Defaults: [THR_D2EXT, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_D2EXT, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Defaults: [THR_D2EXT, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

Defaults: [THR_D3EXT, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_D3EXT, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Defaults: [THR_D3EXT, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

Defaults: [THR_D4EXT, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_D4EXT, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Defaults: [THR_D4EXT, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

Defaults: [THR_DCCSD, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_DCCSD, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Defaults: [THR_DCCSD, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

DMP2=$-1$: automatic selection, depending on the available memory.
DMP2=0: use fully direct method for DMP2 (min. two integral evaluations, possibly multipassing, no disk space).
DMP2=1: use semi-direct method for DMP2 (one to four integral evaluations, depending on PAGE_DTRAF).
DMP2=2: use DKEXT to compute exchange operators in DMP2 (one integral evaluation). This is only useful in local DMP2 calculations with many distant pairs.

Defaults: [THR_DMP2, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_DMP2, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Defaults: [THR_DMP2, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

DTRAF $\geq 0$: generates the 2-external integrals (exchange operators) first in AO basis and transforms these thereafter in a second step to the projected, local basis. The disk storage requirements hence scale cubically with molecular size.
DTRAF $= -1$: generates the 2-external integrals (exchange operators) directly in projected basis. The disk storage requirements hence scale linearly with molecular size. This (together with PAGE_DTRAF = 0) is the recommended algorithm for very large molecules (cf. linear scaling LMP2, chapter PAO-based local correlation treatments).
DTRAF $= -2$: alternative algorithm to generate the exchange operators directly in projected basis. Usually, this algorithm turns out to be computationally more expensive than the one selected with DTRAF $= -1$. Note, that neither DTRAF $= -1$ nor DTRAF $= -2$ work in the context of LMP2 gradients.

Defaults: [THR_LMP2, THREST_DTRAF, THR_DTRAF, THREST, default].

Defaults: [THR_LMP2, THRPROD_DTRAF, THR_DTRAF, THRPROD, default].

Defaults: [THR_LMP2, THRINT_DTRAF, THR_DTRAF, THRINT, default].

Default: THREST_LMP2

DKEXT=-1: use paging algorithm (minimum memory). This is automatically used if in-core algorithm would need more than one integral pass.
DKEXT=0: use in-core algorithm, no integral triples.
DKEXT=1: use in-core algorithm and integral triples.
DKEXT=2: use in-core algorithm and integral triples if at least two integrals of a triple differ.
DKEXT=3: use in-core algorithm and integral triples if all integrals of a triple differ.

Defaults: [THR_DKEXT, THREST, default].

Defaults: [THR_DKEXT, THRINT, default].

Defaults: [THR_DKEXT, THRPROD, default].

For historical reasons, many options have alias names. The following tables summarize the default values for all options and thresholds and also gives possible alias names.

Default values and alias names for direct options.
Parameter Alias Default value
SCREEN $1$
MAXRED $7$
VARRED 1.d-7
SWAP $1$
SWAP_DFOCK SWAP
DMP2 DTRAF $-1$
PAGE_DTRAF PAGE $1$
SCREEN_DTRAF SCREEN
MAXSHLQ1_DTRAF NSHLQ1 $32$
MINSHLQ1_DTRAF $0$
MAXSHLQ2_DTRAF NSHLQ2 $16$
MINSHLQ2_DTRAF 0
MAXCEN_DTRAF 0
PRINT_DTRAF $-1$
SWAP_DTRAF SWAP
DKEXT DRVKEXT $3$
SCREEN_DKEXT SCREEN
MAXSIZE_DKEXT $0$
MINSIZE_DKEXT $5$
MAXCEN_DKEXT $1$
PRINT_DKEXT $-1$
SWAP_DKEXT SWAP
MXMBLK_DKEXT depends on hardware (-B parameter on molpro command)
Default thresholds and alias names for direct calculations
Parameter Alias Default value
THREST THRAO $\min(\Delta E \cdot 1.d-2,1.d-9)^{a,b}$
THRINT THRSO $\min(\Delta E \cdot 1.d-2,1.d-9)^{a,b}$
THRPROD THRP $\min(\Delta E \cdot 1.d-3,1.d-10)^{a,b}$
THRMAX 1.d-8$^b$
THREST_DSCF THRDSCF $\le$ 1.d-10 (depending on accuracy and basis set)
THRMAX_DSCF THRDSCF_MAX THRMAX
THR_DTRAF THRDTRAF
THREST_DTRAF THRAO_DTRAF [THR_DTRAF, THREST]
THRINT_DTRAF THRAO_DTRAF [THR_DTRAF, THRINT]
THRPROD_DTRAF THRP_DTRAF [THR_DTRAF, THRPROD]
THR_D2EXT THR2EXT THR_DTRAF
THREST_D2EXT THRAO_D2EXT [THR_D2EXT, THREST_DTRAF]
THRINT_D2EXT THRSO_D2EXT [THR_D2EXT, THRINT_DTRAF]
THRPROD_D2EXT THRP_D2EXT [THR_D2EXT, THRPROD_DTRAF]
THR_D3EXT THR3EXT THR_DTRAF
THREST_D3EXT THRAO_D3EXT [THR_D3EXT, THREST_DTRAF]
THRINT_D3EXT THRSO_D3EXT [THR_D3EXT, THRINT_DTRAF]
THRPROD_D3EXT THRP_D3EXT [THR_D3EXT, THRPROD_DTRAF]
THR_D4EXT THR4EXT THR_DTRAF
THREST_D4EXT THRAO_D4EXT [THR_D4EXT, THREST_DTRAF]
THRINT_D4EXT THRSO_D4EXT [THR_D4EXT, THRINT_DTRAF]
THRPROD_D4EXT THRP_D4EXT [THR_D4EXT, THRPROD_DTRAF]
THR_DCCSD THRCCSD THR_DTRAF
THREST_DCCSD THRAO_DCCSD [THR_DCCSD, THREST_DTRAF]
THRINT_DCCSD THRSO_DCCSD [THR_DCCSD, THRINT_DTRAF]
THRPROD_DCCSD THRP_DCCSD [THR_DCCSD, THRPROD_DTRAF]
THRMAX_DCCSD THRMAX_DTRAF THRMAX
THR_DMP2 THRDMP2 THR_DTRAF
THREST_DMP2 THRAO_DMP2 [THR_DMP2, THREST_DTRAF, default$^c$]
THRINT_DMP2 THRSO_DMP2 [THR_DMP2, THRINT_DTRAF, default$^c$]
THRPROD_DMP2 THRP_DMP2 [THR_DMP2, THRPROD_DTRAF, default$^c$]
THR_LMP2 THRLMP2 THR_DTRAF
THREST_LMP2 THRAO_LMP2 [THR_LMP2, THREST_DTRAF, default$^c$]
THRQ1_LMP2 THRQ1 [THR_LMP2, THRPROD_DTRAF, default$^c$]
THRQ2_LMP2 THRQ2 [THR_LMP2, THRINT_DTRAF, default$^c$]
THRAO_ATTEN THRATTEN THREST_LMP2
THR_DKEXT THRKEXT
THREST_DKEXT THRAO_DKEXT [THR_DKEXT, THREST]
THRINT_DKEXT THRSO_DKEXT [THR_DKEXT, THRINT]
THRPROD_DKEXT THRP_DKEXT [THR_DKEXT, THRPROD]
THRMAX_DKEXT THRMAX

a) $\Delta E$ is the requested accuracy in the energy (default 1.d-6).
b) The thresholds are reduced if the overlap matrix has small eigenvalues.
c) The default thresholds for DMP2 and LMP2 are $0.1 \cdot {\Delta E}$.

Example for integral-direct calculations

examples/h2o_direct.inp
$method=[hf,mp2,ccsd,qci,bccd,multi,mrci,acpf,rs3]              !some methods
basis=vdz                                                      !basis
geometry={o;h1,o,r;h2,o,r,h1,theta}                            !geometry
gdirect                                                        !direct option
r=1 ang,theta=104                                              !bond length and angle
do i=1,#method                                                 !loop over methods
$method(i)                                                     !run method(i)
e(i)=energy                                                    !save results in variables
dip(i)=dmz
enddo
table,method,e,dip                                             !print table of results

This job produces the following table:

 METHOD       E            DIP
 HF       -76.02145798   0.82747348
 MP2      -76.22620591   0.00000000
 CCSD     -76.23580191   0.00000000
 QCI      -76.23596211   0.00000000
 BCCD     -76.23565813   0.00000000
 MULTI    -76.07843443   0.76283026
 MRCI     -76.23369819   0.76875001
 ACPF     -76.23820180   0.76872802
 RS3      -76.23549448   0.75869972