Energy evaluations
Qcore provides efficient energy calculations using a variety of standard electronic structure methods, including DFT, GFN-xTB, and MP2. Moreover, Qcore provides quantum embedding approaches, including embedded mean-field theory (EMFT) and ONIOM, to target computational resources at the high-accuracy description of important regions. In this section, we will demonstrate single-point energy calculations using DFT, GFN-XTB, and EMFT.
1. Density functional theory
The minimal input for running a DFT calculation looks like this:
dft(
structure(molecule = water)
xc = pbe
ao = '6-31G*'
)
This input corresponds to a DFT energy calculation on the built-in molecule water using the PBE exchange-correlation functional and the 6-31G* AO basis set. All other calculation details such as charge, spin multiplicity, SCF convergence assume default values. Here is another input file with a greater level of detail:
dft(
structure(
xyz = [[O, 0.0000, 0.0000, 0.0000],
[H, 1.0105, -0.8179, 0.0000],
[H, -1.0882, -0.8808, 0.0000]]
charge = 1
)
xc = pbe
ao = '6-31G*' ! this is how comments work
multiplicity = doublet
max_iter = 20
print_level = 1
)
In this example, we highlight the following options:
- The molecular structure can be specified in-line using option
xyz
; alternatively, it can be read from an XYZ file, using thefile
option within thestructure()
subcommand - The total charge of the molecule is specified using the
charge
option - The spin multiplicity of the molecule is specified using the
multiplicity
option - The maximum number of SCF iterations is specified using the
max_iter
option - The
print_level
option controls the verbosity of output (and works almost everywhere) - Additional options/subcommands for performing DFT calculations can be found in the documentation
2. GFN-xTB
The minimal input for running a GFN-xTB calculation looks like this:
xtb(
structure(molecule = water)
)
As for DFT, the total charge and print level can also be specified within the `xtb()`` command. In cases where the SCF is difficult to converge, we can choose different values for the Fock matrix damping:
xtb(
structure(molecule = water)
fock_damping = 0.9
fock_damping_gradient_threshold = 0.3
)
3. EMFT
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 this paper for a detailed description of the method.
The minimal input for an EMFT energy calculation looks like this:
emft(
structure(molecule = methanol)
active = [1, 2] ! the -OH group
dft(xc = B3LYP ao = 'Def2-TZVP')
dft(xc = PBE ao = 'Def2-SVP')
)
The EMFT energy calculation is run through the emft()
command, which includes the following options/subcommands:
- The active subsystem is specified using the
active
option, whose values are a list of atom indices; the environment subsystem includes the remaining atoms - The high-level and low-level of theory are specified by the
dft()
subcommand, each specifying the exchange-correlation functional and AO basis set for each subsystem - In the above example, the high-level subsystem corresponds to the –OH group of the methanol molecule (i.e. atoms 1 and 2 in the molecular structure specification); the high-level DFT method is B3LYP/Def2-TZVP, and the low-level method is PBE/Def2-SVP
Next: Geometry optimizations