2.11. Counterpoise Corrections¶
2.11.1. Boys-Bernardi Counterpoise Correction (BB-CP)¶
In calculating weak molecular interactions the nasty subject of the basis set superposition error (BSSE) arises. It consists of the fact that if one describes a dimer, the basis functions on A help to lower the energy of fragment B and vice versa. Thus, one obtains an energy that is biased towards the dimer formation due to basis set effects. Since this is unwanted, the Boys and Bernardi procedure aims to correct for this deficiency by estimating what the energies of the monomers would be if they had been calculated with the dimer basis set. This will stabilize the monomers relative to the dimers. The effect can be a quite sizable fraction of the interaction energy and should therefore be taken into account. The original Boys and Bernardi formula for the interaction energy between fragments A and B is:
Here \(E_{X}^{Y} \left( Z \right)\) is the energy of fragment X calculated at the optimized geometry of fragment Y with the basis set of fragment Z. Thus, you need to do a total the following series of calculations:
optimize the geometry of the dimer and the monomers with some basis set Z. This gives you \(E_{AB}^{AB} \left({ AB} \right)\), \(E_{A}^{A} \left( A \right)\) and \(E_{B}^{B} \left( B \right)\)
delete fragment A (B) from the optimized structure of the dimer and re-run the single point calculation with basis set Z. This gives you \(E_{B}^{AB} \left( B \right)\) and \(E_{A}^{AB} \left( A \right)\).
Now, the final calculation consists of calculating the energies of A and B at the dimer geometry but with the dimer basis set. This gives you \(E_{A}^{AB} \left({ AB} \right)\) and \(E_{B}^{AB} \left({ AB} \right)\).
In order to achieve the last step efficiently, a special notation was put into ORCA which allows you to delete the electrons and nuclear charges that come with certain atoms but retain the assigned basis set. This trick consists of putting a “:” after the symbol of the atom. Here is an example of how to run such a calculation of the water dimer at the MP2 level (with frozen core):
#
# Calculations for Boys-Bernardi CP correction
#
# --------------------------------------------
# First the monomer. In principle, you only need
# to run it once, but we keep it for clarity.
# --------------------------------------------
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer"
* xyz 0 1
O 7.405639 6.725069 7.710504
H 7.029206 6.234628 8.442160
H 8.247948 6.296600 7.554030
*
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer"
* xyz 0 1
O 7.405639 6.725069 7.710504
H 7.029206 6.234628 8.442160
H 8.247948 6.296600 7.554030
*
# --------------------------------------------
# now the dimer
# --------------------------------------------
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "dimer"
* xyz 0 1
O 7.439917 6.726792 7.762120
O 5.752050 6.489306 5.407671
H 7.025510 6.226170 8.467436
H 8.274883 6.280259 7.609894
H 6.313507 6.644667 6.176902
H 5.522285 7.367132 5.103852
*
# --------------------------------------------
# Now the calculations of the monomer at the
# dimer geometry
# --------------------------------------------
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer_1"
* xyz 0 1
O 7.439917 6.726792 7.762120
H 7.025510 6.226170 8.467436
H 8.274883 6.280259 7.609894
*
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer_1"
* xyz 0 1
O 5.752050 6.489306 5.407671
H 6.313507 6.644667 6.176902
H 5.522285 7.367132 5.103852
*
# --------------------------------------------
# Now the calculation of the monomer at the
# dimer geometry but with the dimer basis set
# --------------------------------------------
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer_2"
* xyz 0 1
O 7.439917 6.726792 7.762120
O : 5.752050 6.489306 5.407671
H 7.025510 6.226170 8.467436
H 8.274883 6.280259 7.609894
H : 6.313507 6.644667 6.176902
H : 5.522285 7.367132 5.103852
*
$new_job
! RHF MP2 cc-pVTZ VeryTightSCF PModel
%id "monomer_2"
* xyz 0 1
O : 7.439917 6.726792 7.762120
O 5.752050 6.489306 5.407671
H : 7.025510 6.226170 8.467436
H : 8.274883 6.280259 7.609894
H 6.313507 6.644667 6.176902
H 5.522285 7.367132 5.103852
*
From these calculations, you obtain the respective energies to compute the BB-CP correction:
Component |
E [a.u.] |
E [kcal/mol] |
---|---|---|
\(E^{AB}_{AB}(AB)\) |
-152.646980 |
|
\(E^{A}_{A}(A)\) |
-76.318651 |
|
\(E^{B}_{B}(B)\) |
-76.318651 |
|
\(E^{AB}_{A}(AB)\) |
-76.320799 |
|
\(E^{AB}_{A}(A)\) |
-76.318635 |
|
\(E^{AB}_{B}(AB)\) |
-76.319100 |
|
\(E^{AB}_{B}(B)\) |
-76.318605 |
|
\(\Delta E_{dim.}\) |
-0.009677 |
-6.07 |
\(\Delta E_{BB-CP}\) |
0.002659 |
1.67 |
\(\Delta E_{dim., corr.}\) |
-0.007018 |
-4.40 |
In this example, we calculated a BSSE correction of 1.67 kcal/mol.
It is also possible to set entire fragments as ghost atoms using the
GhostFrags
keyword as shown below. See
section Input of Coordinates for different ways of defining
fragments.
! MP2 cc-pVTZ VeryTightSCF PModel
* xyz 0 1
O 7.439917 6.726792 7.762120
O 5.752050 6.489306 5.407671
H 7.025510 6.226170 8.467436
H 8.274883 6.280259 7.609894
H 6.313507 6.644667 6.176902
H 5.522285 7.367132 5.103852
*
%geom
GhostFrags {1} end # space-separated list and X:Y ranges accepted
fragments
1 {0 2 3} end
2 {1 4 5} end
end
end
Starting from ORCA 6.0, we support geometry optimizations with
the counterpoise correction, using analytic gradients. This
opens up the way of obtaining accurate non-covalent complex
geometries (instead of just interaction energies) using modest basis sets.
To use this functionality, one should NOT simply add !Opt
to the
above input files, but should instead use the dedicated compound
script BSSEOptimization.cmp
available in the ORCA Compound Script
repository.
Detailed usage are described in the comments of the
compound script.
2.11.2. Geometrical Counterpoise Correction (gCP)¶
The central idea of the gCP correction [124] is to add a semi-empirical correction \(\Delta E_{\text{gCP} }\) to the energies of molecular systems that removes artificial overbinding effects from BSSE. gCP uses atomic corrections and therefore also has the ability to correct for intramolecular BSSE. The parametrization is constructed such that it approximates the Boys and Bernadi counterpoise (CP) correction \(\Delta E_{CP}\) in the intermolecular case. That is,
where e.g. for a complexation reaction \(A+B\to C\), our correction is given by
In practice, \(E_{\text{gCP} }\) can be simply added to the HF/DFT energy
which is done automatically in ORCA (the FINAL SINGLE POINT ENERGY
includes
the gCP correction).
The central equation of the gCP correction over all atoms \(N\) reads:
where the energy \(e_a^{\text{miss} }\) is a measure of the
incompleteness of the chosen target basis set (which is typically small)
and \(f_{\text{dec} }(R_{ab})\) is a decay function that depends on the
interatomic distance \(R_{ab}\). The scaling factor \(\sigma\) is one of 4 parameters needed for every
method/basis set
combination. More details on this can be found in the
original gCP paper [124].
Analytical gradients with gCP are available for geometry optimization. Due to its semi-empirical nature, the correction is calculated within seconds, even for very large systems.
2.11.2.1. Basic Usage¶
The gCP correction can be invoked by the !GCP(level)
keyword, where
level
is a combination of the method (Hartree-Fock, HF
or density functional theory, DFT
) and a
basis set definition. See Table 2.50 for the available basis sets and the corresponding
keywords. For example, gCP can be invoked in a B3LYP calculation with the def2-SV(P) basis set
using the input:
! B3LYP def2-SV(P) GCP(DFT/SV(P))
The gCP input can also be defined in the %method
block of the input:
! B3LYP def2-SV(P)
%method
DoGCP true
GCPMETHOD dft/sv(p)
end
Parametrized basis set |
Definition |
HF |
DFT |
---|---|---|---|
MINIS |
MINIS |
yes |
yes |
SV |
SV |
yes |
yes |
6-31G(d) |
631GD |
yes |
yes |
6-31G(d) + LANL2DZ (Sc-Zn) |
LANL |
no |
yes |
def2-SV(P) |
SV(P) |
no |
yes |
def2-SVP |
SVP |
yes |
yes |
def2-TZVP |
TZ |
yes |
yes |
At all print levels, warnings from the gCP program are printed. Using the default
print level, the only additional output is the final gCP correction before
FINAL SINGLE POINT ENERGY
. Using !LargePrint
or %output Print[P_gCP] 2 end
states the gCP level
, the 4 parameters mentioned above, and the computed correction.
A larger print level can be specified to get more details (more information on this below).
Several warnings and notices may be issued. Elements of the 5th and higher periods are treated as their 4th period analogs — e.g. Sn is treated with the same parameters as Ge. If this is the case, a note is printed. Another note is printed if there is a mismatch between the basis used for the SCF calculation and that of the requested gCP calculation. For example, the following input with tetramethyltin
! HF def2-SVP GCP(HF/MINIS)
*xyzfile 0 1 tetramethyltin.xyz
should use the parameters of Ge in place of Sn and there should be a mismatch between the basis set in ORCA (def2-SVP) and gCP (MINIS). Sure enough, the output is as follows:
** NOTE ** -> element sn will be treated as ge
NOTIFICATION: Different basis set in ORCA and otool_gcp:
ORCA: 142 gCP: 32
If you are NOT using ECPs, check your basis set inputs!
------------------ -----------------
gCP correction 0.073031339
------------------ -----------------
A mismatch between the basis sets used is allowed since a minor mismatch may only result in a small error. One should still be careful with such results; use your own judgment! This also allows gCP in calculations that use an unparametrized basis set. However, in this case, the number of basis functions and exponents should be very similar!
It should be noted that some elements are not parametrized, depending on the
gCP level
used. If only a few atoms in a large molecule are treated inaccurately or not at all,
the error is expected to be small. To check all parameters used and the individual atomic
contributions, specify the print level %output Print[P_gCP] 3 end
. For example, the above
tetramethyltin input with this print level has the following output:
------------------------------------------------------------------------------
g C P - geometrical counterpoise correction
------------------------------------------------------------------------------
Method: hf/minis
** NOTE ** -> element sn will be treated as ge
Parameters: sigma eta alpha beta
0.1290 1.1526 1.1549 1.1763
Nbf: 32
NAtoms: 17
gCP element parameters:
elem emiss nbas elem emiss nbas elem emiss nbas
h 0.04240 1 he 0.02832 1 li 0.25266 2
be 0.19720 2 b 0.22424 5 c 0.27995 5
n 0.35791 5 o 0.47901 5 f 0.63852 5
ne 0.83235 5 na 1.23292 6 mg 1.34339 6
al 1.44828 9 si 1.61336 9 p 1.76814 9
s 1.99201 9 cl 2.23311 9 ar 2.49323 9
k 3.02964 10 ca 3.38998 10 sc 0.00000 0
ti 0.00000 0 v 0.00000 0 cr 0.00000 0
mn 0.00000 0 fe 0.00000 0 co 0.00000 0
ni 0.00000 0 cu 0.00000 0 zn 0.00000 0
ga 0.00000 0 ge 0.00000 0 as 0.00000 0
se 0.00000 0 br 0.00000 0 kr 0.00000 0
# ON sites Nvirt Emiss BSSE [kcal/mol]
1 6 15 2.0 0.2799 10.0090
2 32 16 -16.0 0.0000 0.0000
3 6 15 2.0 0.2799 10.0084
4 6 15 2.0 0.2799 10.0095
5 6 15 2.0 0.2799 10.0083
6 1 15 0.5 0.0424 0.4827
7 1 15 0.5 0.0424 0.4828
8 1 15 0.5 0.0424 0.4828
9 1 15 0.5 0.0424 0.4827
10 1 15 0.5 0.0424 0.4827
11 1 15 0.5 0.0424 0.4827
12 1 15 0.5 0.0424 0.4828
13 1 15 0.5 0.0424 0.4827
14 1 15 0.5 0.0424 0.4828
15 1 15 0.5 0.0424 0.4827
16 1 15 0.5 0.0424 0.4827
17 1 15 0.5 0.0424 0.4827
Egcp: 0.0730313386 a.u.
NOTIFICATION: Different basis set in ORCA and otool_gcp:
ORCA: 142 gCP: 32
If you are NOT using ECPs, check your basis set inputs!
------------------ -----------------
gCP correction 0.073031339
------------------ -----------------
From this, it can be seen that the Sn atom (atom 2 in the list of atomic contributions)
gives no contribution because its Emiss
is zero (unparametrized for the given gCP level
).
This is confirmed by looking at the gCP element parameters
section, which lists the emiss
of
Sn as zero for !GCP(HF/MINIS)
. Rerunning this example with !GCP(HF/SVP)
now gives a
contribution for Sn, as seen by the following output. Note that this calculation also has a
much smaller basis set mismatch, and so should be the more accurate gCP correction of the two.
------------------------------------------------------------------------------
g C P - geometrical counterpoise correction
------------------------------------------------------------------------------
Method: hf/svp
** NOTE ** -> element sn will be treated as ge
Parameters: sigma eta alpha beta
0.2054 1.3157 0.8136 1.2572
Nbf: 148
NAtoms: 17
gCP element parameters:
elem emiss nbas elem emiss nbas elem emiss nbas
h 0.00811 5 he 0.00805 5 li 0.11358 9
be 0.02837 9 b 0.04937 14 c 0.05538 14
n 0.07278 14 o 0.10031 14 f 0.13327 14
ne 0.17360 14 na 0.18114 15 mg 0.12556 18
al 0.16719 18 si 0.14984 18 p 0.14540 18
s 0.16431 18 cl 0.18299 18 ar 0.20567 18
k 0.20096 24 ca 0.29966 24 sc 0.32599 31
ti 0.30549 31 v 0.29172 31 cr 0.29380 31
mn 0.29179 31 fe 0.29673 31 co 0.30460 31
ni 0.24204 31 cu 0.35419 31 zn 0.35072 31
ga 0.35002 32 ge 0.34578 32 as 0.34953 32
se 0.36731 32 br 0.38201 32 kr 0.39971 32
# ON sites Nvirt Emiss BSSE [kcal/mol]
1 6 16 11.0 0.0554 2.5093
2 32 16 16.0 0.3458 6.8274
3 6 16 11.0 0.0554 2.5092
4 6 16 11.0 0.0554 2.5094
5 6 16 11.0 0.0554 2.5092
6 1 16 4.5 0.0081 0.1703
7 1 16 4.5 0.0081 0.1703
8 1 16 4.5 0.0081 0.1703
9 1 16 4.5 0.0081 0.1703
10 1 16 4.5 0.0081 0.1703
11 1 16 4.5 0.0081 0.1703
12 1 16 4.5 0.0081 0.1703
13 1 16 4.5 0.0081 0.1703
14 1 16 4.5 0.0081 0.1703
15 1 16 4.5 0.0081 0.1703
16 1 16 4.5 0.0081 0.1703
17 1 16 4.5 0.0081 0.1703
Egcp: 0.0301322002 a.u.
NOTIFICATION: Different basis set in ORCA and otool_gcp:
ORCA: 142 gCP: 148
If you are NOT using ECPs, check your basis set inputs!
------------------ -----------------
gCP correction 0.030132200
------------------ -----------------
General advice
Small basis sets show not only a large BSSE, but general shortcomings. These effects are not always clearly distinguishable.
If computationally affordable, large basis sets (triple-\(\zeta\) and higher) are always preferable.
gCP only makes sense for somewhat large molecules
gCP should always be applied together with a dispersion correction. gCP in combination with D3 or D4 is well tested, but gCP with NL also works well (see chapter Dispersion Corrections).
It has been demonstrated that the popular combination of B3LYP with 6-31G(d) can be strongly improved using DFT-D3 and gCP [125]. For convenience, the keyword
!B3LYP-gCP-D3/6-31G*
has been defined. This is equivalent to!B3LYP 6-31G* D3BJ GCP(DFT/631GD)
.
Technical Notes
!GCP(HF/MINIS)
automatically sets the refitted D3 parameter, as proposed in the original gCP paper.The gCP method is implemented via an external tool called otool_gcp, which is based on the original Fortran program used in the publication. Thus, the
otool_gcp
binary can also be called directly via the command line (otool_gcp -h
gives an overview of the options).It is also possible to read an external parameter file (
$HOME/.gcppar
) using the!GCP(FILE)
keyword. For further information, please look at the manual for the gcp program as provided by the Grimme group (gCP manual).During the calculation, some temporary output files are written by ORCA:
BASENAME.gcp.in.tmp
andBASENAME.gcp.out.tmp
will contain the input forotool_gcp
and its output, respectively.
2.11.2.2. Keywords¶
Keyword |
Description |
---|---|
|
Activates the gCP correction for a specified level of theory defined as |
Keyword |
Option |
Description |
---|---|---|
|
|
Activate/deactivate the gCP correction |
|
|
Define the gCP level string, e.g. |
|
Parameterization for HF with MINIS basis set |
|
|
Parameterization for HF with SV basis set |
|
|
Parameterization for HF with 6-31G(d) basis set |
|
|
Parameterization for HF with def2-SVP basis set |
|
|
Parameterization for HF with def2-TZVP basis set |
|
|
Parameterization for DFT with MINIS basis set |
|
|
Parameterization for DFT with SV basis set |
|
|
Parameterization for DFT with 6-31G(d) basis set |
|
|
Parameterization for DFT with mixed 6-31G(d) + LANL2DZ (Sc-Zn) basis set |
|
|
Parameterization for DFT with def2-SV(P) basis set |
|
|
Parameterization for DFT with def2-SVP basis set |
|
|
Parameterization for DFT with def2-TZVP basis set |
|
|
Read parameters from external parameterfile |
|
|
|
Use special DFT-D3 refit for HF/MINIS (default=true) |