Ways to assign basis sets

Similar to the other part of the input file in BAGH, the basis set assignment is case and space-insensitive (as long as different keywords are separated) unless mentioned otherwise. There are 3 ways basis sets are assigned to different atoms in BAGH (arranged according to the priorities):

  1. Atom-specific basis set

  2. Custom basis set

  3. Universal basis set

The highest priority is given to the atom-specific basis sets, and the lowest goes to the universal basis set assignment. If no basis set is assigned to an atom at all, by default, STO-3G is assigned to it.

A sample input file is shown below:

Example 1:

! CCSD pos3   pos4   pos5

%cc
incore 5
end

%basis
pos2
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816   pos1
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816
N     0.0000  0.0000  0.0000

All 3 positions are shown in the above example. pos1, pos2 and pos3 refer to the positions of atom-specific basis, custom basis and universal basis, respectively. A basis set can be assigned to an atom in either of these 3 ways. In the above example, one of the H atoms is being assigned a basis set from the atom-specific basis (pos1). The rest of the two H atoms and the N atom can either be assigned by the custom basis (pos2) or the universal basis (pos3) only if any atom is left unassigned in the custom basis. Let’s say custom basis only contains basis functions for N atom, then rest of the two H atoms will be assigned from the universal basis in pos3. The positions pos4 and pos5 refer to the position of JK and RI basis positions, respectively (if any).

Note

  • One can assign a JK auxiliary basis even if there is no universal main basis.

  • One can assign a RI auxiliary basis even if there is no universal main basis or JK auxiliary basis or both.

  • JK and RI auxiliary basis sets are only assigned in the RHF (spin-summed MO) interface of the code.

Atom-specific basis set

Atom-specific basis sets are written within the coordinate block *xyz in the 5th column as in pos1 in Example 1. The basis set is assigned only to that particular atom (eg. first H atom in Example 1). The rest of the atoms remain unassigned. A sample input file is shown where all of the atoms are assigned using atom-specific basis set.

Example 2:

! CCSD spinor

%cc
incore 5
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816   ccpvdz
H     0.8121  0.4689 -0.3816   ccpvdz
H    -0.8121  0.4689 -0.3816   ccpvdz
N     0.0000  0.0000  0.0000   augccpvdz

Here all 3 H atoms are assigned cc-pVDZ basis set, while N atom is assigned to aug-cc-pVDZ basis set. One can also assign different basis sets for different atoms of the same element as in the following example.

Example 3:

! CCSD spinor

%cc
incore 5
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816   ccpvdz
H     0.8121  0.4689 -0.3816   631g
H    -0.8121  0.4689 -0.3816   ccpvtz
N     0.0000  0.0000  0.0000   augccpvdz

Custom basis set

If an atom remains unassigned to any basis set in an atom-specific way, the flow of code searches for that atom in the custom basis set. The custom basis set is provided within %basis block of the input file and it ends with a single end at the end. There should not be any other text in the middle as they may interfere with the proper running of the code, especially another end in the middle. Only one end keyword will be used for the entire %basis block. The custom basis has to be in the NWCHEM format.

Caution

Space-sensitivity in the custom basis: Basis function type eg. S, P, D, F… has to start from the 6th column of the input file.

A sample input file is provided containing only custom basis assignment to each atom.

Example 4:

! CCSD spinor

%cc
incore 5
end

%basis
H    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H    P
      7.270000E-01           1.0000000
N    S
      9.046000E+03           7.000000E-04          -1.530000E-04           0.000000E+00
      1.357000E+03           5.389000E-03          -1.208000E-03           0.000000E+00
      3.093000E+02           2.740600E-02          -5.992000E-03           0.000000E+00
      8.773000E+01           1.032070E-01          -2.454400E-02           0.000000E+00
      2.856000E+01           2.787230E-01          -6.745900E-02           0.000000E+00
      1.021000E+01           4.485400E-01          -1.580780E-01           0.000000E+00
      3.838000E+00           2.782380E-01          -1.218310E-01           0.000000E+00
      7.466000E-01           1.544000E-02           5.490030E-01           0.000000E+00
      2.248000E-01          -2.864000E-03           5.788150E-01           1.000000E+00
N    P
      1.355000E+01           3.991900E-02           0.000000E+00
      2.917000E+00           2.171690E-01           0.000000E+00
      7.973000E-01           5.103190E-01           0.000000E+00
      2.185000E-01           4.622140E-01           1.000000E+00
N    D
      8.170000E-01           1.0000000
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816
N     0.0000  0.0000  0.0000

If one wants to assign different basis sets to different atoms of the same element, eg. aug-cc-pVDZ basis set need to be assigned to one of the H atom and for all other atoms cc-pVDZ need to be assigned, one can do that using custom basis but in that case one has to number the atoms (Here H atoms).

Example 5:

! CCSD spinor

%cc
incore 5
end

%basis
H    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H    P
      7.270000E-01           1.0000000
H1   S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H1   S
      0.0297400              1.0000000
H1   P
      7.270000E-01           1.0000000
H1   P
      0.1410000              1.0000000
N    S
      9.046000E+03           7.000000E-04          -1.530000E-04           0.000000E+00
      1.357000E+03           5.389000E-03          -1.208000E-03           0.000000E+00
      3.093000E+02           2.740600E-02          -5.992000E-03           0.000000E+00
      8.773000E+01           1.032070E-01          -2.454400E-02           0.000000E+00
      2.856000E+01           2.787230E-01          -6.745900E-02           0.000000E+00
      1.021000E+01           4.485400E-01          -1.580780E-01           0.000000E+00
      3.838000E+00           2.782380E-01          -1.218310E-01           0.000000E+00
      7.466000E-01           1.544000E-02           5.490030E-01           0.000000E+00
      2.248000E-01          -2.864000E-03           5.788150E-01           1.000000E+00
N    P
      1.355000E+01           3.991900E-02           0.000000E+00
      2.917000E+00           2.171690E-01           0.000000E+00
      7.973000E-01           5.103190E-01           0.000000E+00
      2.185000E-01           4.622140E-01           1.000000E+00
N    D
      8.170000E-01           1.0000000
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816
N     0.0000  0.0000  0.0000

In the above example, H1 (first hydrogen atom) is assigned to the custom basis set of aug-cc-pVDZ, while all other H atoms and N are assigned to cc-pVDZ basis set. In the %basis block, only the element (eg. H here) written in the left side (the place of atom) assigns it to all unassigned atoms of the same element. The numbered atom (eg. H1 in this case) takes the priority to be assigned differently.

Note

Numbered atoms are prioritized over unnumbered atoms in the %basis block.

Caution

  • Numbered atoms’ basis sets have to be written after the basis set for the unnumbered atom (if any) of the same elemnt in the %basis block.

  • If numbered atoms are present in the custom basis set, a warning pops up saying “Custom basis provided for specified elements will be overwritten.”. That can be ignored in such cases.

Universal basis set

If no basis set is assigned to an atom, it gets assigned using the universal basis set as in pos3 in Example 1. Universal basis set is a single basis set that gets assigned to all atoms yet unassigned. Let’s see an example:

Example 6:

! CCSD spinor ccpvdz

%cc
incore 5
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816
N     0.0000  0.0000  0.0000

Here, in Example 6, all atoms are assigned to cc-pVDZ basis set.

Now, let’s discuss a complicated basis assignment (see following):

Example 7:

! CCSD spinor def2qzvp

%cc
incore 5
end

%basis
H    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H    P
      7.270000E-01           1.0000000
H1   S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H1   S
      0.0297400              1.0000000
H1   P
      7.270000E-01           1.0000000
H1   P
      0.1410000              1.0000000
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816   631g
N     0.0000  0.0000  0.0000

Here, H1 is assigned to the custom basis of aug-cc-pVDZ as a numbered atom, H2 is assigned to the custom basis of cc-pVDZ as an unnumbered atom, H3 is assigned to 6-31G basis set as atom-specific assignment and N atom is assigned to the def2-QZVP basis set as an universal basis set of this input file.

If an atom still remains unassigned (as follows), it by default, gets assigned to STO-3G basis set.

Example 8:

! CCSD spinor

%cc
incore 5
end

%basis
H    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H    P
      7.270000E-01           1.0000000
H1   S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
H1   S
      0.0297400              1.0000000
H1   P
      7.270000E-01           1.0000000
H1   P
      0.1410000              1.0000000
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816   631g
N     0.0000  0.0000  0.0000

Here, in Example 8, N atom is not assigned to any basis in any way. So, it takes STO-3G basis set.

Basis set assignment to ghost atoms

Ghost atoms are defined as X atom in BAGH. Basis sets to ghost atoms are assigned in the same way as other atoms. In the Example 8, if first two H atoms are replaced by ghost atoms, the input structure looks like the following.

Example 9:

! CCSD spinor

%cc
incore 5
end

%basis
X    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
X    P
      7.270000E-01           1.0000000
X1   S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
X1   S
      0.0297400              1.0000000
X1   P
      7.270000E-01           1.0000000
X1   P
      0.1410000              1.0000000
end

*xyz 0 1
X     0.0000 -0.9377 -0.3816
X     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816   631g
N     0.0000  0.0000  0.0000

Basis set assignments in BAGH can be checked from the ouput file whether they are assigned correctly.

Available basis sets

Main basis set

There are several basis sets that are currently available in BAGH as a keyword. Basis sets keywords are usually slightly different than their respective names but they are simple and comprehensible eg. aug-cc-pVDZ basis set is called as augccpvdz etc. Following is the list of exact keywords of all currently available basis sets in BAGH.

There are additional dyall basis sets, for which a separate discussion is done in the section Additional information on Dyall basis sets.

JK auxiliary basis set

Following is the list of exact keywords of all currently available JK auxiliary basis sets in BAGH. JK basis can only be assigned using universal basis assignment (as in pos4 in Example 1).

RI auxiliary basis set

Following is the list of exact keywords of all currently available RI auxiliary basis sets in BAGH. RI basis can only be assigned using universal basis assignment (as in pos5 in Example 1).

Uncontraction of the basis sets

The atom-specific and universal basis sets can be uncontracted by adding a prefix unc- to the name of the basis set. eg. for an uncontracted version of the aug-cc-pVDZ basis set, one has to write unc-augccpvdz in the place of the basis set. See the following example:

Example 10:

! CCSD spinor unc-augccpvdz

%cc
incore 5
end

*xyz 0 1
H     0.0000 -0.9377 -0.3816
H     0.8121  0.4689 -0.3816
H    -0.8121  0.4689 -0.3816 unc-631g
N     0.0000  0.0000  0.0000

In the custom basis, one can uncontract beforehand if they need it.

Additional information on Dyall basis sets