# Evaluate DFT energies

Compute single-point DFT energies on stored reactant, TS and product geometries.

Compute single-point DFT energies across stored reactant, transition-state, and product geometries on CPU (`PySCF`) or GPU (`GPU4PySCF`) workers.

> **Important:** This workflow evaluates **single-point energies** at fixed geometries. It does not re-optimize structures, compute a DFT Hessian, or run a DFT IRC.

## 1. Check available DFT Programs

List the Programs published in your project to find the DFT Program reference (for example, `dft.single-point@1`):

```bash
ct-cli program list
ct-cli runner list
```

## 2. Dry-run your DFT evaluation

Preview which geometries and settings will be evaluated for a stored calculation before submitting jobs:

```bash
ct-cli dft submit \
  --program dft.single-point@1 \
  --device cpu \
  --calculation-id CALCULATION_UUID \
  --dry-run
```

Key options:

- **`--calculation-id CALCULATION_UUID`** — Evaluates the geometries of one stored source calculation. _(Always pass `--calculation-id` when targeting a single reaction; omitting it selects all eligible calculations in the project.)_
- **`--device cpu | cuda`** — Selects CPU `PySCF` or CUDA 13 `GPU4PySCF`. CUDA jobs never silently fall back to CPU.
- **`--settings dft.yaml`** _(optional)_ — Custom YAML settings for functional, basis set, and SCF convergence policy.

## 3. Submit the calculation batch

Remove `--dry-run` to schedule the single-point jobs:

```bash
ct-cli dft submit \
  --program dft.single-point@1 \
  --device cpu \
  --calculation-id CALCULATION_UUID
```

The command freezes the source geometries and method settings, fans out one job per geometry via a Flow, and prints both the `BATCH_UUID` and `FLOW_UUID`.

## 4. Check status and retry failed points

Monitor the evaluation batch or individual geometry jobs:

```bash
ct-cli dft status --batch BATCH_UUID
ct-cli flow status FLOW_UUID
ct-cli logs JOB_UUID
```

If one geometry point fails (for example, due to a worker preemption), retry only the incomplete points while keeping the completed sibling energies:

```bash
ct-cli dft retry FLOW_UUID
```

## 5. Compare barriers safely

When inspecting published DFT energies in your project:

- **Spin multiplicity is explicit:** `1` = singlet, `2` = doublet, `3` = triplet (the calculator converts to PySCF's `2S = multiplicity - 1` internally).
- **Match charge and level of theory:** Only compare electronic energies and barriers that share the same total charge, functional, basis set, and reference state (such as optimized IRC endpoints).

See [Optimize a structure](/science/structures/) for geometry relaxation, [Search and verify a transition state](/science/transition-states/) for IRC generation, or [Connect a worker](/operate/workers/) to add CPU/GPU capacity.
