EMFTMethod
The EMFTMethod
object specifies the settings for using embedded mean-field theory (EMFT) as the method for a calculation.
EMFT is a quantum-embedding method in which the atoms are partitioned into two subsystems, with the "active" subsystem typically treated at a higher level of mean-field theory and the "environment" subsystem treated at a lower level of mean-field theory. See papers 1, 2 and 3 for a detailed description of the method.
There are three required fields for creating an EMFTMethod
object:
active
for specifying the active (i.e. high-level) atom indiceshigh
for specifying the high levelDFTMethod
low
for specifying the low levelDFTMethod
All other calculation details such as SCF convergence criteria can be specified in the details
dictionary.
Guidelines for Subsystem Partitioning
We provide the following guidelines for making a good subsystem partitioning:
- EMFT works best if the subsystems are partitioned across single bonds or between separated fragments. Although by design EMFT works with partitioning across double bonds or conjugated bonding networks, the accuracy is typically much lower.
- For charge-manifestation molecules and reactions (including ionization, electron attachment, or deprotonation), try to avoid use of minimal basis sets for the low-level subsystem. See this paper for detailed analysis of EMFT errors using mixed basis sets.
- Try to avoid use of LDA functionals and recommend using GGAs for the low-level subsystem, since the latter provides much more accurate description of the electronic structure at marginal additional cost.
- It is recommended that the basis sets in the high and low level subsystems diff by no more than "one zeta". For example, if a triple-zeta quality basis set is used for the high-level subsystem, then the low-level subsystem should use a basis set that is at least double-zeta quality to achieve reasonable accuracy.
Example
The following example demonstrates how to create and use EMFTMethod
with a EnergyInput
to calculate the energy of a molecule. Note that the level_shift
option should not be used inside the high
and low
DFTMethod
s.
import sierra
from sierra.inputs import *
# Create an ethanol molecule from pubchem (internet connection required)
ethanol = Molecule(pubchem="ethanol")
# Perform an EMFT energy calculation on ethanol,
# with the hydroxyl group treated at B3LYP/Def2-SVP level of theory
# and the remaining atoms treated at PBE/STO-3G level of theory
emft_input = EnergyInput(
molecule=ethanol,
method=EMFTMethod(
active=[0, 8], # indices of atoms in the hydroxyl group
high=DFTMethod(xc="B3LYP", ao="def2-svp"),
low=DFTMethod(xc="PBE", ao="sto-3g"),
),
)
emft_result = sierra.run(emft_input)
print(f"EMFT energy: {emft_result.energy:.6f} Hartree")
#> EMFT energy: -153.863563 Hartree
Fields
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.
- Type: List[int]
engine
-
The Entos Engine in which to evaluate the method with.
- Type: EngineIdentifier
- Default: EngineIdentifier(name='qcore', image=None)
high
-
Specify the high level of theory.
- Type: DFTMethod
kind
-
- Type: Literal['emft', 'EMFTMethod']
- Default: 'emft'
low
-
Specify the high level of theory.
- Type: DFTMethod
solvation
-
Include effects of solvation through a continuum model.
- Type: Optional[Solvation]
details
- Details relating to the given method
Available options for details
max_iter
-
Maximum number of SCF iterations.
- The type is int
- The default is 128
- The value must be nonnegative
energy_threshold
-
SCF convergence threshold using the absolute value of the energy difference between iterations.
- The type is float
- The default is 1e-6
- The value must be nonnegative
orbital_grad_threshold
-
SCF convergence threshold using the infinity norm of the orbital gradient.
- The type is float
- The default is 1e-5
- The value must be nonnegative
level_shift
-
Turn on level shifting to improve SCF convergence. Raises the energy of virtual orbitals by level shifting value. The level shift is removed at the end of the calculation.
- The type is float
- The default is 0
- The value must be nonnegative
temperature
-
Specify the temperature for the electrons and perform the SCF calculation in the canonical-ensemble. Convergence is often poor with the default convergence settings, and using the original Pulay DIIS method is recommended (see diis option).
- The type is a temperature quantity, i.e. a string consisting of a number and a temperature unit.
- The default is 0 kelvin
diis
-
Method of DIIS.
- The type is str
- The default is adiis+cdiis
- The value must be one of:
none
- DIIS is not used.cdiis
- This is the original DIIS algorithm by P. Pulay. P. Pulay, Chem. Phys. Lett. 73, 393 (1980).ediis
- Energy-based DIIS which minimizes the Hartree-Fock energy functional. Kudin, Scuseria and Cances, J. Chem. Phys. 116, 8255 (2002).adiis
- DIIS based on the augmented Roothaan--Hall energy. X. Hu and W. Yang, J. Chem. Phys. 132, 054109 (2010).ediis+cdiis
- Combination of these two algorithms; see diis_switch_threshold_gradadiis+cdiis
- Combination of these two algorithms; see diis_switch_threshold_grad