Skip to main content
Docs

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

    Tools · Fluids & Thermodynamics

    Flamelet Table Generator

    Solve strained counterflow diffusion flamelets and tabulate flamelet/progress-variable lookup tables for turbulent combustion models.

    Updated November 10, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    Turbulent combustion models in LES and RANS codes rarely carry detailed chemistry: they look up thermochemistry in tables built from laminar flamelets. Flamelet Table Generator builds those tables with Cantera. It solves steady counterflow diffusion flamelets across a strain-rate sweep, traces the S-curve to extinction, and integrates the flamelets over a presumed β-PDF into a flamelet/progress-variable (FPV) lookup table. It produces CFD input in a neutral format; it does not run CFD. It runs on CPU.

    How it works

    1. Opposed jets. Fuel and oxidizer streams meet in a counterflow diffusion flame between two nozzles. For each global strain rate, the inlet mass fluxes balance the jets' momentum.
    2. Continuation sweep. The first strain rate is solved from scratch; each later one starts from the previous solution, so the sweep climbs the burning branch of the S-curve.
    3. Extinction. A point whose peak temperature falls close to the inlet temperature (or that still fails to converge after smaller intermediate steps) is flagged extinguished. Later points are flagged without solving, and a short bisection narrows the extinction strain rate. Extinguished points are flagged, never dropped.
    4. Flamelet quantities. Each flamelet reports the mixture fraction Z (Bilger's definition by default, or element-based), a progress variable C (a weighted sum of product mass fractions, CO₂, H₂O, CO and H₂ by default) and its source term, the scalar dissipation rate χ, and the values at stoichiometric Z, including λ = C(Z_st), which labels the flamelet.
    5. Lookup table. Each burning flamelet, plus a frozen-mixing flamelet (the lowest λ), is averaged over a presumed β-PDF of Z on a grid of mean Z and normalized variance. The integral treats each profile as piecewise linear in Z and is exact for that interpolant.

    Inputs

    • The mechanism: built-in gri30 or h2o2 (mechanism_id), or your own Cantera YAML or single CHEMKIN file with thermodynamic and transport data, uploaded or from an artifact. A reduced mechanism from Mechanism Reduction is the intended input.
    • Streams: fuel and oxidizer compositions with their temperatures, the pressure, and the nozzle separation.
    • Strain sweep: a logarithmic or linear grid, or an explicit increasing list of strain rates (1/s), and the extinction threshold.
    • Tables: the mixture-fraction definition, progress-variable weights, the species to tabulate, and the β-PDF grid size. Unknown species fail the job before any solve.

    Outputs

    FileContents
    flamelets.csvEvery solved flamelet's profile: position, Z, C, temperature, χ, the progress-variable source term, and species mass fractions
    flamelets/<flamelet_id>.csvThe same profiles, one file per flamelet, each a workflow record with its peak temperature, strain rate, χ at stoichiometric Z, λ, and extinguished flag
    s_curve.csvOne row per requested strain rate: peak temperature, χ at stoichiometric Z, λ, branch, and the extinguished flag
    fpv_table.csvThe β-PDF lookup table over λ, mean Z, and normalized Z variance
    flamelet_manifest.jsonUnits, species, streams, progress-variable weights, table axes, and the extinguished flamelets
    summary.jsonCounts, the extinction strain-rate bracket, and warnings

    In a workflow, filters on the per-flamelet records can keep only burning flamelets, cut a strain-rate window, or rank flamelets by peak temperature.

    Not covered

    • Unsteady flamelets, premixed or burner-stabilized flamelets, and the unstable middle branch of the S-curve.
    • Multicomponent transport, Soret diffusion, radiation, and soot.
    • Solver-specific table formats (OpenFOAM, FDS, CONVERGE) and tabulation libraries such as ISAT.
    • Running the CFD itself.

    Generate mechanisms with RMG Mechanism Generator, shrink them with Mechanism Reduction, check them against measurements with Mechanism Target Validator, and run single flames or reactors 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.

    Flamelet Table Generator flamelet-table

    Job type
    flamelet-table
    Hardware
    cpu (default)
    Typical runtime
    30 min on CPU

    Payload

    Provide exactly one of: mechanism, mechanism_id.

    Payload fields
    FieldTypeDescription
    mechanismfile_object
    mechanism.namestring

    Limits: min length 1

    mechanism.filenamestring

    Limits: min length 1

    mechanism.content_b64string

    Limits: min length 1

    mechanism.contentany
    mechanism.bytesany
    mechanism_idstring

    One of: "gri30", "h2o2"

    phase_namestring

    Limits: min length 1

    fuelrequiredcomposition
    oxidizerrequiredcomposition
    fuel_temperature_knumber

    Default: 300Limits: > 0, ≤ 5000

    oxidizer_temperature_knumber

    Default: 300Limits: > 0, ≤ 5000

    pressure_panumber

    Default: 101325Limits: > 0, ≤ 100000000

    width_mnumber

    Default: 0.02Limits: > 0, ≤ 1

    strain_rates[]number[]

    Limits: min items 1, max items 40

    strain_gridobject
    strain_grid.min_1_snumber

    Default: 10Limits: ≥ 0.1, ≤ 100000

    strain_grid.max_1_snumber

    Default: 2000Limits: ≥ 0.1, ≤ 100000

    strain_grid.ninteger

    Default: 20Limits: ≥ 2, ≤ 40

    strain_grid.spacingstring

    Default: "log"One of: "log", "linear"

    refineobject
    refine.rationumber

    Default: 3Limits: > 1, ≤ 10

    refine.slopenumber

    Default: 0.1Limits: > 0, ≤ 1

    refine.curvenumber

    Default: 0.2Limits: > 0, ≤ 1

    refine.prunenumber

    Default: 0.03Limits: ≥ 0, < 1

    transport_modelstring

    Default: "mixture-averaged"One of: "mixture-averaged"

    extinction_delta_t_knumber

    Default: 200Limits: > 0, ≤ 2000

    mixture_fractionstring

    Default: "bilger"Limits: pattern ^([Bb][Ii][Ll][Gg][Ee][Rr]|[A-Z][a-z]?)$

    progress_variablemap<string, number>
    output_species[]string[]

    Limits: min items 1, max items 30

    pdf_tableobject
    pdf_table.enabledboolean

    Default: true

    pdf_table.n_zinteger

    Default: 51Limits: ≥ 3, ≤ 201

    pdf_table.n_varianceinteger

    Default: 11Limits: ≥ 2, ≤ 21

    File fields take {"name": "x.pdb", "content_b64": "…"} or a stored artifact, {"$artifact": {"id": "art-…", "port": "…"}}. Files are up to 25 MiB each.

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "mechanism_id": "gri30",
        "fuel": {"CH4": 1},
        "oxidizer": {"O2": 0.21, "N2": 0.79},
        "fuel_temperature_k": 300,
        "oxidizer_temperature_k": 300,
        "pressure_pa": 101325,
        "width_m": 0.02,
        "strain_rates": [10, 30, 100, 200, 300, "… 3 more"],
        "mixture_fraction": "bilger",
        "progress_variable": {"CO2": 1, "H2O": 1, "CO": 1, "H2": 1},
        "pdf_table": {"enabled": True, "n_z": 21, "n_variance": 6},
    }
    
    estimate = client.jobs.estimate(job_type="flamelet-table", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-flamelet-table-run",
        job_type="flamelet-table",
        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

    • Kinetic mechanism · optionalYAML, CHEMKIN

    Workflow outputs

    • ArchiveZIP
    • TableCSV
    • TableCSV
    • TableCSV