Skip to content

oniom

Perform an ONIOM calculation.

This command runs an ONIOM calculation, which is a multilayer quantum embedding approach developed by Morokuma and co-workers. It enables different levels of methods, ranging from fully ab initio to semi-empirical to fully empirical, be applied to different parts of a system. See Chem. Rev., 2015, 115 (12), pp 5678–5796 for a comprehensive review of this method.

Currently, the oniom command only supports two-layered embedding. The higher level method can be a KS-DFT theory (typically with a hybrid functional and a large basis), specified by the dft subcommand; the lower level method can be another KS-DFT theory (possibly with a pure functional and a small basis, specified by a second dft subcommand), or a semi-empirical method (such as GFn-xTB, specified by an xtb subcommand); the higher level method subcommand is specified first, followed by the lower level method subcommand.

The high-level subsystem is specified using active.

For an ONIOM calculation in which the subsystem is partitioned across one or more covalent bonds, the subystem is usually terminated with link atoms. To minimize error associated with partitioning across covalent bonds and adding link atoms, the following general guidelines may be helpful:

  • Only cut non-polar bonds, preferrably C-C bonds.
  • Only cut single bonds.
  • Do not cut through cyclic structures
A more detailed and complete discussion about the guidelines can be found here.

An example ONIOM calculation on methanol, with the hydroxyl group treated at B3LYP/6-31G* level of theory and the methyl group treated at PBE/STO-3G level of theory, and using the hydrogen link atom to terminate the high-level subsystem, might be run using:

oniom(
  structure( molecule = methanol )
  active = [1:2]
  link_atom(
    symbol = 'H'
    connecting_atom = 2
    replaced_atom = 3
  )
  dft(
    xc = B3LYP
    ao = '6-31G*'
  )
  dft(
    xc = PBE
    ao = 'STO-3G'
  )
)
This command can appear in the global context.

Subcommands

Options

active

Specify the active (i.e. high-level) subsystem by providing a list of indices for those atoms that belong to the high-level region. The atoms in the molecule are indexed from 1.

This option is mandatory.

  • The type is [int]
  • There is no default value.
  • The value must be positive
name

Specify the name of a set of results.

This option is deprecated.

  • The type is string
  • There is no default value.
print_level

Print level.

  • The type is int
  • There is no default value.
  • The value must be one of:
    • -2 - No output
    • -1 - Minimum output
    • 0 - Output that doesn't scale with system size
    • 1 - Output that scales linearly with system size
    • 2 - (Debugging) output that scales quadratically with system size
    • 3 - (Debugging) output that scales cubically with system size