Skip to main content

MSRRHO Thermochemistry

MSRRHO evaluates finite-temperature thermochemistry from a molecular structure and vibrational levels. It is designed as a fast backend-side calculation: no worker pod is launched, but the SDK interface remains job-like for consistency (submit, wait, result, require_result).

Your First MSRRHO Job

import atomiverse
from atomiverse import Atoms, JobFailedError, MSRRHO

atomiverse.configure(api_key="your-api-key")

water = Atoms.from_smiles("O")

job = MSRRHO(
atoms=water,
vibrational_levels_cm1=[1595.0, 3657.0, 3756.0],
temperature_start=250.0,
temperature_stop=350.0,
temperature_step=50.0,
)

job.submit(wait=True)

try:
result = job.require_result()
except JobFailedError as exc:
print(f"MSRRHO failed: {exc.failure.error}")
else:
print(f"ZPE: {result.zpe_kj_per_mol:.3f} kJ/mol")
print(f"Point group: {result.point_group}, symmetry: {result.symmetry_number}")
for row in result.properties:
print(
f"T={row.temperature:6.1f} K "
f"G={row.gibbs_energy_kj_per_mol:10.3f} kJ/mol "
f"S={row.entropy_total_j_per_mol_k:10.3f} J/(mol K)"
)
result.dump("msrrho-output")

Inputs

FieldTypeUnitsNotes
atomsAtoms-Non-periodic molecule geometry
vibrational_levels_cm1list[float]cm^-1Harmonic levels; must be non-empty
temperature_startfloatKStart of sampled grid
temperature_stopfloatKEnd of sampled grid (inclusive)
temperature_stepfloatKGrid spacing (> 0)
pressurefloatPaDefault 101325.0
multiplicityint-Spin multiplicity, default 1
symmetry_numberint | None-Rotational symmetry number; guessed automatically when omitted
treat_internal_energybool-Include the internal-energy correction

Result

job.require_result() returns an MSRRHOResult with:

FieldTypeUnits
zpe_kj_per_molfloatkJ/mol
zpe_kcal_per_molfloatkcal/mol
pressurefloatPa
symmetry_numberint-
point_groupstr | None-
propertieslist[MSRRHOTemperatureProperties]per-temperature rows

Each properties row includes:

FieldUnits
temperatureK
internal_energy_kj_per_molkJ/mol
internal_energy_kcal_per_molkcal/mol
entropy_vibrational_j_per_mol_kJ/(mol K)
entropy_ideal_j_per_mol_kJ/(mol K)
entropy_electronic_j_per_mol_kJ/(mol K)
entropy_total_j_per_mol_kJ/(mol K)
helmholtz_energy_kj_per_molkJ/mol
helmholtz_energy_kcal_per_molkcal/mol
gibbs_energy_kj_per_molkJ/mol
gibbs_energy_kcal_per_molkcal/mol

Notes

  • The temperature grid is sampled as start, start + step, ... and includes stop when the endpoint lands on the step grid.
  • Negative vibrational values are accepted and treated by magnitude when converted for MSRRHO processing.
  • The rotational symmetry number is guessed from the molecular geometry when symmetry_number is omitted.
  • Use result.dump("folder") to write the per-temperature table to folder/msrrho.csv.
  • MSRRHO currently runs only on managed backend compute. BYOC targets are rejected for this job type.