Skip to main content
Docs

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

    Tools · Fluids & Thermodynamics

    RMG Mechanism Generator

    Generate a detailed gas-phase kinetic mechanism from starting species, temperature, and pressure with the Reaction Mechanism Generator.

    Updated October 1, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    The Reaction Mechanism Generator (RMG-Py) builds a detailed kinetic mechanism automatically: starting from your species, it applies reaction families and estimated rate rules, adds the species and reactions that matter at your conditions, and stops when a termination criterion is met. Cantera runs mechanisms; this tool writes them. It runs on CPU and can take hours for larger systems.

    Inputs

    • species: up to 20 starting species, each with a label, smiles, and mole_fraction; mark diluents such as N₂ or Ar "reactive": false. At least one must be reactive.
    • temperature_k and pressure_pa: the conditions of a constant-temperature, constant-pressure reactor.
    • termination: at least one of a reaction time (time_s), a conversion of one species ({"species": "CH4", "fraction": 0.9}), or a maximum number of species in the mechanism (max_num_species, up to 200).

    RMG's default thermodynamic and kinetic libraries are used.

    Outputs

    FileContents
    chem.yamlThe mechanism in Cantera YAML
    chem.inpThe mechanism in CHEMKIN format
    species_dictionary.txtEach species' structure (RMG adjacency lists)
    summary.jsonRun details and counts

    Not covered

    Temperature or pressure ranges, pressure-dependent networks, liquid-phase and solvent effects, your own seed mechanisms or libraries, and sensitivity analysis aren't available yet.

    Generated mechanisms are often large: shrink one for your conditions with Mechanism Reduction, then simulate it in Cantera.

    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.

    RMG Mechanism Generator rmg-mechanism

    Job type
    rmg-mechanism
    Hardware
    cpu (default)
    Typical runtime
    2 h on CPU

    Payload

    Payload fields
    FieldTypeDescription
    species[]requiredspecies[]

    Limits: min items 1, max items 20

    species.labelrequiredstring

    Limits: min length 1

    species.smilesrequiredstring

    Limits: min length 1

    species.mole_fractionrequirednumber

    Limits: > 0

    species.reactiveboolean
    temperature_krequirednumber

    Limits: > 0

    pressure_parequirednumber

    Limits: > 0

    terminationrequiredtermination
    termination.time_snumber

    Limits: > 0

    termination.conversionobject
    termination.conversion.speciesrequiredstring

    Limits: min length 1

    termination.conversion.fractionrequirednumber

    Limits: > 0, ≤ 1

    termination.max_num_speciesinteger

    Limits: ≥ 1, ≤ 200

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "species": [
            {
                "label": "CH4",
                "smiles": "C",
                "mole_fraction": 0.1,
                "reactive": True,
            },
            {
                "label": "O2",
                "smiles": "[O][O]",
                "mole_fraction": 0.2,
                "reactive": True,
            },
            {
                "label": "N2",
                "smiles": "N#N",
                "mole_fraction": 0.7,
                "reactive": False,
            },
        ],
        "temperature_k": 1350,
        "pressure_pa": 101325,
        "termination": {
            "time_s": 1,
            "conversion": {"species": "CH4", "fraction": 0.9},
            "max_num_species": 50,
        },
    }
    
    estimate = client.jobs.estimate(job_type="rmg-mechanism", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-rmg-mechanism-run",
        job_type="rmg-mechanism",
        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

    • Molecules (list)SMILES

    Workflow outputs

    • ArchiveZIP
    • Kinetic mechanismYAML