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