# 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]]
)
xc = pbe
ao = '6-31G*'
charge = 1   ! 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 the file option within the structure() 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
)


## 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