Skip to main content
Docs

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

    Tools · Fluids & Thermodynamics

    CoolProp

    Real-fluid thermophysical properties from open-source CoolProp — water and steam, refrigerants, and incompressible mixtures — as a one-state lookup or as tables.

    Updated October 1, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    CoolProp computes thermophysical properties of real fluids from reference-quality Helmholtz equations of state: steam tables, refrigerants, common gases and liquids, and incompressible mixtures such as brines and glycols. It is the real-fluid counterpart to Cantera's ideal-gas kinetics. It uses the open-source CoolProp library only; NIST REFPROP isn't available.

    For a walkthrough, see the thermodynamics guide.

    Two ways to run it

    You needUseBilled as
    One state, or one saturation point, right awaythe coolprop utility (POST /api/v1/utils/submit)A monthly utility call
    A grid, a curve, or many statesthe coolprop job, belowWallet, by runtime

    In the app, these are the Lookup and Tables tabs. The utility takes a fluid, one or two state inputs, and an optional properties list; its fields are in Utilities.

    Units and inputs

    Everything is SI: temperature T in K, pressure P in Pa, enthalpy H in J/kg, entropy S in J/kg/K, density D in kg/m³, and quality Q (vapor fraction) from 0 to 1. A state needs two of these, such as T and P, or P and Q for saturated liquid or vapor. A utility lookup with only T or only P returns the saturation point.

    • fluid: any name CoolProp accepts, such as Water, R134a, or CarbonDioxide. Unknown names fail.
    • backend: HEOS (default) for pure and pseudo-pure fluids, or INCOMP for incompressible liquids and solutions.
    • properties: up to 32 outputs. The default is T, P, D, H, S, U, Cpmass, viscosity, conductivity, and Q.

    Job modes

    modeproblem_specResult
    tp_gridt_min, t_max, n_t, p_min, p_max, n_pA temperature–pressure table, up to 10,000 states
    saturationalong (T or P), min, max, nSaturated liquid and vapor along the curve, up to 2,000 points
    isobarp, t_min, t_max, n_tProperties against T at fixed P
    isothermt, p_min, p_max, n_pProperties against P at fixed T
    batch_statesstates: rows with two state inputs and an optional fluidA table of up to 5,000 states, possibly of different fluids

    fluid is required except in batch_states, where each row can name its own.

    Outputs

    FileContents
    properties.csvOne row per state: fluid, the inputs, each requested property, and error (blank unless that state failed)
    summary.jsonThe mode, fluid, units, properties, and counts of requested, succeeded, and failed states

    A state that CoolProp can't evaluate, for example one outside the fluid's valid range, gets an error message instead of failing the job.

    VLE / Flash for mixtures in vapor–liquid equilibrium, and Cantera for reacting gases.

    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.

    CoolProp coolprop

    Job type
    coolprop
    Hardware
    cpu (default)
    Typical runtime
    5 min on CPU

    Payload

    Payload fields
    FieldTypeDescription
    moderequiredstring

    One of: "tp_grid", "saturation", "isobar", "isotherm", "batch_states"

    fluidstring

    Limits: min length 1, max length 128

    backendstring

    One of: "HEOS", "INCOMP"

    problem_specrequiredobject
    problem_spec.t_minnumber
    problem_spec.t_maxnumber
    problem_spec.n_tinteger

    Limits: ≥ 2

    problem_spec.p_minnumber
    problem_spec.p_maxnumber
    problem_spec.n_pinteger

    Limits: ≥ 2

    problem_spec.tnumber
    problem_spec.pnumber
    problem_spec.alongstring

    One of: "T", "P"

    problem_spec.minnumber
    problem_spec.maxnumber
    problem_spec.ninteger

    Limits: ≥ 2

    problem_spec.states[]object[]

    Limits: min items 1

    properties[]string[]

    Limits: min items 1

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "mode": "tp_grid",
        "fluid": "Water",
        "backend": "HEOS",
        "problem_spec": {
            "t_min": 300,
            "t_max": 320,
            "n_t": 3,
            "p_min": 101325,
            "p_max": 202650,
            "n_p": 3,
        },
    }
    
    estimate = client.jobs.estimate(job_type="coolprop", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-coolprop-run",
        job_type="coolprop",
        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

    None

    Workflow outputs

    • ArchiveZIP
    • TableCSV