Basis Set Superposition Corrections

Code author: Daniel G. A. Smith

psi4.driver.driver_nbody.nbody(func, method_string[, molecule, bsse_type, max_nbody, ptype, return_total_data, supersystem_ie_only])[source]

Computes the nbody interaction energy, gradient, or Hessian depending on input. This is a generalized universal function for computing interaction and total quantities.

Returns:

return type of func – The data.

Returns:

(float, Wavefunction) – data and wavefunction with energy/gradient/hessian set appropriately when return_wfn specified.

Parameters:
  • molecule (molecule) –

    h2o || etc.

    The target molecule, if not the last molecule defined.

  • return_wfn (boolean) –

    'on' || \(\Rightarrow\) 'off' \(\Leftarrow\)

    Indicate to additionally return the Wavefunction calculation result as the second element of a tuple.

  • bsse_type (str or list) –

    'cp' || ['nocp', 'vmfc'] || \(\Rightarrow\) None \(\Leftarrow\) || etc.

    Type of BSSE correction to compute: CP for counterpoise correction, NoCP for plain supramolecular interaction energy, or VMFC for Valiron-Mayer Function Counterpoise correction. If a list is provided, the first string in the list determines which interaction or total energies/gradients/Hessians are returned by this function. By default, many-body treatments are inactive.

  • max_nbody (int) –

    3 || etc.

    Maximum n-body to compute, cannot exceed the number of fragments in the molecule.

  • return_total_data (boolean) –

    'on' || \(\Rightarrow\) 'off' \(\Leftarrow\)

    If True returns the total data (energy/gradient/Hessian) of the system, otherwise returns interaction data. Default is 'off' for energies, 'on' for gradients and Hessians. Note that the calculation of total counterpoise corrected energies implies the calculation of the energies of monomers in the monomer basis, hence specifying return_total_data = True may carry out more computations than return_total_data = False. For gradients and Hessians, return_total_data = False is rarely useful.

  • supersystem_ie_only (boolean) –

    'on' || \(\Rightarrow\) 'off' \(\Leftarrow\)

    Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) analysis, thereby omitting intermediate-body calculations. When False (default), compute each n-body level in the MBE up through max_nbody. 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.

  • levels (dict) –

    {1: 'ccsd(t)', 2: 'mp2', 'supersystem': 'scf'} || {1: 2, 2: 'ccsd(t)', 3: 'mp2'} || etc

    Dictionary of different levels of theory for different levels of expansion Note that method_string is not used in this case. supersystem computes all higher order n-body effects up to the number of fragments.

  • embedding_charges (dict) –

    {1: [-0.834, 0.417, 0.417], ..}

    Dictionary of atom-centered point charges. keys: 1-based index of fragment, values: list of charges for each fragment. Add atom-centered point charges for fragments whose basis sets are not included in the computation. Starting in v1.10, set QCMANYBODY_EMBEDDING_CHARGES =1 to access this functionality.

Potential QCVariables set are:

ptype_size = (1,)/(nat, 3)/(3 * nat, 3 * nat) e/g/h := energy or gradient or Hessian rtd := return_total_data

item

size

present / zeroed

contents / interpretation

ret_ptype

ptype_size

always

interaction data requested: IE or total (depending on return_total_data) e/g/h (depending on driver)

with cp/nocp/vmfc treatment (depending on 1st of bsse_type)

ret_energy

1

always

interaction energy: IE or total (depending on return_total_data) w/ cp/nocp/vmfc treat. (dep. on 1st of bsse_type)

ret_gradient

(nat, 3)

when driver is g/h

interaction gradient: IE or total (depending on return_total_data) w/ cp/nocp/vmfc treat. (dep. on 1st of bsse_type

ret_hessian

(nat * 3, nat * 3)

when driver is h

interaction Hessian: IE or total (depending on return_total_data) w/ cp/nocp/vmfc treat. (dep. on 1st of bsse_type)

nbody

>=1

always

energy n-body QCVariables to be set

  CP-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

when cp in bsse_type

MBE sum of subsystems of 1-body. summed are total energies with cp treatment

  CP-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when cp in bsse_type & max_nbody>=2

MBE sum of subsystems of 2-body or fewer (cumulative); summed are total energies with cp treatment

  CP-CORRECTED TOTAL ENERGY THROUGH {nb}-BODY

  1

when cp in bsse_type

MBE sum of subsystems of {max_nbody}-body or fewer (cumulative); summed are total energies w/ cp treatment

  CP-CORRECTED TOTAL ENERGY

  1

when cp in bsse_type & rtd=T

best available total energy with cp treatment: CP-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  CP-CORRECTED INTERACTION ENERGY THROUGH 2-BODY

  1

when cp in bsse_type & max_nbody>=2

2-body total data less 1-body total data for cumulative IE; inputs are total energies with cp treatment

  CP-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY

  1

when cp in bsse_type

{max_nbody}-body total data less 1-body total data for cumulative IE; inputs are total energies with cp treatment

  CP-CORRECTED INTERACTION ENERGY

  1

when cp in bsse_type

best available interaction energy with cp treatment: CP-CORRECTED INTERACTION ENERGY THROUGH {max_nbody}-BODY

  CP-CORRECTED 2-BODY CONTRIBUTION TO ENERGY

  1

when cp in bsse_type & max_nbody>=2

2-body total data less (2-1)-body total data for partial IE; inputs are total energies w/ cp treatment

  CP-CORRECTED {nb}-BODY CONTRIBUTION TO ENERGY

  1

when cp in bsse_type

{max_nbody}-body total data less ({max_nbody}-1)-body data for partial IE; inputs are total energies w/ cp treat.

  NOCP-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

when nocp in bsse_type

MBE sum of subsystems of 1-body. summed are total energies without cp treatment

  NOCP-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when nocp in bsse_type & max_nbody>=2

MBE sum of subsystems of 2-body or fewer (cumulative); summed are total energies without cp treatment

  NOCP-CORRECTED TOTAL ENERGY THROUGH {nb}-BODY

  1

when nocp in bsse_type

MBE sum of subsystems of {max_nbody}-body or fewer (cumulative); summed are total energies w/o cp treatment

  NOCP-CORRECTED TOTAL ENERGY

  1

when nocp in bsse_type

best available total energy without cp treatment: NOCP-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  NOCP-CORRECTED INTERACTION ENERGY THROUGH 2-BODY

  1

when nocp in bsse_type & max_nbody>=2

2-body total data less 1-body total data for cumulative IE; inputs are total energies w/o cp treatment

  NOCP-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY

  1

when nocp in bsse_type

{max_nbody}-body total data less 1-body total data for cumulative IE; inputs are total energies w/o cp treatment

  NOCP-CORRECTED INTERACTION ENERGY

  1

when nocp in bsse_type

best available interaction energy without cp treatment: NOCP-CORRECTED INTERACTION ENERGY THROUGH {max_nbody}-BODY

  NOCP-CORRECTED 2-BODY CONTRIBUTION TO ENERGY

  1

when nocp in bsse_type & max_nbody>=2

2-body total data less (2-1)-body total data for partial IE; inputs are total energies w/o cp treatment

  NOCP-CORRECTED {nb}-BODY CONTRIBUTION TO ENERGY

  1

when nocp in bsse_type

{max_nbody}-body total data less ({max_nbody}-1)-body data for partial IE; inputs are total energies w/o cp treat.

  VMFC-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

when vmfc in bsse_type

MBE sum of subsystems of 1-body. summed are total energies with vmfc treatment

  VMFC-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when vmfc in bsse_type & max_nbody>=2

MBE sum of subsystems of 2-body or fewer (cumulative); summed are total energies with vmfc treatment

  VMFC-CORRECTED TOTAL ENERGY THROUGH {nb}-BODY

  1

when vmfc in bsse_type

MBE sum of subsystems of {max_nbody}-body or fewer (cumulative); summed are total energies w/ vmfc treatment

  VMFC-CORRECTED TOTAL ENERGY

  1

when vmfc in bsse_type

best available total energy with vmfc treatment: VMFC-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  VMFC-CORRECTED INTERACTION ENERGY THROUGH 2-BODY

  1

when vmfc in bsse_type & max_nbody>=2

2-body total data less 1-body total data for cumulative IE; inputs are total energies w/ vmfc treatment

  VMFC-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY

  1

when vmfc in bsse_type

{max_nbody}-body total data less 1-body total data for cumulative IE; inputs are total energies w/ vmfc treatment

  VMFC-CORRECTED INTERACTION ENERGY

  1

when vmfc in bsse_type

best available interaction energy with vmfc treatment: VMFC-CORRECTED INTERACTION ENERGY THROUGH {max_nbody}-BODY

  VMFC-CORRECTED 2-BODY CONTRIBUTION TO ENERGY

  1

when vmfc in bsse_type & max_nbody>=2

2-body total data less (2-1)-body total data for partial IE; inputs are total energies w/ vmfc treatment

  VMFC-CORRECTED {nb}-BODY CONTRIBUTION TO ENERGY

  1

when vmfc in bsse_type

{max_nbody}-body total data less ({max_nbody}-1)-body data for partial IE; inputs are total energies w/ vmfc treat.

  CP-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

always; zeroed if cp not in bsse_type or rtd=F

cumulative through 1-body total energies with cp treatment

  CP-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when max_nbody>=2; zeroed if cp not in bsse_type

cumulative through 2-body total energies with cp treatment

  CP-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  1

always; zeroed if cp not in bsse_type

cumulative through {max_nbody}-body total energies with cp treatment

  CP-CORRECTED TOTAL GRADIENT THROUGH 1-BODY

  (nat, 3)

when driver is g/h; zeroed if cp not in bsse_type or rtd=F

cumulative through 1-body total gradients with cp treatment

  CP-CORRECTED TOTAL GRADIENT THROUGH 2-BODY

  (nat, 3)

when driver is g/h & max_nbody>=2; zeroed if cp not in bsse_type

cumulative through 2-body total gradients with cp treatment

  CP-CORRECTED TOTAL GRADIENT THROUGH {max_nbody}-BODY

  (nat, 3)

when driver is g/h; zeroed if cp not in bsse_type

cumulative through {max_nbody}-body total gradients with cp treatment

  CP-CORRECTED TOTAL HESSIAN THROUGH 1-BODY

  (nat*3, nat*3)

when driver is h; zeroed if cp not in bsse_type or rtd=F

cumulative through 1-body total Hessians with cp treatment

  CP-CORRECTED TOTAL HESSIAN THROUGH 2-BODY

  (nat*3, nat*3)

when driver is h & max_nbody>=2; zeroed if cp not in bsse_type

cumulative through 2-body total Hessians with cp treatment

  CP-CORRECTED TOTAL HESSIAN THROUGH {max_nbody}-BODY

  (nat*3, nat*3)

when driver is h; zeroed if cp not in bsse_type

cumulative through {max_nbody}-body total Hessians with cp treatment

  NOCP-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

always; zeroed if nocp not in bsse_type

cumulative through 1-body total energies with nocp treatment

  NOCP-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when max_nbody>=2; zeroed if nocp not in bsse_type

cumulative through 2-body total energies with nocp treatment

  NOCP-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  1

always; zeroed if nocp not in bsse_type

cumulative through {max_nbody}-body total energies with nocp treatment

  NOCP-CORRECTED TOTAL GRADIENT THROUGH 1-BODY

  (nat, 3)

when driver is g/h; zeroed if nocp not in bsse_type

cumulative through 1-body total gradients with nocp treatment

  NOCP-CORRECTED TOTAL GRADIENT THROUGH 2-BODY

  (nat, 3)

when driver is g/h & max_nbody>=2; zeroed if nocp not in bsse_type

cumulative through 2-body total gradients with nocp treatment

  NOCP-CORRECTED TOTAL GRADIENT THROUGH {max_nbody}-BODY

  (nat, 3)

when driver is g/h; zeroed if nocp not in bsse_type

cumulative through {max_nbody}-body total gradients with nocp treatment

  NOCP-CORRECTED TOTAL HESSIAN THROUGH 1-BODY

  (nat*3, nat*3)

when driver is h; zeroed if nocp not in bsse_type

cumulative through 1-body total Hessians with nocp treatment

  NOCP-CORRECTED TOTAL HESSIAN THROUGH 2-BODY

  (nat*3, nat*3)

when driver is h & max_nbody>=2; zeroed if nocp not in bsse_type

cumulative through 2-body total Hessians with nocp treatment

  NOCP-CORRECTED TOTAL HESSIAN THROUGH {max_nbody}-BODY

  (nat*3, nat*3)

when driver is h; zeroed if nocp not in bsse_type

cumulative through {max_nbody}-body total Hessians with nocp treatment

  VMFC-CORRECTED TOTAL ENERGY THROUGH 1-BODY

  1

always; zeroed if vmfc not in bsse_type

cumulative through 1-body total energies with vmfc treatment

  VMFC-CORRECTED TOTAL ENERGY THROUGH 2-BODY

  1

when max_nbody>=2; zeroed if vmfc not in bsse_type

cumulative through 2-body total energies with vmfc treatment

  VMFC-CORRECTED TOTAL ENERGY THROUGH {max_nbody}-BODY

  1

always; zeroed if vmfc not in bsse_type

cumulative through {max_nbody}-body total energies with vmfc treatment

  VMFC-CORRECTED TOTAL GRADIENT THROUGH 1-BODY

  (nat, 3)

when driver is g/h; zeroed if vmfc not in bsse_type

cumulative through 1-body total gradients with vmfc treatment

  VMFC-CORRECTED TOTAL GRADIENT THROUGH 2-BODY

  (nat, 3)

when driver is g/h & max_nbody>=2; zeroed if vmfc not in bsse_type

cumulative through 2-body total gradients with vmfc treatment

  VMFC-CORRECTED TOTAL GRADIENT THROUGH {max_nbody}-BODY

  (nat, 3)

when driver is g/h; zeroed if vmfc not in bsse_type

cumulative through {max_nbody}-body total gradients with vmfc treatment

  VMFC-CORRECTED TOTAL HESSIAN THROUGH 1-BODY

  (nat*3, nat*3)

when driver is h; zeroed if vmfc not in bsse_type

cumulative through 1-body total Hessians with vmfc treatment

  VMFC-CORRECTED TOTAL HESSIAN THROUGH 2-BODY

  (nat*3, nat*3)

when driver is h & max_nbody>=2; zeroed if vmfc not in bsse_type

cumulative through 2-body total Hessians with vmfc treatment

  VMFC-CORRECTED TOTAL HESSIAN THROUGH {max_nbody}-BODY

  (nat*3, nat*3)

when driver is h; zeroed if vmfc not in bsse_type

cumulative through {max_nbody}-body total Hessians with vmfc treatment

intermediates_energy

ntasks

always

all individual energies

  N-BODY (1, 2)@(1, 2) TOTAL ENERGY

  1

always

total energy for only modelchem, 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §A_(1, 2)@(1, 2) TOTAL ENERGY

  1

always

total energy for 1st modelchem (in multilevel), 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §B_(3)@(2, 3) TOTAL ENERGY

  1

always

total energy for 2nd modelchem (in multilevel), 3rd fragment in basis of 2nd and 3rd fragments

  …

intermediates_gradient

ntasks

when driver is g/h

all individual gradients

  N-BODY (1, 2)@(1, 2) TOTAL GRADIENT

  (nat, 3)

when driver is g/h

total gradient for only modelchem, 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §A_(1, 2)@(1, 2) TOTAL GRADIENT

  (nat, 3)

when driver is g/h

total gradient for 1st modelchem (in multilevel), 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §B_(3)@(2, 3) TOTAL GRADIENT

  (nat, 3)

when driver is g/h

total gradient for 2nd modelchem (in multilevel), 3rd fragment in basis of 2nd and 3rd fragments

  …

intermediates_hessian

ntasks

when driver is h

all individual Hessians

  N-BODY (1, 2)@(1, 2) TOTAL HESSIAN

  (nat*3, nat*3)

when driver is h

total Hessian for only modelchem, 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §A_(1, 2)@(1, 2) TOTAL HESSIAN

  (nat*3, nat*3)

when driver is h

total Hessian for 1st modelchem (in multilevel), 1st & 2nd fragments in basis of 1st & 2nd fragments

  N-BODY §B_(3)@(2, 3) TOTAL HESSIAN

  (nat*3, nat*3)

when driver is h

total Hessian for 2nd modelchem (in multilevel), 3rd fragment in basis of 2nd and 3rd fragments

  …

The nbody function computes counterpoise-corrected (CP), non-CP (noCP), and Valiron-Mayer Function Counterpoise (VMFC) interaction energies for complexes composed of arbitrary numbers of monomers.

Caution

August 2025, v1.10 many-body computations are no longer using internal driver code but have been offloaded to QCManyBody software.

Examples :

set {
  basis def2-svp
}

# Counterpoise corrected CCSD(T) energies for the Helium dimer
molecule mol {
  He
  --
  He 1 3
}
# Calculate interaction energies only (skips monomers in monomer basis):
energy('CCSD(T)', bsse_type='cp')
# Calculate interaction and total energies, return interaction energies:
energy('CCSD(T)', bsse_type=['cp','nocp'])
# Calculate and return counterpoise-corrected gradient
# Useful for e.g. CP-corrected geometry optimization
gradient('CCSD(T)', bsse_type='cp', return_total_data=True)


# noCP, VMFC, and CP energy for a helium cluster, limited at 3 bodies
molecule mol {
  He 0 0 0
  --
  He 0 0 4
  --
  He 0 4 0
  --
  He 4 0 0
}

# Returns the nocp energy as its first in the list
energy('CCSD(T)', bsse_type=['nocp', 'cp', 'vmfc'], max_nbody=3)
# Calculate cp geometry optimization skipping the MBE intermediate levels
optimize("ccsd(t)/cc-pv[dt]z", bsse_type="cp", supersystem_ie_only=True)

API

class psi4.driver.driver_nbody.BsseEnum(value)[source]

Available basis-set superposition error (BSSE) treatments.

abbr()[source]
cp = 'cp'
formal()[source]
mbe = 'nocp'
nocp = 'nocp'
none = 'nocp'
ssfc = 'cp'
vmfc = 'vmfc'
pydantic model psi4.driver.driver_nbody.ManyBodyComputer[source]

Show JSON schema
{
   "title": "ManyBodyComputer",
   "type": "object",
   "properties": {
      "input_data": {
         "$ref": "#/$defs/ManyBodyInput",
         "description": "Input schema containing the relevant settings for performing the many body expansion. This is entirely redundant with the piecemeal assembly of this Computer class and is only stored to be available for error handling and exact reconstruction of ManyBodyResult."
      },
      "bsse_type": {
         "default": [
            "cp"
         ],
         "description": "Requested BSSE treatments. First in list determines which interaction or total energy/gradient/Hessian returned.",
         "items": {
            "$ref": "#/$defs/BsseEnum"
         },
         "title": "Bsse Type",
         "type": "array"
      },
      "molecule": {
         "$ref": "#/$defs/Molecule",
         "description": "Target molecule for many body expansion (MBE) or interaction energy (IE) analysis. Fragmentation should already be defined in `fragments` and related fields."
      },
      "driver": {
         "$ref": "#/$defs/DriverEnum",
         "description": "The computation driver; i.e., energy, gradient, hessian. In case of ambiguity (e.g., MBE gradient through finite difference energies or MBE energy through composite method), this field refers to the *target* derivative, not any *means* specification."
      },
      "embedding_charges": {
         "anyOf": [
            {
               "additionalProperties": {
                  "items": {
                     "type": "number"
                  },
                  "type": "array"
               },
               "type": "object"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Atom-centered point charges to be used to speed up nbody-level convergence. Charges are placed on molecule fragments whose basis sets are not included in the computation. (An implication is that charges aren't invoked for bsse_type=cp.) Keys: 1-based index of fragment. Values: list of atom charges for that fragment.",
         "shape": [
            "nfr",
            "<varies: nat in ifr>"
         ],
         "title": "Embedding Charges"
      },
      "return_total_data": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "When True, returns the total data (energy/gradient/Hessian) of the system, otherwise returns interaction data. Default is False for energies, True for gradients and Hessians. Note that the calculation of counterpoise corrected total energies implies the calculation of the energies of monomers in the monomer basis, hence specifying ``return_total_data = True`` may carry out more computations than ``return_total_data = False``. For gradients and Hessians, ``return_total_data = False`` is rarely useful.",
         "title": "Return Total Data"
      },
      "levels": {
         "anyOf": [
            {
               "additionalProperties": {
                  "type": "string"
               },
               "type": "object"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Dictionary of different levels of theory for different levels of expansion. Note that the primary method_string is not used when this keyword is given. ``supersystem`` computes all higher order n-body effects up to the number of fragments; this higher-order correction uses the nocp basis, regardless of bsse_type. A method fills in for any lower unlisted nbody levels. Note that if both this and max_nbody are provided, they must be consistent. Examples: SUPERSYSTEM definition suspect* {1: 'ccsd(t)', 2: 'mp2', 'supersystem': 'scf'} * {2: 'ccsd(t)/cc-pvdz', 3: 'mp2'} * Now invalid: {1: 2, 2: 'ccsd(t)/cc-pvdz', 3: 'mp2'} Examples above are processed in the ManyBodyComputer, and once processed, only the values should be used. The keys turn into nbodies_per_mc_level, as notated below. * {1: 'ccsd(t)', 2: 'mp2', 'supersystem': 'scf'} -> nbodies_per_mc_level=[[1], [2], ['supersystem']] * {2: 'ccsd(t)/cc-pvdz', 3: 'mp2'} -> nbodies_per_mc_level=[[1, 2], [3]] ",
         "title": "Levels"
      },
      "max_nbody": {
         "anyOf": [
            {
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Maximum number of bodies to include in the many-body treatment. Possible: max_nbody <= nfragments. Default: max_nbody = nfragments.",
         "title": "Max Nbody"
      },
      "supersystem_ie_only": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "type": "null"
            }
         ],
         "default": false,
         "description": "Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) analysis, thereby omitting intermediate-body calculations. When False (default), compute each n-body level in the MBE up through ``max_nbody``. 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.",
         "title": "Supersystem Ie Only"
      },
      "task_list": {
         "additionalProperties": {
            "anyOf": [
               {
                  "$ref": "#/$defs/AtomicComputer"
               },
               {
                  "$ref": "#/$defs/CompositeComputer"
               },
               {
                  "$ref": "#/$defs/FiniteDifferenceComputer"
               }
            ]
         },
         "default": {},
         "title": "Task List",
         "type": "object"
      },
      "qcmb_core": {
         "anyOf": [
            {},
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Low-level interface",
         "title": "Qcmb Core"
      }
   },
   "$defs": {
      "AtomicComputer": {
         "additionalProperties": true,
         "description": "Computer for analytic single-geometry computations.",
         "properties": {
            "molecule": {
               "description": "The molecule to use in the computation.",
               "title": "Molecule"
            },
            "basis": {
               "description": "The quantum chemistry basis set to evaluate (e.g., 6-31g, cc-pVDZ, ...).",
               "title": "Basis",
               "type": "string"
            },
            "method": {
               "description": "The quantum chemistry method to evaluate (e.g., B3LYP, MP2, ...).",
               "title": "Method",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum",
               "description": "The resulting type of computation: energy, gradient, hessian, properties.Note for finite difference that this should be the target driver, not the means driver."
            },
            "keywords": {
               "additionalProperties": true,
               "description": "The keywords to use in the computation.",
               "title": "Keywords",
               "type": "object"
            },
            "protocols": {
               "anyOf": [
                  {
                     "additionalProperties": true,
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": {
                  "stdout": true
               },
               "description": "Output modifications.",
               "title": "Protocols"
            },
            "compute_tag": {
               "default": "*",
               "description": "The tags to pass along to compute managers.",
               "title": "Compute Tag",
               "type": "string"
            },
            "compute_priority": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "string"
                  }
               ],
               "default": 1,
               "description": "The priority of a Task; higher priority will be pulled first. {high:2, normal:1, low:0}",
               "title": "Compute Priority"
            },
            "owner_group": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "group in the chown sense.",
               "title": "Owner Group"
            },
            "computed": {
               "default": false,
               "description": "Whether quantum chemistry has been run on this task.",
               "title": "Computed",
               "type": "boolean"
            },
            "result": {
               "description": ":py:class:`~qcelemental.models.v2.AtomicResult` return.",
               "title": "Result"
            },
            "result_id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The optional ID for the computation.",
               "title": "Result Id"
            }
         },
         "required": [
            "molecule",
            "basis",
            "method",
            "driver"
         ],
         "title": "AtomicComputer",
         "type": "object"
      },
      "AtomicProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of computational result data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_protocols",
               "default": "qcschema_atomic_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "wavefunction": {
               "$ref": "#/$defs/WavefunctionProtocolEnum",
               "default": "none"
            },
            "stdout": {
               "default": true,
               "description": "Primary output file to keep from the computation",
               "title": "Stdout",
               "type": "boolean"
            },
            "error_correction": {
               "$ref": "#/$defs/ErrorCorrectionProtocol",
               "description": "Policies for error correction"
            },
            "native_files": {
               "$ref": "#/$defs/NativeFilesProtocolEnum",
               "default": "none",
               "description": "Policies for keeping processed files from the computation"
            }
         },
         "title": "AtomicProtocols",
         "type": "object"
      },
      "AtomicSpecification": {
         "additionalProperties": false,
         "description": "Specification for a single point QC calculation",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_specification",
               "default": "qcschema_atomic_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "keywords": {
               "default": {},
               "description": "The program specific keywords to be used.",
               "title": "Keywords"
            },
            "program": {
               "default": "",
               "description": "The program for which the Specification is intended.",
               "title": "Program",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "model": {
               "$ref": "#/$defs/Model"
            },
            "protocols": {
               "$ref": "#/$defs/AtomicProtocols",
               "default": {
                  "schema_name": "qcschema_atomic_protocols",
                  "wavefunction": "none",
                  "stdout": true,
                  "error_correction": {
                     "default_policy": true,
                     "policies": null
                  },
                  "native_files": "none"
               }
            },
            "extras": {
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras"
            }
         },
         "required": [
            "driver",
            "model"
         ],
         "title": "AtomicSpecification",
         "type": "object"
      },
      "BasisCenter": {
         "additionalProperties": false,
         "description": "Data for a single atom/center in a basis set.",
         "properties": {
            "electron_shells": {
               "description": "Electronic shells for this center.",
               "items": {
                  "$ref": "#/$defs/ElectronShell"
               },
               "minItems": 1,
               "title": "Electron Shells",
               "type": "array",
               "uniqueItems": true
            },
            "ecp_electrons": {
               "default": 0,
               "description": "Number of electrons replaced by ECP, MCP, or other field potentials.",
               "title": "Ecp Electrons",
               "type": "integer"
            },
            "ecp_potentials": {
               "anyOf": [
                  {
                     "items": {
                        "$ref": "#/$defs/ECPPotential"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "ECPs, MCPs, or other field potentials for this center.",
               "title": "Ecp Potentials",
               "uniqueItems": true
            }
         },
         "required": [
            "electron_shells"
         ],
         "title": "BasisCenter",
         "type": "object"
      },
      "BasisSet": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "A quantum chemistry basis description.",
         "properties": {
            "schema_name": {
               "const": "qcschema_basis_set",
               "default": "qcschema_basis_set",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of :attr:`~qcelemental.models.BasisSet.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "name": {
               "description": "The standard basis name if available (e.g., 'cc-pVDZ').",
               "title": "Name",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Brief description of the basis set.",
               "title": "Description"
            },
            "center_data": {
               "additionalProperties": {
                  "$ref": "#/$defs/BasisCenter"
               },
               "description": "Shared basis data for all atoms/centers in the parent molecule",
               "title": "Center Data",
               "type": "object"
            },
            "atom_map": {
               "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.",
               "items": {
                  "type": "string"
               },
               "title": "Atom Map",
               "type": "array"
            },
            "nbf": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of basis functions. Use for convenience or as checksum",
               "title": "Nbf"
            }
         },
         "required": [
            "name",
            "center_data",
            "atom_map"
         ],
         "title": "BasisSet",
         "type": "object"
      },
      "BsseEnum": {
         "description": "Available basis-set superposition error (BSSE) treatments.",
         "enum": [
            "nocp",
            "cp",
            "vmfc",
            "cp",
            "nocp",
            "nocp"
         ],
         "title": "BsseEnum",
         "type": "string"
      },
      "ClusterResultsProtocolEnum": {
         "description": "Which component results to preserve in a many body result; usually AtomicResults.",
         "enum": [
            "all",
            "none"
         ],
         "title": "ClusterResultsProtocolEnum",
         "type": "string"
      },
      "CompositeComputer": {
         "additionalProperties": true,
         "properties": {
            "molecule": {
               "title": "Molecule"
            },
            "basis": {
               "default": "(auto)",
               "title": "Basis",
               "type": "string"
            },
            "method": {
               "default": "(auto)",
               "title": "Method",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "title": "Keywords",
               "type": "object"
            },
            "metadata": {
               "title": "Metadata"
            },
            "metameta": {
               "additionalProperties": true,
               "default": {},
               "title": "Metameta",
               "type": "object"
            },
            "verbose": {
               "default": 1,
               "title": "Verbose",
               "type": "integer"
            },
            "cbsrec": {
               "default": [],
               "items": {
                  "additionalProperties": true,
                  "type": "object"
               },
               "title": "Cbsrec",
               "type": "array"
            },
            "trove": {
               "default": [],
               "items": {
                  "additionalProperties": true,
                  "type": "object"
               },
               "title": "Trove",
               "type": "array"
            },
            "compute_list": {
               "default": [],
               "items": {
                  "additionalProperties": true,
                  "type": "object"
               },
               "title": "Compute List",
               "type": "array"
            },
            "task_list": {
               "default": [],
               "items": {
                  "$ref": "#/$defs/AtomicComputer"
               },
               "title": "Task List",
               "type": "array"
            },
            "results_list": {
               "default": [],
               "items": {},
               "title": "Results List",
               "type": "array"
            }
         },
         "required": [
            "molecule",
            "driver",
            "metadata"
         ],
         "title": "CompositeComputer",
         "type": "object"
      },
      "DriverEnum": {
         "description": "Allowed computation driver values.",
         "enum": [
            "energy",
            "gradient",
            "hessian",
            "properties"
         ],
         "title": "DriverEnum",
         "type": "string"
      },
      "ECPPotential": {
         "additionalProperties": false,
         "description": "Information for a single ECP potential.",
         "properties": {
            "ecp_type": {
               "$ref": "#/$defs/ECPType"
            },
            "angular_momentum": {
               "description": "Angular momentum for the potential as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "r_exponents": {
               "description": "Exponents of the 'r' term.",
               "items": {
                  "type": "integer"
               },
               "minItems": 1,
               "title": "R Exponents",
               "type": "array"
            },
            "gaussian_exponents": {
               "description": "Exponents of the 'gaussian' term.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Gaussian Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "ecp_type",
            "angular_momentum",
            "r_exponents",
            "gaussian_exponents",
            "coefficients"
         ],
         "title": "ECPPotential",
         "type": "object"
      },
      "ECPType": {
         "description": "The type of the ECP potential.",
         "enum": [
            "scalar",
            "spinorbit"
         ],
         "title": "ECPType",
         "type": "string"
      },
      "ElectronShell": {
         "additionalProperties": false,
         "description": "Information for a single electronic shell.",
         "properties": {
            "angular_momentum": {
               "description": "Angular momentum for the shell as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "harmonic_type": {
               "$ref": "#/$defs/HarmonicType"
            },
            "exponents": {
               "description": "Exponents for the contracted shell.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "angular_momentum",
            "harmonic_type",
            "exponents",
            "coefficients"
         ],
         "title": "ElectronShell",
         "type": "object"
      },
      "ErrorCorrectionProtocol": {
         "additionalProperties": false,
         "description": "Configuration for how QCEngine handles error correction\n\nWARNING: These protocols are currently experimental and only supported by NWChem tasks",
         "properties": {
            "default_policy": {
               "default": true,
               "description": "Whether to allow error corrections to be used if not directly specified in `policies`",
               "title": "Default Policy",
               "type": "boolean"
            },
            "policies": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "type": "boolean"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Settings that define whether specific error corrections are allowed. Keys are the name of a known error and values are whether it is allowed to be used.",
               "title": "Policies"
            }
         },
         "title": "ErrorCorrectionProtocol",
         "type": "object"
      },
      "FDComputerEnum": {
         "enum": [
            "atomic",
            "composite"
         ],
         "title": "FDComputerEnum",
         "type": "string"
      },
      "FiniteDifferenceComputer": {
         "additionalProperties": true,
         "properties": {
            "molecule": {
               "title": "Molecule"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "metameta": {
               "additionalProperties": true,
               "default": {},
               "title": "Metameta",
               "type": "object"
            },
            "task_list": {
               "additionalProperties": {
                  "anyOf": [
                     {
                        "$ref": "#/$defs/AtomicComputer"
                     },
                     {
                        "$ref": "#/$defs/CompositeComputer"
                     }
                  ]
               },
               "default": {},
               "title": "Task List",
               "type": "object"
            },
            "findifrec": {
               "additionalProperties": true,
               "default": {},
               "title": "Findifrec",
               "type": "object"
            },
            "computer": {
               "$ref": "#/$defs/FDComputerEnum",
               "default": "atomic"
            },
            "method": {
               "title": "Method",
               "type": "string"
            }
         },
         "required": [
            "molecule",
            "driver",
            "method"
         ],
         "title": "FiniteDifferenceComputer",
         "type": "object"
      },
      "HarmonicType": {
         "description": "The angular momentum representation of a shell.",
         "enum": [
            "spherical",
            "cartesian"
         ],
         "title": "HarmonicType",
         "type": "string"
      },
      "Identifiers": {
         "additionalProperties": false,
         "description": "Canonical chemical identifiers",
         "properties": {
            "molecule_hash": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecule Hash"
            },
            "molecular_formula": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecular Formula"
            },
            "smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Smiles"
            },
            "inchi": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchi"
            },
            "inchikey": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchikey"
            },
            "canonical_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_mapped_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Smiles"
            },
            "canonical_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Smiles"
            },
            "pubchem_cid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Compound ID",
               "title": "Pubchem Cid"
            },
            "pubchem_sid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Substance ID",
               "title": "Pubchem Sid"
            },
            "pubchem_conformerid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Conformer ID",
               "title": "Pubchem Conformerid"
            }
         },
         "title": "Identifiers",
         "type": "object"
      },
      "ManyBodyInput": {
         "additionalProperties": false,
         "description": "Combining the what and how (ManyBodySpecification) with the who (Molecule).",
         "properties": {
            "schema_name": {
               "const": "qcschema_many_body_input",
               "default": "qcschema_many_body_input",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of ``schema_name`` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "default": {
                  "creator": "QCManyBody",
                  "version": "0.7.1",
                  "routine": "qcmanybody.models.v2.many_body"
               }
            },
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "specification": {
               "$ref": "#/$defs/ManyBodySpecification",
               "description": "???"
            },
            "molecule": {
               "$ref": "#/$defs/Molecule",
               "description": "Target molecule for many-body expansion (MBE) or interaction energy (IE) analysis."
            }
         },
         "required": [
            "specification",
            "molecule"
         ],
         "title": "ManyBodyInput",
         "type": "object"
      },
      "ManyBodyKeywords": {
         "additionalProperties": false,
         "description": "The many-body-specific keywords for user control.",
         "properties": {
            "schema_name": {
               "const": "qcschema_many_body_keywords",
               "default": "qcschema_many_body_keywords",
               "title": "Schema Name",
               "type": "string"
            },
            "bsse_type": {
               "default": [
                  "cp"
               ],
               "description": "Requested BSSE treatments. First in list determines which interaction or total energy/gradient/Hessian returned.",
               "items": {
                  "$ref": "#/$defs/BsseEnum"
               },
               "title": "Bsse Type",
               "type": "array"
            },
            "embedding_charges": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "items": {
                           "type": "number"
                        },
                        "type": "array"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Atom-centered point charges to be used on molecule fragments whose basis sets are not included in the computation. Keys: 1-based index of fragment. Values: list of atom charges for that fragment. At present, QCManyBody will only accept non-None values of this keyword if environment variable QCMANYBODY_EMBEDDING_CHARGES is set.",
               "shape": [
                  "nfr",
                  "<varies: nat in ifr>"
               ],
               "title": "Embedding Charges"
            },
            "return_total_data": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "When True, returns the total data (energy/gradient/Hessian) of the system, otherwise returns interaction data. Default is False for energies, True for gradients and Hessians. Note that the calculation of counterpoise corrected total energies implies the calculation of the energies of monomers in the monomer basis, hence specifying ``return_total_data = True`` may carry out more computations than ``return_total_data = False``. For gradients and Hessians, ``return_total_data = False`` is rarely useful.",
               "title": "Return Total Data"
            },
            "levels": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "type": "string"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Dictionary of different levels of theory for different levels of expansion. Note that the primary method_string is not used when this keyword is given. ``supersystem`` computes all higher order n-body effects up to the number of fragments; this higher-order correction uses the nocp basis, regardless of bsse_type. A method fills in for any lower unlisted nbody levels. Note that if both this and max_nbody are provided, they must be consistent. Examples: SUPERSYSTEM definition suspect* {1: 'ccsd(t)', 2: 'mp2', 'supersystem': 'scf'} * {2: 'ccsd(t)/cc-pvdz', 3: 'mp2'} * Now invalid: {1: 2, 2: 'ccsd(t)/cc-pvdz', 3: 'mp2'} ",
               "title": "Levels"
            },
            "max_nbody": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Maximum number of bodies to include in the many-body treatment. Possible: max_nbody <= nfragments. Default: max_nbody = nfragments.",
               "title": "Max Nbody"
            },
            "supersystem_ie_only": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": false,
               "description": "Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) analysis, thereby omitting intermediate-body calculations. When False (default), compute each n-body level in the MBE up through ``max_nbody``. 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.",
               "title": "Supersystem Ie Only"
            }
         },
         "title": "ManyBodyKeywords",
         "type": "object"
      },
      "ManyBodyProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a ManyBody output data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_many_body_protocols",
               "default": "qcschema_many_body_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "cluster_results": {
               "$ref": "#/$defs/ClusterResultsProtocolEnum",
               "default": "none"
            }
         },
         "title": "ManyBodyProtocols",
         "type": "object"
      },
      "ManyBodySpecification": {
         "additionalProperties": false,
         "description": "Combining the what (ManyBodyKeywords) with the how (AtomicSpecification).",
         "properties": {
            "schema_name": {
               "const": "qcschema_many_body_specification",
               "default": "qcschema_many_body_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "keywords": {
               "$ref": "#/$defs/ManyBodyKeywords"
            },
            "program": {
               "default": "",
               "description": "Many Body Expansion CMS code / QCEngine procedure with which to run the MB decomposition.",
               "title": "Program",
               "type": "string"
            },
            "protocols": {
               "$ref": "#/$defs/ManyBodyProtocols",
               "default": {
                  "schema_name": "qcschema_many_body_protocols",
                  "cluster_results": "none"
               },
               "description": "\n    Protocols regarding the manipulation of a ManyBody output data.\n    "
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum",
               "description": "The computation driver; i.e., energy, gradient, hessian."
            },
            "specification": {
               "additionalProperties": {
                  "$ref": "#/$defs/AtomicSpecification"
               },
               "description": "??? TODO expand to cbs, fd",
               "title": "Specification",
               "type": "object"
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "keywords",
            "driver",
            "specification"
         ],
         "title": "ManyBodySpecification",
         "type": "object"
      },
      "Model": {
         "additionalProperties": true,
         "description": "The computational molecular sciences model to run.",
         "properties": {
            "method": {
               "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.",
               "title": "Method",
               "type": "string"
            },
            "basis": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/BasisSet"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The quantum chemistry basis set to evaluate (e.g., 6-31g, cc-pVDZ, ...). Can be ``None`` for methods without basis sets. For molecular mechanics, name of the atom-typer.",
               "title": "Basis"
            }
         },
         "required": [
            "method"
         ],
         "title": "Model",
         "type": "object"
      },
      "Molecule": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "The physical Cartesian representation of the molecular system.\n\nA QCSchema representation of a Molecule. This model contains\ndata for symbols, geometry, connectivity, charges, fragmentation, etc while also supporting a wide array of I/O and manipulation capabilities.\n\nMolecule objects geometry, masses, and charges are truncated to 8, 6, and 4 decimal places respectively to assist with duplicate detection.\n\nNotes\n-----\nAll arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n\n  * nat: number of atomic = calcinfo_natom\n  * nfr: number of fragments\n  * <varies>: irregular dimension not systematically reshapable",
         "properties": {
            "schema_name": {
               "const": "qcschema_molecule",
               "default": "qcschema_molecule",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 3,
               "default": 3,
               "description": "The version number of :attr:`~qcelemental.models.Molecule.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "validated": {
               "default": false,
               "description": "A boolean indicator (for speed purposes) that the input Molecule data has been previously checked for schema (data layout and type) and physics (e.g., non-overlapping atoms, feasible multiplicity) compliance. This should be False in most cases. A ``True`` setting should only ever be set by the constructor for this class itself or other trusted sources such as a Fractal Server or previously serialized Molecules.",
               "title": "Validated",
               "type": "boolean"
            },
            "symbols": {
               "description": "The ordered array of atomic elemental symbols in title case. This field's index sets atomic order for all other per-atom fields like :attr:`~qcelemental.models.Molecule.real` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. Ghost/virtual atoms must have an entry here in :attr:`~qcelemental.models.Molecule.symbols`; ghostedness is indicated through the :attr:`~qcelemental.models.Molecule.real` field.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat"
               ],
               "title": "Symbols",
               "type": "array"
            },
            "geometry": {
               "description": "The ordered array for Cartesian XYZ atomic coordinates [a0]. Atom ordering is fixed; that is, a consumer who shuffles atoms must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-atom results (e.g., gradient). Index of the first dimension matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`.\nSerialized storage is always flat, (3*nat,), but QCSchema implementations will want to reshape it. QCElemental can also accept array-likes which can be mapped to (nat,3) such as a 1-D list of length 3*nat, or the serialized version of the array in (3*nat,) shape; all forms will be reshaped to (nat,3) for this attribute.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat",
                  3
               ],
               "title": "Geometry",
               "type": "array",
               "units": "a0"
            },
            "name": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see :attr:`~qcelemental.models.Molecule.identifiers` for well-defined labels.",
               "title": "Name"
            },
            "identifiers": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Identifiers"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:`~qcelemental.models.results.Identifiers` model for more details."
            },
            "comment": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.",
               "title": "Comment"
            },
            "molecular_charge": {
               "default": 0.0,
               "description": "The net electrostatic charge of the molecule.",
               "title": "Molecular Charge",
               "type": "number"
            },
            "molecular_multiplicity": {
               "default": 1,
               "description": "The total multiplicity of the molecule.",
               "title": "Molecular Multiplicity",
               "type": "number"
            },
            "masses": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. If this is not provided, the mass of each atom is inferred from its most common isotope. If this is provided, it must be the same length as :attr:`~qcelemental.models.Molecule.symbols` but can accept ``None`` entries for standard masses to infer from the same index in the :attr:`~qcelemental.models.Molecule.symbols` field.",
               "shape": [
                  "nat"
               ],
               "title": "Masses",
               "units": "u"
            },
            "real": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array indicating if each atom is real (``True``) or ghost/virtual (``False``). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. If this is not provided, all atoms are assumed to be real (``True``). If this is provided, the reality or ghostedness of every atom must be specified.",
               "shape": [
                  "nat"
               ],
               "title": "Real"
            },
            "atom_labels": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional per-atom labels as an array of strings. Typical use is in model conversions, such as Elemental <-> Molpro and not typically something which should be user assigned. See the :attr:`~qcelemental.models.Molecule.comment` field for general human-consumable text to affix to the molecule.",
               "shape": [
                  "nat"
               ],
               "title": "Atom Labels"
            },
            "atomic_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic numbers of shape (nat,). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. Ghostedness should be indicated through :attr:`~qcelemental.models.Molecule.real` field, not zeros here.",
               "shape": [
                  "nat"
               ],
               "title": "Atomic Numbers"
            },
            "mass_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic *mass* numbers of shape (nat). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the most common isotopes of the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.",
               "shape": [
                  "nat"
               ],
               "title": "Mass Numbers"
            },
            "connectivity": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 3,
                        "minItems": 3,
                        "prefixItems": [
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "maximum": 5,
                              "minimum": 0,
                              "type": "number"
                           }
                        ],
                        "type": "array"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of bonds within the molecule. Each entry is a tuple of ``(atom_index_A, atom_index_B, bond_order)`` where the ``atom_index`` matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Bonds may be freely reordered and inverted.",
               "title": "Connectivity"
            },
            "fragments": {
               "anyOf": [
                  {
                     "items": {
                        "items": {
                           "type": "number"
                        },
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "List of indices grouping atoms (0-indexed) into molecular fragments within the molecule. Each entry in the outer list is a new fragment; index matches the ordering in :attr:`~qcelemental.models.Molecule.fragment_charges` and :attr:`~qcelemental.models.Molecule.fragment_multiplicities`. Inner lists are 0-indexed atoms which compose the fragment; every atom must be in exactly one inner list. Noncontiguous fragments are allowed, though no QM program is known to support them. Fragment ordering is fixed; that is, a consumer who shuffles fragments must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-fragment results (e.g., n-body energy arrays).",
               "shape": [
                  "nfr",
                  "<varies>"
               ],
               "title": "Fragments"
            },
            "fragment_charges": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total charge of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Charges"
            },
            "fragment_multiplicities": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The multiplicity of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Multiplicities"
            },
            "fix_com": {
               "default": false,
               "description": "Whether translation of geometry is allowed (fix F) or disallowed (fix T).When False, QCElemental will pre-process the Molecule object to translate the center of mass to (0,0,0) in Euclidean coordinate space, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_com=True` signals that the origin in `geometry` is a deliberate part of the Molecule spec, whereas `fix_com=False` (default) allows that the origin is happenstance and may be adjusted. guidance: A consumer who translates the geometry must not reattach the input (pre-translation) molecule schema instance to any output (post-translation) origin-sensitive results (e.g., an ordinary energy when EFP present).",
               "title": "Fix Com",
               "type": "boolean"
            },
            "fix_orientation": {
               "default": false,
               "description": "Whether rotation of geometry is allowed (fix F) or disallowed (fix T). When False, QCElemental will pre-process the Molecule object to orient via the intertial tensor, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_orientation=True` signals that the frame orientation in `geometry` is a deliberate part of the Molecule spec, whereas `fix_orientation=False` (default) allows that the frame is happenstance and may be adjusted. guidance: A consumer who rotates the geometry must not reattach the input (pre-rotation) molecule schema instance to any output (post-rotation) frame-sensitive results (e.g., molecular vibrations).",
               "title": "Fix Orientation",
               "type": "boolean"
            },
            "fix_symmetry": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Maximal point group symmetry which :attr:`~qcelemental.models.Molecule.geometry` should be treated. Lowercase.",
               "title": "Fix Symmetry"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated."
            },
            "id": {
               "anyOf": [
                  {},
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A unique identifier for this Molecule object. This field exists primarily for Databases (e.g. Fractal's Server) to track and lookup this specific object and should virtually never need to be manually set.",
               "title": "Id"
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "symbols",
            "geometry"
         ],
         "title": "Molecule",
         "type": "object"
      },
      "NativeFilesProtocolEnum": {
         "description": "CMS program files to keep from a computation.",
         "enum": [
            "all",
            "input",
            "none"
         ],
         "title": "NativeFilesProtocolEnum",
         "type": "string"
      },
      "Provenance": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": true,
         "description": "Provenance information.",
         "properties": {
            "creator": {
               "description": "The name of the program, library, or person who created the object.",
               "title": "Creator",
               "type": "string"
            },
            "version": {
               "default": "",
               "description": "The version of the creator, blank otherwise. This should be sortable by the very broad `PEP 440 <https://www.python.org/dev/peps/pep-0440/>`_.",
               "title": "Version",
               "type": "string"
            },
            "routine": {
               "default": "",
               "description": "The name of the routine or function within the creator, blank otherwise.",
               "title": "Routine",
               "type": "string"
            }
         },
         "required": [
            "creator"
         ],
         "title": "Provenance",
         "type": "object"
      },
      "WavefunctionProtocolEnum": {
         "description": "Wavefunction to keep from a computation.",
         "enum": [
            "all",
            "orbitals_and_eigenvalues",
            "occupations_and_eigenvalues",
            "return_results",
            "none"
         ],
         "title": "WavefunctionProtocolEnum",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "input_data",
      "molecule",
      "driver"
   ]
}

Fields:
Validators:
field bsse_type: List[BsseEnum] = [BsseEnum.cp]

Requested BSSE treatments. First in list determines which interaction or total energy/gradient/Hessian returned.

Validated by:
field driver: DriverEnum [Required]

The computation driver; i.e., energy, gradient, hessian. In case of ambiguity (e.g., MBE gradient through finite difference energies or MBE energy through composite method), this field refers to the target derivative, not any means specification.

field embedding_charges: Optional[Dict[int, List[float]]] = None

Atom-centered point charges to be used to speed up nbody-level convergence. Charges are placed on molecule fragments whose basis sets are not included in the computation. (An implication is that charges aren’t invoked for bsse_type=cp.) Keys: 1-based index of fragment. Values: list of atom charges for that fragment.

Validated by:
field input_data: ManyBodyInput [Required]

Input schema containing the relevant settings for performing the many body expansion. This is entirely redundant with the piecemeal assembly of this Computer class and is only stored to be available for error handling and exact reconstruction of ManyBodyResult.

field levels: Optional[Dict[Union[int, Literal['supersystem']], str]] = None

Dictionary of different levels of theory for different levels of expansion. Note that the primary method_string is not used when this keyword is given. supersystem computes all higher order n-body effects up to the number of fragments; this higher-order correction uses the nocp basis, regardless of bsse_type. A method fills in for any lower unlisted nbody levels. Note that if both this and max_nbody are provided, they must be consistent. Examples: SUPERSYSTEM definition suspect* {1: ‘ccsd(t)’, 2: ‘mp2’, ‘supersystem’: ‘scf’} * {2: ‘ccsd(t)/cc-pvdz’, 3: ‘mp2’} * Now invalid: {1: 2, 2: ‘ccsd(t)/cc-pvdz’, 3: ‘mp2’} Examples above are processed in the ManyBodyComputer, and once processed, only the values should be used. The keys turn into nbodies_per_mc_level, as notated below. * {1: ‘ccsd(t)’, 2: ‘mp2’, ‘supersystem’: ‘scf’} -> nbodies_per_mc_level=[[1], [2], [‘supersystem’]] * {2: ‘ccsd(t)/cc-pvdz’, 3: ‘mp2’} -> nbodies_per_mc_level=[[1, 2], [3]]

Validated by:
field max_nbody: Optional[int] = None

Maximum number of bodies to include in the many-body treatment. Possible: max_nbody <= nfragments. Default: max_nbody = nfragments.

Validated by:
field molecule: Molecule [Required]

Target molecule for many body expansion (MBE) or interaction energy (IE) analysis. Fragmentation should already be defined in fragments and related fields.

Validated by:
field qcmb_core: Optional[Any] = None

Low-level interface

field return_total_data: Optional[bool] = None

When True, returns the total data (energy/gradient/Hessian) of the system, otherwise returns interaction data. Default is False for energies, True for gradients and Hessians. Note that the calculation of counterpoise corrected total energies implies the calculation of the energies of monomers in the monomer basis, hence specifying return_total_data = True may carry out more computations than return_total_data = False. For gradients and Hessians, return_total_data = False is rarely useful.

Validated by:
field supersystem_ie_only: Optional[bool] = False

Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) analysis, thereby omitting intermediate-body calculations. When False (default), compute each n-body level in the MBE up through max_nbody. 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.

Validated by:
field task_list: Dict[str, Union[AtomicComputer, CompositeComputer, FiniteDifferenceComputer]] = {}
build_tasks(mb_computer, mc_level_idx, **kwargs)[source]

Adds to the task_list as many new unique tasks as necessary to treat a single model chemistry level at one or several n-body levels. New tasks are of type mb_computer with model chemistry level specified in kwargs and n-body levels accessed through mc_level_idx.

Parameters:
  • mb_computer (Union[AtomicComputer, CompositeComputer, FiniteDifferenceComputer]) – Class of task computers to instantiate and add to self.task_list. Usually AtomicComputer but may be other when wrappers are layered.

  • mc_level_idx (int) – Position in field self.nbodies_per_mc_level used to obtain nbodies, the list of n-body levels (e.g., [1] or [1, 2] or [“supersystem”]) to which the modelchem specified in kwargs applies. That is, nbodies = self.nbodies_per_mc_level[mc_level_idx]. Note the natural 1-indexing of nbodies _contents_, so [1] covers one-body contributions. The corresponding user label is the 1-indexed counterpart, mc_level_lbl = mc_level_idx + 1 Formerly nlevel as in nbody = self.nbody_list[nbody_level=nlevel]. (edit)

  • kwargs (Dict[str, Any]) – Other arguments for initializing mb_computer. In particular, specifies model chemistry. (edit)

Returns:

count – Number of new tasks planned by this call including any supersystem.

Return type:

int

compute(client=None)[source]

Run quantum chemistry.

Parameters:

client (Optional[PortalClient]) – QCFractal client if using QCArchive for distributed compute.

classmethod from_manybodyinput(input_model, build_tasks=True)[source]
Parameters:
classmethod from_psi4_task_planner(*, molecule, method, basis, driver, keywords, **mbkwargs)[source]
get_psi_results(client=None, *, return_wfn=False)[source]

Called by driver to assemble results into ManyBody-flavored QCSchema, then reshape and return them in the customary Psi4 driver interface: (e/g/h, wfn).

Parameters:
  • return_wfn (bool) –

    Whether to additionally return the dummy Wavefunction calculation result as the second element of a tuple. Contents are:

    • supersystem molecule

    • dummy basis, def2-svp

    • e/g/h member data

    • QCVariables

  • client (PortalClient | None)

Return type:

Union[float, Matrix, Tuple[Union[float, Matrix], Wavefunction]]

Returns:

  • ret – Energy, gradient, or Hessian according to self.driver.

  • wfn – Wavefunction described above when return_wfn specified.

get_results(client=None)[source]

Process the QC results from all n-body component molecular systems and model chemistry levels into final quantities and form QCSchema model.

Parameters:

client (Optional[PortalClient]) – QCFractal client if using QCArchive for distributed compute.

Returns:

mbres – All MBE results collected into a QCSchema model.

Return type:

qcmanybody.models.v2.ManyBodyResult

plan()[source]
validator set_bsse_type  »  bsse_type[source]
Return type:

List[BsseEnum]

Parameters:

v (Any)

validator set_embedding_charges  »  embedding_charges[source]
Return type:

Dict[int, List[float]]

Parameters:
validator set_levels  »  levels[source]
Return type:

Dict[Union[int, Literal['supersystem']], str]

Parameters:
validator set_max_nbody  »  max_nbody[source]
Return type:

int

Parameters:
validator set_molecule  »  molecule[source]
Return type:

Molecule

Parameters:

v (Any)

validator set_return_total_data  »  return_total_data[source]
Return type:

bool

Parameters:
validator set_supersystem_ie_only  »  supersystem_ie_only[source]
Return type:

bool

Parameters:
property nbodies_per_mc_level: List[List[int | Literal['supersystem']]]
property nfragments: int