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
| Field | Type | Units | Notes |
|---|---|---|---|
atoms | Atoms | - | Non-periodic molecule geometry |
vibrational_levels_cm1 | list[float] | cm^-1 | Harmonic levels; must be non-empty |
temperature_start | float | K | Start of sampled grid |
temperature_stop | float | K | End of sampled grid (inclusive) |
temperature_step | float | K | Grid spacing (> 0) |
pressure | float | Pa | Default 101325.0 |
multiplicity | int | - | Spin multiplicity, default 1 |
symmetry_number | int | None | - | Rotational symmetry number; guessed automatically when omitted |
treat_internal_energy | bool | - | Include the internal-energy correction |
Result
job.require_result() returns an MSRRHOResult with:
| Field | Type | Units |
|---|---|---|
zpe_kj_per_mol | float | kJ/mol |
zpe_kcal_per_mol | float | kcal/mol |
pressure | float | Pa |
symmetry_number | int | - |
point_group | str | None | - |
properties | list[MSRRHOTemperatureProperties] | per-temperature rows |
Each properties row includes:
| Field | Units |
|---|---|
temperature | K |
internal_energy_kj_per_mol | kJ/mol |
internal_energy_kcal_per_mol | kcal/mol |
entropy_vibrational_j_per_mol_k | J/(mol K) |
entropy_ideal_j_per_mol_k | J/(mol K) |
entropy_electronic_j_per_mol_k | J/(mol K) |
entropy_total_j_per_mol_k | J/(mol K) |
helmholtz_energy_kj_per_mol | kJ/mol |
helmholtz_energy_kcal_per_mol | kcal/mol |
gibbs_energy_kj_per_mol | kJ/mol |
gibbs_energy_kcal_per_mol | kcal/mol |
Notes
- The temperature grid is sampled as
start, start + step, ...and includesstopwhen 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_numberis omitted. - Use
result.dump("folder")to write the per-temperature table tofolder/msrrho.csv. MSRRHOcurrently runs only on managed backend compute. BYOC targets are rejected for this job type.