IS_COMBUSTIBLE
This function determines whether a chemical should be treated as combustible by combining a CAS-based lookup with the supplied elemental composition. It is useful when preparing combustion balances because some compounds are structurally incapable of releasing further heat under complete oxidation, while others can be forced to behave as inert with the reactive flag.
In practical terms, the decision is a logical classification rather than a thermodynamic calculation: a species is treated as combustible only when its identity and composition indicate that further oxidation is possible and the wrapper has not been instructed to mark it as non-reactive.
Excel Usage
=IS_COMBUSTIBLE(CAS, atoms, reactive)
CAS(str, required): CAS number.atoms(str, required): Dictionary of atoms and their counts.reactive(bool, optional, default: true): Default True. Set false to mark as non-reactive.
Returns (bool): True if combustible, else False.
Example 1: Check if methane is combustible
Inputs:
| CAS | atoms |
|---|---|
| 74-82-8 | {“C”: 1, “H”: 4} |
Excel formula:
=IS_COMBUSTIBLE("74-82-8", "{"C": 1, "H": 4}")
Expected output:
true
Example 2: Carbon dioxide is not combustible
Inputs:
| CAS | atoms |
|---|---|
| 124-38-9 | {“C”: 1, “O”: 2} |
Excel formula:
=IS_COMBUSTIBLE("124-38-9", "{"C": 1, "O": 2}")
Expected output:
false
Example 3: Reactive flag can mark a fuel as inert
Inputs:
| CAS | atoms | reactive |
|---|---|---|
| 74-82-8 | {“C”: 1, “H”: 4} | false |
Excel formula:
=IS_COMBUSTIBLE("74-82-8", "{"C": 1, "H": 4}", FALSE)
Expected output:
false
Python Code
Show Code
import json
from chemicals.combustion import is_combustible as chemicals_is_combustible
def is_combustible(CAS, atoms, reactive=True):
"""
Checks if a chemical is combustible based on its CAS and atoms.
See: https://chemicals.readthedocs.io/chemicals.combustion.html
This example function is provided as-is without any representation of accuracy.
Args:
CAS (str): CAS number.
atoms (str): Dictionary of atoms and their counts.
reactive (bool, optional): Default True. Set false to mark as non-reactive. Default is True.
Returns:
bool: True if combustible, else False.
"""
try:
_a = json.loads(atoms) if isinstance(atoms, str) else atoms
r = True if reactive is None else reactive
return bool(chemicals_is_combustible(CAS, _a, reactive=r))
except Exception as e:
return f"Error: {str(e)}"