Skip to content

Keywords and options

Required

Molecule

The molecule used by QCManyBody is a QCElemental Molecule object. The only requirement for use in QCManyBody is that the molecule has multiple fragments. It is these fragments that will be used in the many-body expansion.

Examples:

from qcelemental.models import Molecule

# Molecule with 3 hydrogen atoms, each as its own fragment
h3 = Molecule(symbols=['h', 'h', 'h'],
              geometry=[[0,0,0],[0,0,2],[0,0,4]],
              fragments=[[0], [1], [2]])


# Water tetramer
water4 = Molecule(symbols=['o', 'h', 'h', 'o', 'h', 'h', 'o', 'h', 'h', 'o', 'h', 'h'],
                  geometry=[[-2.8, -1.2, -0.2], [-1.1, -2.1, -0.0], [-3.8, -2.1,  1.1],
                            [-2.8, -1.2, -2.2], [-1.1, -2.1, -2.0], [-3.8, -2.1, -1.1],
                            [-2.8, -1.2, -4.2], [-1.1, -2.1, -4.0], [-3.8, -2.1, -3.1],
                            [-2.8, -1.2, -6.2], [-1.1, -2.1, -6.0], [-3.8, -2.1, -5.1]],
                          fragments=[[0,1,2], [3,4,5], [6,7,8], [9,10,11]])

# Water trimer, using the from_data function
# the -- is used to separate fragments
water3 = Molecule.from_data(
"""
O      -2.76373224  -1.24377706  -0.15444566
H      -1.12357791  -2.06227970  -0.05243799
H      -3.80792362  -2.08705525   1.06090407
--
O       2.46924614  -1.75437739  -0.17092884
H       3.76368260  -2.21425403   1.00846104
H       2.30598330   0.07098445  -0.03942473
--
O       0.29127930   3.00875625   0.20308515
H      -1.21253048   1.95820900   0.10303324
H       0.10002049   4.24958115  -1.10222079
units bohr
"""
)

bsse_type

The bsse_type parameter specifies the type of correction for basis set superposition error (BSSE). Multiple types can be specified, in which case the results will include separate fields for each type of correction.

Valid types are:

  • nocp - No counterpoise or other corrections applied
  • cp - Counterpoise correction
  • vmfc - Valiron-Mayer function counterpoise correction

levels and max_nbody

Dictionary of different levels of theory for different levels of expansion. The keys are integers or "supersystem", and the values are arbitrary strings that represent the model chemistry or level of theory to use for that level. This string is arbitrary and only has meaning to the user - the user is expected to map these strings to some meaningful definition of a calculation.

If a supersystem key is present, all higher order n-body effects up to max_nbody will be computed.

In the core interface, all levels must be accounted for (that is, keys must go from 1 to the maximum), and max_nbody cannot be specified. In the high-level interface, a computational model fills in for any lower unlisted n-body levels.

In the high-level interface, if both levels and max_nbody are provided, they must be consistent.

Examples:

  • {2: 'ccsd(t)/cc-pvdz', 3: 'mp2'}
  • max_nbody=3 and levels={1: 'ccsd(t)', 2: 'mp2', 'supersystem': 'scf'}

Keywords and Options

return_total_data

When set to true, the manybody calculation will return the total data (energy/gradient/hessian/property) of the system. If not, the return will only contain interaction data.

Note that the calculation of counterpoise corrected total properties implies the calculation of the energies of monomers in the monomer basis, hence specifying return_total_data = True may carry out more computations than. For some properties such as gradients and hessians, return_total_data = False is rarely useful.

supersystem_ie_only

Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) analysis, thereby omitting intermediate-body calculations. When false, each n-body level in the MBE up through max_nbody will be computed. When true (only allowed for max_nbody = nfragments), only compute enough for the overall interaction/total energy: max_nbody-body and 1-body.

When true, properties INTERACTION {driver} THROUGH {max_nbody}-BODY will always be available; TOTAL {driver} THROUGH {max_nbody}-BODY will be available depending on return_total_data; and {max_nbody}-BODY CONTRIBUTION TO {driver} won't be available (except for dimers).

This keyword produces no savings for a two-fragment molecule. But for the interaction energy of a three-fragment molecule, for example, 2-body subsystems can be skipped with supersystem_ie_only=True Do not use with vmfc in bsse_type as it cannot produce savings.