Hybrid QM/MM

class QMMM

QM/MM calculations can be specified with the QMMM() class as follows:

my_frag = Fragment(coords=...)

my_qm = ...

my_mm = ...

my_qmmm = QMMM(frag=...,
               qm_region=...,
               qm=my_qm,
               mm=my_mm,
               ...)

where frag is a <class Fragment> object, qm_region is a list of QM atoms, and qm and mm are QM and MM interfaces objects.

Once the QMMM driver theory has been set up, it can be used in tasks like any other theory object, e.g. for a single-point calculation:

sp = SP(theory=qmmm, gradients=True)

sp.run()

The following options relate to the standard additive QM/MM scheme which is the scheme that is appropriate for most use cases including the solid state embedded cluster model. For other schemes, see the subsections:

Additive QM/MM options

coupling

Allowed values:

  • 'covalent': (default) Covalent type of QM/MM coupling for which link atoms are automatically generated

  • 'ionic': Ionic type of QM/MM coupling for which boundary pseudopotentials are expected

dipole_adjust

(default: False) Adjust the dipoles accross the QM/MM boundary. See

embedding

Allowed values:

  • 'electrostatic': (default) Electrostatic embedding

  • 'mechanical': Mechanical embedding

mm

MM interfaces object containing the details of the MM calculation

qm

QM interfaces object containing the details of the QM calculation

qm_region

List of atom indices in the QM region: nested lists are accecpted, for example:

QMMM(qm_region=[range(6),12,18,[25,27]])

is equivalent to:

QMMM(qm_region=[0,1,2,3,4,5,12,18,25,27])

Note

Python counts from 0!

restart

(default: False) Restart from a previous calculation, for both QM and MM

scheme

We do not yet support the conventional subtractive QM/MM scheme, while we strongly recommend to use the additive one.

Allowed values:

  • 'additive': (default) The additive QM/MM scheme

  • 'qm/me': The QM/Me scheme: see QM/Me

separate_ecps

(default: False) Use separate boundary ECPs in ionic embedded cluster calculations

shl_maxcycles

(default: 5) Maximum number of self-consistent shell relaxation cycles in shell model QM/MM.

shl_tolerance

(default: 0.0001) Threshold for convergence of shell relaxation cycles in shell model QM/MM.