Skip to main content
Docs

Search guides and API endpoints, for example “Idempotency-Key” or “submit job”.

    Tools · Fluids & Thermodynamics

    Transition-State-Theory Rate Calculator

    Turn computed activation free energies, or reactant and transition-state thermochemistry, into rate constants over temperature, with Arrhenius fits.

    Updated October 1, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    The Transition-State-Theory Rate Calculator connects quantum chemistry to kinetics. Give it activation energies (or the thermochemistry of reactants and transition states) and it computes rate constants k(T) over a temperature range with canonical Eyring transition-state theory, then fits Arrhenius parameters you can use in a kinetic model. It runs on CPU.

    How it works

    For each reaction and temperature:

    k(T) = σ · κ(T) · (k_B·T / h) · (c°)^(1−m) · exp(−ΔG‡°(T) / RT)

    • m, the molecularity (1 to 3), and c°, the standard-state concentration: standard_state is 1bar for gas-phase or 1M for solution. ΔG‡ must already refer to that standard state; the tool doesn't convert between them.
    • σ, the reaction-path degeneracy (default 1). Don't count symmetry twice if your ΔG‡ already includes it.
    • κ, tunneling: 1, or the Wigner correction from the imaginary frequency with tunneling: wigner. Wigner is a leading-order correction, so the diagnostics warn when κ exceeds 1.5 or the temperature falls below the crossover temperature, where it stops being reliable.

    It then fits both the two-parameter Arrhenius form A·exp(−Ea/RT) and the modified form A·Tⁿ·exp(−Ea/RT) to the computed rate constants.

    Inputs

    • reactions (up to 200), each one of:
      • an activation row: dg_act, or dh_act and ds_act, plus molecularity;
      • a species row: reactants and ts names, looked up in species_thermo, so that ΔG‡(T) = G(TS) − ΣG(reactants).
      • Optional sigma, and imag_freq_cm1 (required for Wigner tunneling).
    • species_thermo (for species rows): G, or H and S, for each species, at one temperature or several (interpolated; temperatures outside the table are rejected rather than extrapolated). Absolute energies such as hartrees are fine, since only differences matter.
    • temperatures: a range (t_min_k, t_max_k, n_points, spaced evenly in 1/T by default) or a list, 3 to 500 points between 10 and 5,000 K.
    • Units: energy_unit (kj_mol, kcal_mol, j_mol, ev, hartree), entropy_unit (j_mol_k or cal_mol_k), and concentration_unit, the basis for the rate constants of bimolecular and termolecular steps.

    Outputs

    FileContents
    rate_constants.csvk and log₁₀ k at every temperature, with units, κ, and the activation parameters used
    arrhenius_fit.csvBoth fitted forms per reaction: A, n, Ea, the temperature range, and the fit quality
    diagnostics.jsonConstants, assumptions, and warnings such as negative barriers, termolecular steps, or a poor fit

    Kinetic Parameter Fitter for rate constants from experimental data; Cantera to use them in a simulation; PySCF Electronic Structure for quantum-chemistry energies.

    Run it from the API

    Submit with Submit a job and the job_type below. Price it first with Estimate job reservation cost: submitting reserves that amount from your wallet, and the charge settles at the actual runtime.

    Transition-State-Theory Rate Calculator tst-rate

    Job type
    tst-rate
    Hardware
    cpu (default)
    Typical runtime
    1 min on CPU

    Payload

    Payload fields
    FieldTypeDescription
    reactionsrequiredreactionsValue
    species_thermospeciesThermoValue
    temperaturestemperatureGrid | number[]
    standard_statestring

    One of: "1bar", "1M"

    tunnelingstring

    One of: "none", "wigner"

    energy_unitstring

    One of: "kj_mol", "kcal_mol", "j_mol", "ev", "hartree"

    entropy_unitstring

    One of: "j_mol_k", "cal_mol_k"

    concentration_unitstring

    One of: "mol_cm3", "mol_l", "mol_m3", "molecule_cm3"

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "reactions": [
            {
                "reaction_id": "R1_h_shift",
                "dh_act": 120,
                "ds_act": 5,
                "molecularity": 1,
                "sigma": 1,
                "imag_freq_cm1": -1500,
            },
            {
                "reaction_id": "R2_h_abstraction",
                "reactants": "CH4 + H",
                "ts": "TS_CH4_H",
                "sigma": 4,
                "imag_freq_cm1": -1400,
            },
        ],
        "species_thermo": [
            {"species_id": "CH4", "t_k": 300, "h": 0, "s": 186.3},
            {"species_id": "CH4", "t_k": 1000, "h": 38.2, "s": 247.6},
            {"species_id": "H", "t_k": 300, "h": 0, "s": 114.7},
            {"species_id": "H", "t_k": 1000, "h": 14.6, "s": 139.9},
            {"species_id": "TS_CH4_H", "t_k": 300, "h": 62, "s": 225},
            "… 1 more",
        ],
        "temperatures": {
            "t_min_k": 300,
            "t_max_k": 1000,
            "n_points": 15,
            "spacing": "inverse",
        },
        "standard_state": "1bar",
        "tunneling": "wigner",
        "energy_unit": "kj_mol",
        "entropy_unit": "j_mol_k",
        "concentration_unit": "mol_cm3",
    }
    
    estimate = client.jobs.estimate(job_type="tst-rate", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-tst-rate-run",
        job_type="tst-rate",
        payload=payload,
        resource="cpu",
    )
    status = client.jobs.wait(job.process_id)
    if status.status == "completed":
        client.jobs.result(job.process_id, save_path=".")

    Sample data from the job catalog; long values are shortened here. Each job_name must be unique among your jobs.

    Workflow inputs

    • Table (list)CSV, JSON
    • Table (list) · optionalCSV, JSON

    Workflow outputs

    • ArchiveZIP
    • TableCSV
    • TableCSV