# Basis input

## Overview: sets and the basis library

Basis functions are used in Molpro not just for representing orbitals, but also for providing auxiliary sets for density fitting (see density fitting) and for simplifying integrals through approximate identity resolution in explicitly-correlated methods (see explicitly correlated methods). In order to accommodate this, the program maintains internally a number of different *sets*. The first of these always has the name `ORBITAL`

and is the primary basis set for representing orbitals, and others can be defined as necessary as described below, or else are constructed automatically by the program when required. In the latter case, the density-fitting and other modules attempt to guess a reasonable library fitting basis that should be appropriate for the orbital basis set; it is advisable to check the choice when using anything other than a standard orbital basis set.

The basis sets may either be taken from the library, or may be specified explicitly, or any combination. Optionally, the basis function type can be chosen using the `CARTESIAN`

or `SPHERICAL`

commands.

## Cartesian and spherical harmonic basis functions

[command:spherical]

`MOLPRO`

uses spherical harmonics ($5d$, $7f$, etc) by default, even for Pople basis sets like `6-31G**`

. This behaviour may be different to that of other programs; However, cartesian functions can be requested using the `CARTESIAN`

command.

`CARTESIAN`

If this command is encountered, the logical `MOLPRO`

variable `CARTESIAN`

is set to true (1.0), and all subsequent calculations use cartesian basis functions. This is remembered across restarts. One can switch back to spherical harmonics using the command.

`SPHERICAL`

It should be noted that there are the following disadvantages and limitations when using cartesian basis functions:

- the basis sets are larger and more linearly dependent;

- density fitting routines are much slower with cartesian basis functions than with spherical harmonics;

- some programs cannot use cartesian basis functions at all, e.g. the PNO programs, or gradients with density fitting.

Since Molpro 2022.2 all auxiliary basis sets (e.g. for density fitting or RI) use spherical functions by default, independent of the `CARTESIAN`

setting. Cartesian auxiliary functions can be used by defining the basis sets in a basis block using, e.g.,

`set, name, context=jkfit, attributes=cartesian`

….

but this is not recommended since such sets become often linearly dependent.

## The basis set library

The basis set library consists of a set of plain text files that constitute a database of commonly-used basis sets (primitive gaussians and associated contractions) and effective core potentials. These files can be found in the source tree as `lib/*.libmol`

, but it is usually more convenient to query the database using the web interface.

Many of the basis sets are taken directly from the Pacific Northwest National Laboratory basis set database, but there are others, notably the Stuttgart effective core potentials and bases.

## Default basis sets

If a basis is not specified at all for any unique atom group, then the program assumes a global default. Presently, this default is `VDZ`

, but may be overridden using

`BASIS`

,*basis*

or

`BASIS=`

*basis*

*basis* is looked up in the file `lib/defbas`

, which generates an appropriate request for a complete contracted set, together in some cases with an ECP, from the library. This mapping includes the following commonly-used basis sets:

- All of the Dunning correlation consistent basis sets, through the use of either the standard name of the basis set (
`cc-pVXZ`

,`aug-cc-pVXZ`

) or an abbreviation (`VXZ`

,`AVXZ`

). For Al-Ar the tight-d augmented sets are obtained through the standard name`cc-pV(X+d)Z`

,`aug-cc-pV(X+d)Z`

or`VXZ+d`

,`AVXZ+d`

. Sets X=D,T,Q,5 are available for H-Kr with X=6 available for B-Ne and Al-Ar. - The correlation consistent basis sets for core correlation,
`cc-pCVXZ`

,`aug-cc-pCVXZ`

or`CVXZ`

,`ACVXZ`

(X=D,T,Q,5), and the newer ”weighted sets”`cc-pwCVXZ`

,`aug-cc-pwCVXZ`

or`WCVXZ`

,`AWCVXZ`

(X=D,T,Q,5). These are available for Li-Kr (CVXZ do not include Sc-Zn). - Douglas-Kroll-Hess relativistic versions of the correlation consistent basis sets are available through use of the standard or abbreviated names with extension -DK, e.g.,
`cc-pVXZ-DK`

or`VXZ-DK`

. X=D-5 are available for H-Kr, while X=T are available for Y-Cd and Hf-Hg. Sets contracted for 3rd-order DKH are available for Hf-Hg with extension -DK3. - The F12 basis sets of Peterson et al. for explicitly correlated calculations,
`cc-pVXZ-F12`

,`cc-pCVXZ-F12`

or`VXZ-F12`

,`CVXZ-F12`

with X=D,T,Q. These are available for H-Ar. - The Turbomole def2 family of basis sets,
`SV(P)`

,`SVP`

,`TZVP`

,`TZVPP`

,`QZVP`

, and`QZVPP`

. These are available for the entire periodic table except for the f-block elements. - The older segmented Dunning/Hay double-zeta sets for the first row (
`DZ`

and`DZP`

). - The Roos ANO basis sets for H-Ar (
`ROOS`

). - The Stuttgart ECPs and associated basis sets (e.g.,
`ECP10MDF`

), as well as the ECP-based correlation consistent basis sets of Peterson and co-workers,`cc-pVXZ-PP`

,`aug-cc-pVXZ-PP`

,`cc-pwCVXZ-PP`

,`aug-cc-pwCVXZ-PP`

or`VXZ-PP`

,`AVXZ-PP`

,`WCVXZ-PP`

,`AWCVXZ-PP`

. The latter are available for Cu-Kr, Y-Xe, and Hf-Rn (core correlation sets currently only for transition metals). - The Hay ECPs and corresponding basis sets (
`ECP1`

and`ECP2`

). - Other members of the Karlsruhe basis sets (
`SV`

,`TZV`

, and, for some elements,`TZVPPP`

). - The Binning/Curtiss sets for Ga–Kr (
`BINNING-SV`

,`BINNING-SVP`

,`BINNING-VTZ`

and`BINNING-VTZP`

) - Most of the Pople basis sets, using their standard names (e.g.,
`6-31G*, 6-311++G(D,P)`

, etc.). Note that specially in this case, the mechanism described below using parenthesized modifiers to restrict the basis set is disabled to allow the full range of standard basis sets to be specified.

In addition, many density fitting and resolution of the identity (RI) basis sets are available. For the correlation consistent basis sets of Dunning, the appropriate VXZ/JKFIT, VXZ/MP2FIT, AVXZ/MP2FIT sets of Weigend are chosen automatically in density fitted calculations (augmented versions AVXZ/JKFIT for Fock-matrix fitting are also available). For the def2 family of orbital basis sets, the appropriate auxiliary sets (e.g., TZVPP/JFIT, TZVPP/JKFIT, TZVPP/MP2FIT) are used. In principle these JKFIT sets are universal and also applicable in combination with the AVXZ basis sets. Initial results indicate that they also work well with the cc-pVXZ-PP and aug-cc-pVXZ-PP series of basis sets.

For explicitly correlated F12 calculations that use the cc-pVXZ-F12 orbital basis sets, the corresponding VXZ-F12/OPTRI basis sets are used by default to construct the complementary auxiliary orbital basis (CABS). For other orbital basis sets, appropriate JKFIT sets are utilized by default.

Example:

`BASIS=VTZ`

generates valence triple zeta basis set for all atoms. Thus, the input

- examples/h2o_scf_vtz.inp
***,h2o cc-pVTZ basis !A title r=1.85,theta=104 !set geometry parameters geometry={O; !z-matrix geometry input H1,O,r; H2,O,r,H1,theta} basis=VTZ !use VTZ basis hf !closed-shell scf

performs a Hartree-Fock calculation for H$_2$O using the cc-pVTZ basis set.

Default basis sets can be defined anywhere in the input before the energy calculation to which it should apply using a single `BASIS`

card as shown above. The default basis set applies to all types of atoms but can be superceded by different basis sets for specific atoms as explained in the next section. Some restrictions concerning the maximum angular momentum functions to be used, or the number of contracted functions are possible as follows:

The maximum angular momentum in the basis set can be reduced using syntax such as

`BASIS,VQZ(D)`

which would omit the $f$ and $g$ functions that would normally be present in the VQZ basis set.

`BASIS,VQZ(D/P)`

would specify additionally a maximum angular momentum of $1$ on hydrogen, i.e. would omit $d$ orbitals on hydrogen.

For generally contracted basis sets, an extended syntax can be used to explicitly give the number of contracted functions of each angular momentum. For example,

`BASIS,ROOS(3s2p1d/2s)`

generates a `6-31G*`

-sized basis set from the Roos ANO compilation.

Notes: *basis* must not be variable called BASIS. Furthermore, input like

`$BASIS=[AVDZ, AVTZ, AVQZ]`

is not allowed, i.e. the keyword `BASIS`

must not be preceded with $. One can loop over several basis sets using, for example, using

$aobases=[AVDZ, AVTZ, AVQZ] do ibas=1,#aobases basis=aobases(ibas) ... enddo

## Default basis sets for individual atoms

Different default basis sets for individual atoms can be specified with one-line `BASIS`

commands by adding after the default basis *atom1=name1, atom2=name2,…*, where *atomi* are the chemical symbols, and *namei* are the associated basis set names. The name conventions for the atom specific basis sets work exactly as described above for default basis sets. Examples:

`basis=vtz,h=vdz`

uses cc-pVTZ as a general default, but for hydrogen atoms cc-pVDZ is used.

`basis,vtz,h=vdz`

or

`basis,default=vtz,h=vdz`

are equivalent to the above. Note that the default basis has to be specified before any atom specific sets.

## Basis blocks

More specific basis set definitions for individual atoms can be given in `BASIS`

input blocks, which have the following general form:

BASIS SET,setname1,[options] DEFAULT=name atom1=name1 atom2=name2 primitive basis set specifications SET,setname2,[options] ... END

Instead of the `BASIS`

…`END`

block one can also use the structure `BASIS={…}`

Any number of basis sets can be be given in a basis block. The definition of each basis set is started by a `SET`

directive, on which the name of the basis and further options can be specified.

By default, the first set in a basis block is the orbital basis, and in this case the directive `SET,ORBITAL`

can be omitted.

`DEFAULT`

specifies the default basis set, exactly as on one line basis input. It can be followed by specifications for individual atoms, e.g. O=AVTZ. The default and atom specifications can also be merged to one line, separated by commas, e.g.

`DEFAULT=VTZ,O=AVTZ,H=VDZ`

Here the basis sets `AVTZ`

, `VDZ`

overwrite the default basis set VTZ for the atoms O and H, respectively. This is exactly as described in section default basis sets for individual atoms for one-line basis inputs.

The specifications `SET`

, `DEFAULT`

, `atom=name`

are all optional. If `DEFAULT`

is not given, the previous default, as specified on the last previous `BASIS`

card, is used.

Several `BASIS`

cards and/or blocks can immediately follow each other. Always the last specification for a given atom and setname is used (the default setname is `ORBITAL`

).

If a basis is not specified at all for any unique atom group, then the program assumes VDZ.

If the setname is `JKFIT`

, this basis used automatically in DF-HF or DF-KS unless specified differently using BASIS or DF_BASIS options. Note, however, that this is not the case if a different name (e.g. JK) is used. In this case one would need to give

`DF-HF,BASIS=JK`

in order to use the auxiliary basis in DF-HF.

## Auxiliary basis sets for density fitting or resolution of the identity

As described in the previous section, several basis sets can be defined in a basis block. The definition of each basis starts with a line

`SET`

,*name*,[`CONTEXT=`

*context*] where *name* is an arbitrary name that can be used later to choose the basis set using options like `df_basis=`

*name*, `ri_basis=`

*name* etc. `CONTEXT`

can optionally be specified to select the basis types `JFIT`

, `JKFIT`

, `MP2FIT`

, `CCSDFIT`

, or `OPTRI`

. This affects the choice of default basis sets. For example

basis={ default=avtz !default orbital basis set set,df,context=mp2fit,[attributes=type] default,avtz !use avtz/mp2fit set,jk,context=jkfit default,avtz !use avtz/jkfit }

is equivalent to

basis={ default=avtz !default orbital basis set set,df [attributes,type] default,avtz/mp2fit !use avtz/mp2fit set,jk default,avtz/jkfit !use vtz/jkfit }

If the setname begins with `JFIT`

, `JKFIT`

, `MP2FIT`

, `CCSDFIT`

, or `OPTRI`

, these strings define the default context.

Optionally, the basis function type `CARTESIAN`

(6d, 10f etc) or `SPHERICAL`

(5d, 7f etc) can be chosen using `ATTRIBUTE`

. By default, the same type as for the orbital basis is used. Normally, `SPHERICAL`

is used and recommended. Density fitting with CARTESIAN is limited to g-functions in the orbital basis. Furthermore, density fitting with CARTESIAN is much slower than with SPHERICAL.

Specific basis sets for individual atoms or explicit input of exponents and contraction coefficients can be given exactly in the same way as for orbital basis sets.

## Primitive set definition

Default basis sets given using one-line `BASIS`

commands or `DEFAULT`

directives in a basis block can be overwritten by explicit specifications of basis functions (type, exponents, contraction coefficients).

A group of basis functions is defined by a data card specifying a set of primitive gaussians, optionally followed by one or more cards specifying particular contractions of primitives to be included in the final basis (see section contracted set definitions for specification of contractions).

If an individual basis function type ($s$, $p$, $d$, etc.) is specified for an atom, it is required that all other types are also defined, i.e., as soon as an explicit definition of a basis function for an atom is given, all defaults are erased for this atom.

There are four different input forms for basis functions, as explained below under a) to d). In case that options (e.g. `SCALE`

, `NPRIM`

) are specified, they can be given in any order, but no value without option key must be given after an option.

In all four cases *type* defines the angular symmetry (`S, P, D, F, G, H,`

or `I`

). *type* can include several types, e.g., `SPD`

or `DF`

(this usually makes sense only with default library contractions or no contractions). The basis is loaded for all atoms with tag name *atom* in the geometry input. If *atom* is an integer, it refers to a z-matrix row.

a) Library basis sets:

*type,atom,name,scale2,nprim*;

or

*type,atom,name*,[`SCALE=`

*scale*$|$`SCALE2=`

*scale2*],[`NPRIM=`

*nprim*$|$`DELETE=`

*ndel*];

Load basis named *name* from the library

If *scale* or *scale2* is present, all exponents are scaled by *scale* or *scale**2*, respectively. If *nprim* is specified, the first *nprim* exponents only are taken from the library. If *nprim* is negative or *ndel* is given, the last $|nprim|$ ($ndel$) basis functions from the library set are deleted. Associated with the library basis may be a set of default contraction coefficients which may be accessed in subsequent contraction cards. *type* can include several types, e.g., `SPD`

or `DF`

. This usually makes sense only with default contractions, i.e., such cards should be followed only by “` C`

” without any other specifications for contractions.

b) Explicit basis input:

*type,atom,exp1,exp2,*$\ldots$*expn;expn+1,*$\ldots$;

General specification of exponents; continuation onto subsequent cards (separated by semicolon) is permitted as shown (the first card can hold up to 19 exponents, each following card 20 exponents).

The exponents (and other numerical parameters described below such as numbers of functions, and contraction coefficients) can be given as general input expressions, possibly involving variables. It is important to note, however, that these expressions are evaluated typically just once, at the same time as the complete basis set is parsed. This generally happens the first time that the basis set is required, perhaps before the first SCF calculation can be done. If the variables on which the basis depends are altered, this will not be noticed by the program, and the new basis set will not be used for subsequent stages of the computation. If, however, a new basis block is presented in the input, then the program marks as outdated any quantities such as integrals that have been calculated with the old basis set; subsequent job steps will then use the new basis.

c) Even tempered basis sets:

*type,atom*,`EVEN`

,*nprim,ratio,centre,dratio*

or

*type,atom*,`EVEN`

,`NPRIM=`

*nprim*,[`RATIO=`

*ratio*],[`CENTRE=`

*centre*],[`DRATIO=`

*dratio*]

Generates a generalized even tempered set of functions. The number of functions $n$ is specified by , their geometric mean $c$ by , the mean ratio of successive exponents $r$ by , and the variation of this ratio, $d$, by . If *centre* is not given, the previous basis of the same type is extended by diffuse functions. If in this case *ratio* is not given, $r$ is determined from the exponents of the last two function of the previous basis. If this is not possible, the default $r=2.5$ is adopted. $d=1$ (the default) specifies a true even-tempered set, but otherwise the ratio between successive exponents changes linearly; the exponents are given explicitly by $$\log e_i =
\log c
+ ((n+1)/2-i) \,\log r
+ \frac12 ((n+1)/2-i)^2 \,\log d
\quad
i=1,2,\dots,n$$

**Example 1**`SP,1,VTZ;C;SP,1,EVEN,1;`

generates the generally contracted $s$ and $p$ triple-zeta basis sets for atom 1 and extends these by one diffuse function.

**Example 2**`SPD,1,VTZ,DELETE=1;C; SP,1,EVEN,NPRIM=2,RATIO=2.5;`

generates the generally contracted $s$, $p$ triple-zeta basis sets for atom 1. Two energy optimized $d$-functions of Dunning are included. The last $s$ and $p$ functions are deleted and replaced by two even tempered functions with ratio 2.5.

d) 3-term tempered basis sets:

*type,atom*,`EVEN3`

,*nprim,$\alpha$, $\beta$, $\gamma$*

Generates a 3-parameter set of *nprim* functions with exponents given by $$e_0 = \alpha ; \qquad e_i=e_{i-1} \,\beta \left(1+\frac{\gamma i^2}{(\text{\emph{nprim}}+1)^2}\right)
, \quad i=1,\dots \text{\emph{nprim}}-1$$

e) Regular even tempered basis sets:

*type,atom*,`EVENR`

,*nprim,aa,ap,bb,bp*

Generates an even tempered set of *nprim* functions according to the “regular” prescription described in M W Schmidt and K Ruedenberg, J. Chem. Phys. **71**, 3951 (1970). If any of the parameters *aa, ap, bb, bp* is zero or omitted, the values are taken from table III of the above.

f) Even tempered basis set with confined progression:

*type,atom*,`EVENP`

,*nprim,$\alpha$,$\beta$,$\gamma$*

Generates an even tempered basis set with *nprim* functions and a maximal exponent given by *$\alpha$*. The progression (ratio) between the first and second exponent is adjusted using parameter *$\beta$* and the progression between the last but one and the last exponent is adjusted with parameter *$\gamma$*. In between the progression is linearly interpolated. The explicit values of the progression factors are given by:

*$p(\beta)=\frac{\mathrm{exponent^i}}{\mathrm{exponent^{i+1}}}=
\frac{5}{\pi}(\arctan(\beta-2.5)+\frac{\pi}{2})+\sqrt{2}$*

so that for $\beta \ll 0: p \rightarrow \sqrt{2}$ and for $\beta \gg 0: p \rightarrow 5+\sqrt{2}$ which limits the progression factors in between these two values and enables unconstrained basis set optimisations. For $\beta \approx 0$ the progression has a factor of about 2.

*type,atom*,`EVENP2`

,*nprim,$\alpha$,$\beta$,$\gamma$,$\delta$*

Generalises confined progression tempered basis sets by a third parameter (now $\gamma$) which defines the progression as above in the centre. The ratio factors are then determined by interpolating between $p(\beta)\rightarrow p(\gamma)$ and $p(\gamma)\rightarrow p(\delta)$.

## Contracted set definitions

a) `C`

,*first.last,c1,c2,*$\ldots$*cn;cn+1,*$\ldots$;

General specification of a contracted function. *first.last* defines the range of primitives to be contracted. The order corresponds to the primitives as specified on the previous input card. *c1, c2*$\ldots$ are the $last-first+1$ contraction coefficients. Continuation onto a subsequent card is permitted as shown.

b) `C`

;

Use default contractions from the library. This applies to both the number of contracted primitives and also to the number of different contraction sets.

c) $n$`C`

,*first.last*;

$n$ contracted functions taken from library. *first.last* defines the range of primitives to be contracted. If $n$ is omitted and *first.last* is specified, $n=1$. If *first.last* is omitted, the library default values are used. If both $n$ and *first.last* are omitted, default values for both are used.

d) $n$`C`

,*first.last,record.file,orb.sym*;

$n$ contracted functions taken from orbitals *orb*, $orb+1$,..,$orb+n-1$ of symmetry *sym* on molpro file *record.file*. The first nonzero coefficient in the specified orbital corresponds to the first associated basis function. *first.last* specifies the range of primitives to be contracted. If *first.last* is omitted, all coefficients from the specified orbitals are used.

`2C,1.12,2100.2,1.1`

generates two contractions, using the first 12 coefficients from orbitals 1.1 and 2.1. The orbitals are read from record 2100.2.

## Examples

This shows the use of default basis sets for H$_2$O:

- examples/h2o_vqz_fp.inp
***,H2O basis=VQZ(f/p) R=0.95 ANG,THETA=104 DEGREE geometry={O;H1,O,R;H2,O,R,H1,THETA} hf !do closed-shell SCF

This is equivalent to the explicit input form

- examples/h2o_vqz_fp_explicit.inp
***,H2O R=0.95 ANG,THETA=104 DEGREE geometry={O;H1,O,R;H2,O,R,H1,THETA} basis={spdf,o,vqz;c;sp,h,vqz,c;} hf !do closed-shell SCF

The following example shows how to use two different basis sets for the same element:

- examples/h2o_two_hydrogen_bases.inp
gprint,basis nosym geometry={Angstrom,Degree O H2 1 1.0 H3 1 1.0 2 109 } basis={ default=cc-pVDZ; sp,h2,aug-cc-pVDZ;c spd,h3,cc-pVTZ;c } hf

See basis sets for explicitly correlated methods for examples when using explicitly correlated methods.