Benzoyl Peroxide O-O Bond Scan with UMA

../_images/pes_scan_6338422e.png

Relative energies along the peroxide O-O bond scan.

Requires: AMS2026 or later

Related documentation

This report summarizes three AMS PES scans for benzoyl peroxide using the MLPotential engine with model UMA-S-1.2-OMol. The peroxide O-O bond was identified by looping over oxygen atoms and inspecting ChemicalSystem.bonds for an oxygen neighbor.

Provenance

  • spinpol_0 loaded from 01-benzoyl-peroxide-oo-scan_workdir/spinpol_0/ams.rkf. Closed-shell reference PES scan for the peroxide O-O cleavage.

  • spinpol_1 loaded from 01-benzoyl-peroxide-oo-scan_workdir/spinpol_1/ams.rkf. Open-shell PES scan with one excess alpha electron.

  • spinpol_2 loaded from 01-benzoyl-peroxide-oo-scan_workdir/spinpol_2/ams.rkf. Open-shell PES scan with two excess alpha electrons.

Energy Plot

Energy vs O-O distance

Summary Table

spinpolarization

min_distance_angstrom

max_distance_angstrom

minimum_energy_hartree

minimum_relative_energy_kcal_per_mol

0.000000

1.362770

3.000000

-840.394601

0.000000

1.000000

1.362770

3.000000

-840.370230

15.292577

2.000000

1.362770

3.000000

-840.339771

34.406324

Lowest-Energy Structures

The lowest-energy bonded state in the full scan set occurs at spinpolarization = 0 and d(O-O) = 1.465 angstrom. Here, ‘bonded’ means d(O-O) <= 2.0 angstrom.

Lowest-energy bonded state

The lowest-energy dissociated state was defined as the lowest-energy structure at the largest scanned O-O distance (d(O-O) = 3.000 angstrom). It occurs for spinpolarization = 2.

Lowest-energy dissociated state

Calculation Inputs

spinpol_0

PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 0
  Unrestricted yes
EndEngine

spinpol_1

PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 1
  Unrestricted yes
EndEngine

spinpol_2

PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 2
  Unrestricted yes
EndEngine

Conclusion

Among the three scans, the global minimum is found for spinpolarization = 0. At the dissociation limit sampled here (~3.0 angstrom), the lowest-energy state is obtained for spinpolarization = 2.

Prompts and Python scripts

Prompt (instruction for AI agent)
Use $ams2026

Do O-O bond scans for benzoyl peroxide smiles: c1ccc(cc1)C(=O)OOC(=O)c2ccccc2

Find out which bond is the O-O bond by looping over the atoms and inspecting
the ChemicalSystem bonds

Set up a AMS PES Scan with MLPotential Model UMA-S-1.2-Omol. Run three
equivalent jobs with three different values for spinpolarization: 0, 1,
and 2. Run the bond scan until dissociation (distance 3 angstrom, with
approximately 0.1 angstrom steps)

Plot the energy vs bond length in all three cases (get_pesscan_results)

Include the graph in the report.

Include pictures of structures for the lowest-energy bonded state and
the lowest-energy dissociated state (and indicate the corresponding spin
polarization).
01-benzoyl-peroxide-oo-scan.py
#!/usr/bin/env amspython
from __future__ import annotations

from pathlib import Path

from scm.base import ChemicalSystem
from scm.input_classes import AMS
from scm.plams import AMSJob, Settings, finish, init


SMILES = "c1ccc(cc1)C(=O)OOC(=O)c2ccccc2"
MODEL = "UMA-S-1.2-OMol"
TARGET_DISTANCE_ANGSTROM = 3.0
STEP_ANGSTROM = 0.1
WORKDIR = "01-benzoyl-peroxide-oo-scan_workdir"


def build_system() -> ChemicalSystem:
    system = ChemicalSystem.from_smiles(SMILES)
    system.guess_bonds()
    return system


def find_oo_bond(system: ChemicalSystem) -> tuple[int, int]:
    for atom_index, atom in enumerate(system.atoms):
        if atom.symbol != "O":
            continue
        for i, j, _bond in system.bonds.get_bonds_for_atom(atom_index):
            other_index = j if i == atom_index else i
            if system.atoms[other_index].symbol == "O":
                return tuple(sorted((atom_index, other_index)))
    raise RuntimeError("Could not locate an O-O bond in the ChemicalSystem")


def bond_distance_angstrom(system: ChemicalSystem, i: int, j: int) -> float:
    return float(system.get_distance(i, j))


def build_settings(
    atom_i: int,
    atom_j: int,
    start_distance: float,
    spinpolarization: int,
) -> Settings:
    settings = Settings()
    settings.runscript.nproc = 1
    settings.runscript.preamble_lines = ["export OMP_NUM_THREADS=1"]
    settings.input.ams.task = "PESScan"
    settings.input.ams.pesscan.scancoordinate = [Settings()]
    settings.input.ams.pesscan.scancoordinate[0].distance = [
        f"{atom_i + 1} {atom_j + 1} {start_distance:.6f} {TARGET_DISTANCE_ANGSTROM:.6f}"
    ]
    npoints = int(round((TARGET_DISTANCE_ANGSTROM - start_distance) / STEP_ANGSTROM)) + 1
    settings.input.ams.pesscan.scancoordinate[0].npoints = max(npoints, 2)
    settings.input.ams.pesscan.calcpropertiesatpespoints = "Yes"
    settings.input.mlpotential.model = MODEL
    settings.input.mlpotential.unrestricted = "Yes"
    settings.input.mlpotential.unpairedelectrons = spinpolarization
    return settings


def validate_settings(settings: Settings) -> None:
    AMS.from_settings(settings)


def run_scan(
    base_system: ChemicalSystem,
    atom_i: int,
    atom_j: int,
    spinpolarization: int,
) -> AMSJob:
    system = base_system.copy()
    start_distance = bond_distance_angstrom(system, atom_i, atom_j)
    settings = build_settings(atom_i, atom_j, start_distance, spinpolarization)
    validate_settings(settings)
    job = AMSJob(
        molecule=system,
        settings=settings,
        name=f"spinpol_{spinpolarization}",
    )
    result = job.run()
    if not result.ok():
        raise RuntimeError(f"Job {job.name} failed")
    return job


def main() -> None:
    init(folder=WORKDIR)
    try:
        system = build_system()
        atom_i, atom_j = find_oo_bond(system)
        start_distance = bond_distance_angstrom(system, atom_i, atom_j)
        print(f"O-O bond found between atoms {atom_i} and {atom_j} (0-based indexing)")
        print(f"O-O bond found between atoms {atom_i + 1} and {atom_j + 1} (AMS 1-based indexing)")
        print(f"Starting O-O distance: {start_distance:.3f} angstrom")

        for spinpolarization in (0, 1, 2):
            job = run_scan(system, atom_i, atom_j, spinpolarization)
            print(f"Finished {job.name}: {Path(job.path) / 'ams.rkf'}")
    finally:
        finish()


if __name__ == "__main__":
    main()
report.py
#!/usr/bin/env amspython
from __future__ import annotations

from pathlib import Path
from typing import Any

import matplotlib.pyplot as plt
import pandas as pd
from scm.base import Units
from scm.plams import AMSJob, view


WORKDIR = Path("01-benzoyl-peroxide-oo-scan_workdir")
REPORT_PATH = Path("report.md")
PLOT_PATH = Path("pes_scan.png")
BONDED_IMAGE_PATH = Path("bonded_state.png")
DISSOCIATED_IMAGE_PATH = Path("dissociated_state.png")
BOND_CUTOFF_ANGSTROM = 2.0


JOB_METADATA = {
    0: {
        "path": WORKDIR / "spinpol_0" / "ams.rkf",
        "why": "Closed-shell reference PES scan for the peroxide O-O cleavage.",
    },
    1: {
        "path": WORKDIR / "spinpol_1" / "ams.rkf",
        "why": "Open-shell PES scan with one excess alpha electron.",
    },
    2: {
        "path": WORKDIR / "spinpol_2" / "ams.rkf",
        "why": "Open-shell PES scan with two excess alpha electrons.",
    },
}


def load_jobs() -> dict[int, AMSJob]:
    jobs: dict[int, AMSJob] = {}
    for spinpol, metadata in JOB_METADATA.items():
        job = AMSJob.load_external(str(metadata["path"]))
        print(f"Loaded spinpol={spinpol}: {metadata['why']}")
        jobs[spinpol] = job
    return jobs


def build_dataframe(jobs: dict[int, AMSJob]) -> pd.DataFrame:
    rows: list[dict[str, Any]] = []
    for spinpol, job in jobs.items():
        results = job.results.get_pesscan_results(molecules=True)
        conversion = Units.conversion_factor("bohr", "angstrom")
        distances = [distance * conversion for distance in results["RaveledPESCoords"][0]]
        energies = list(results["PES"])
        for point_index, (distance, energy, converged, molecule) in enumerate(
            zip(distances, energies, results["Converged"], results["Molecules"])
        ):
            rows.append(
                {
                    "spinpolarization": spinpol,
                    "point_index": point_index,
                    "distance_angstrom": float(distance),
                    "energy_hartree": float(energy),
                    "converged": bool(converged),
                    "molecule": molecule,
                }
            )
    df = pd.DataFrame(rows)
    global_min = float(df["energy_hartree"].min())
    df["relative_energy_kcal_per_mol"] = (
        df["energy_hartree"] - global_min
    ) * Units.conversion_factor("hartree", "kcal/mol")
    return df


def plot_curves(df: pd.DataFrame) -> None:
    fig, ax = plt.subplots(figsize=(6, 4))
    for spinpol, subdf in df.groupby("spinpolarization"):
        ordered = subdf.sort_values("distance_angstrom")
        ax.plot(
            ordered["distance_angstrom"],
            ordered["relative_energy_kcal_per_mol"],
            marker="o",
            label=f"spinpolarization = {spinpol}",
        )
    ax.set_xlabel("O-O distance [angstrom]")
    ax.set_ylabel("Relative energy [kcal/mol]")
    ax.set_title("Benzoyl peroxide O-O bond PES scan with UMA-S-1.2-OMol")
    ax.legend()
    ax.grid(alpha=0.3)
    fig.tight_layout()
    fig.savefig(PLOT_PATH, dpi=200)
    plt.close(fig)


def select_state_rows(df: pd.DataFrame) -> tuple[pd.Series, pd.Series]:
    bonded_candidates = df[df["distance_angstrom"] <= BOND_CUTOFF_ANGSTROM]
    if bonded_candidates.empty:
        bonded_candidates = df
    bonded_row = bonded_candidates.loc[bonded_candidates["energy_hartree"].idxmin()]
    max_distance = float(df["distance_angstrom"].max())
    dissociated_candidates = df[df["distance_angstrom"] >= max_distance - 1.0e-6]
    dissociated_row = dissociated_candidates.loc[dissociated_candidates["energy_hartree"].idxmin()]
    return bonded_row, dissociated_row


def render_state_images(bonded_row: pd.Series, dissociated_row: pd.Series) -> None:
    view(
        bonded_row["molecule"],
        guess_bonds=True,
        width=350,
        height=260,
        direction="along_pca3",
        picture_path=str(BONDED_IMAGE_PATH),
    )
    view(
        dissociated_row["molecule"],
        guess_bonds=True,
        width=350,
        height=260,
        direction="along_pca3",
        picture_path=str(DISSOCIATED_IMAGE_PATH),
    )


def build_summary_table(df: pd.DataFrame) -> pd.DataFrame:
    summary = (
        df.sort_values(["spinpolarization", "distance_angstrom"])
        .groupby("spinpolarization", as_index=False)
        .agg(
            min_distance_angstrom=("distance_angstrom", "min"),
            max_distance_angstrom=("distance_angstrom", "max"),
            minimum_energy_hartree=("energy_hartree", "min"),
            minimum_relative_energy_kcal_per_mol=("relative_energy_kcal_per_mol", "min"),
        )
    )
    return summary


def write_report(
    df: pd.DataFrame,
    summary: pd.DataFrame,
    bonded_row: pd.Series,
    dissociated_row: pd.Series,
    jobs: dict[int, AMSJob],
) -> None:
    if REPORT_PATH.exists():
        REPORT_PATH.replace(REPORT_PATH.with_suffix(".md.bk"))

    intro = (
        "# Benzoyl Peroxide O-O Bond Scan\n\n"
        "This report summarizes three AMS PES scans for benzoyl peroxide "
        "using the MLPotential engine with model `UMA-S-1.2-OMol`. "
        "The peroxide O-O bond was identified by looping over oxygen atoms "
        "and inspecting `ChemicalSystem.bonds` for an oxygen neighbor.\n\n"
    )

    provenance_lines = []
    for spinpol, metadata in JOB_METADATA.items():
        provenance_lines.append(
            f"- `spinpol_{spinpol}` loaded from `{metadata['path']}`. {metadata['why']}"
        )

    summary_table = summary.to_markdown(index=False, floatfmt=".6f")

    lowest_states = (
        "## Lowest-Energy Structures\n\n"
        f"The lowest-energy bonded state in the full scan set occurs at "
        f"`spinpolarization = {int(bonded_row['spinpolarization'])}` and "
        f"`d(O-O) = {bonded_row['distance_angstrom']:.3f}` angstrom. "
        f"Here, 'bonded' means `d(O-O) <= {BOND_CUTOFF_ANGSTROM:.1f}` angstrom.\n\n"
        f"![Lowest-energy bonded state]({BONDED_IMAGE_PATH})\n\n"
        f"The lowest-energy dissociated state was defined as the lowest-energy "
        f"structure at the largest scanned O-O distance "
        f"(`d(O-O) = {dissociated_row['distance_angstrom']:.3f}` angstrom). "
        f"It occurs for `spinpolarization = {int(dissociated_row['spinpolarization'])}`.\n\n"
        f"![Lowest-energy dissociated state]({DISSOCIATED_IMAGE_PATH})\n\n"
    )

    conclusion = (
        "## Conclusion\n\n"
        f"Among the three scans, the global minimum is found for "
        f"`spinpolarization = {int(bonded_row['spinpolarization'])}`. "
        f"At the dissociation limit sampled here (`~3.0` angstrom), the lowest-energy "
        f"state is obtained for `spinpolarization = {int(dissociated_row['spinpolarization'])}`.\n"
    )

    inputs = []
    for spinpol, job in jobs.items():
        inputs.append(f"### spinpol_{spinpol}\n\n```text\n{job.get_input()}\n```\n")

    report_text = (
        intro
        + "## Provenance\n\n"
        + "\n".join(provenance_lines)
        + "\n\n## Energy Plot\n\n"
        + f"![Energy vs O-O distance]({PLOT_PATH})\n\n"
        + "## Summary Table\n\n"
        + summary_table
        + "\n\n"
        + lowest_states
        + "## Calculation Inputs\n\n"
        + "\n".join(inputs)
        + conclusion
    )
    REPORT_PATH.write_text(report_text)


def main() -> None:
    jobs = load_jobs()
    df = build_dataframe(jobs)
    summary = build_summary_table(df)
    plot_curves(df)
    bonded_row, dissociated_row = select_state_rows(df)
    render_state_images(bonded_row, dissociated_row)
    write_report(df, summary, bonded_row, dissociated_row, jobs)


if __name__ == "__main__":
    main()
Original Markdown report
# Benzoyl Peroxide O-O Bond Scan

This report summarizes three AMS PES scans for benzoyl peroxide using the MLPotential engine with model `UMA-S-1.2-OMol`. The peroxide O-O bond was identified by looping over oxygen atoms and inspecting `ChemicalSystem.bonds` for an oxygen neighbor.

## Provenance

- `spinpol_0` loaded from `01-benzoyl-peroxide-oo-scan_workdir/spinpol_0/ams.rkf`. Closed-shell reference PES scan for the peroxide O-O cleavage.
- `spinpol_1` loaded from `01-benzoyl-peroxide-oo-scan_workdir/spinpol_1/ams.rkf`. Open-shell PES scan with one excess alpha electron.
- `spinpol_2` loaded from `01-benzoyl-peroxide-oo-scan_workdir/spinpol_2/ams.rkf`. Open-shell PES scan with two excess alpha electrons.

## Energy Plot

![Energy vs O-O distance](pes_scan.png)

## Summary Table

|   spinpolarization |   min_distance_angstrom |   max_distance_angstrom |   minimum_energy_hartree |   minimum_relative_energy_kcal_per_mol |
|-------------------:|------------------------:|------------------------:|-------------------------:|---------------------------------------:|
|           0.000000 |                1.362770 |                3.000000 |              -840.394601 |                               0.000000 |
|           1.000000 |                1.362770 |                3.000000 |              -840.370230 |                              15.292577 |
|           2.000000 |                1.362770 |                3.000000 |              -840.339771 |                              34.406324 |

## Lowest-Energy Structures

The lowest-energy bonded state in the full scan set occurs at `spinpolarization = 0` and `d(O-O) = 1.465` angstrom. Here, 'bonded' means `d(O-O) <= 2.0` angstrom.

![Lowest-energy bonded state](bonded_state.png)

The lowest-energy dissociated state was defined as the lowest-energy structure at the largest scanned O-O distance (`d(O-O) = 3.000` angstrom). It occurs for `spinpolarization = 2`.

![Lowest-energy dissociated state](dissociated_state.png)

## Calculation Inputs

### spinpol_0

```ams
PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 0
  Unrestricted yes
EndEngine


```

### spinpol_1

```ams
PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 1
  Unrestricted yes
EndEngine


```

### spinpol_2

```ams
PESScan
  CalcPropertiesAtPESPoints yes
  ScanCoordinate
    Distance 9 10 1.362770 3.000000
    nPoints 17
  End
End

Task PESScan

System
  Atoms
              C      -5.7853396399      -0.3775293408       0.0534624364
              C      -5.2739631081      -1.6580062127      -0.1693324182
              C      -3.8914954472      -1.8626507642      -0.2206186121
              C      -3.0051209562      -0.7825471751      -0.0485731184
              C      -3.5318256026       0.5027433484       0.1752200639
              C      -4.9152265407       0.7014132161       0.2255077074
              C      -1.5415025506      -0.9907446742      -0.1014385978
              O      -1.0682590904      -2.1425240610      -0.3020011407
              O      -0.6753399226       0.0875991932       0.0705568759
              O       0.6753406192      -0.0876011042       0.0246319173
              C       1.5415028692       0.9907428504       0.1966270716
              O       1.0682589594       2.1425216033       0.3971938037
              C       3.0051212579       0.7825461682       0.1437610029
              C       3.8914945837       1.8626501390       0.3158080689
              C       5.2739621418       1.6580070013       0.2645206976
              C       5.7853400594       0.3775310800       0.0417224843
              C       4.9152277561      -0.7014117837      -0.1303242755
              C       3.5318266896      -0.5027431696      -0.0800346166
              H      -6.8556482602      -0.2213784496       0.0927828415
              H      -5.9492663902      -2.4933590925      -0.3025168635
              H      -3.5178200329      -2.8639890493      -0.3945270611
              H      -2.8770162470       1.3542663339       0.3113864878
              H      -5.3127831836       1.6932542256       0.3980989839
              H       3.5178177234       2.8639876480       0.4897194499
              H       5.9492634706       2.4933607184       0.3977065034
              H       6.8556482458       0.2213806547       0.0024015641
              H       5.3127847693      -1.6932521841      -0.3029171726
              H       2.8770178270      -1.3542671195      -0.2162024114
  End
  BondOrders
     1 2 1.5
     1 6 1.5
     1 19 1.0
     2 3 1.5
     2 20 1.0
     3 4 1.5
     3 21 1.0
     4 5 1.5
     4 7 1.0
     5 6 1.5
     5 22 1.0
     6 23 1.0
     7 8 2.0
     7 9 1.0
     9 10 1.0
     10 11 1.0
     11 12 2.0
     11 13 1.0
     13 14 1.5
     13 18 1.5
     14 15 1.5
     14 24 1.0
     15 16 1.5
     15 25 1.0
     16 17 1.5
     16 26 1.0
     17 18 1.5
     17 27 1.0
     18 28 1.0
  End
End

Engine mlpotential
  Model UMA-S-1.2-OMol
  UnpairedElectrons 2
  Unrestricted yes
EndEngine


```
## Conclusion

Among the three scans, the global minimum is found for `spinpolarization = 0`. At the dissociation limit sampled here (`~3.0` angstrom), the lowest-energy state is obtained for `spinpolarization = 2`.