Benzoyl Peroxide O-O Bond Scan with UMA¶
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_0loaded from01-benzoyl-peroxide-oo-scan_workdir/spinpol_0/ams.rkf. Closed-shell reference PES scan for the peroxide O-O cleavage.spinpol_1loaded from01-benzoyl-peroxide-oo-scan_workdir/spinpol_1/ams.rkf. Open-shell PES scan with one excess alpha electron.spinpol_2loaded from01-benzoyl-peroxide-oo-scan_workdir/spinpol_2/ams.rkf. Open-shell PES scan with two excess alpha electrons.
Energy Plot¶

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.

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.

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.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 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)
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"\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"\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"\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

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

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`.

## 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`.
Note on AI-generated content¶
This page was generated by a Python script. That Python script was AI-generated.
All numbers, figures, and tables are extracted or postprocessed from actual AMS calculations, and can be transparently regenerated from the provided Python scripts.
Any scientific reasoning or citations was written by AI. This page is the actual one-shot output from using the ams2026 skill with an AI coding agent.