Problem When Setting Liquid Phase Species

9 views
Skip to first unread message

james jery

unread,
Mar 29, 2026, 11:11:30 AM (3 days ago) Mar 29
to Cantera Users' Group
Hi all! I met an issue when defining liquid-phase species in Cantera. I attempted to input species concentrations as mole fractions, but the results were nonsensical: Initial - Liquid: {'H2O(L)': 1.245, 'H+': 2.24e-13, 'OH-': 0.0336, 'NH3(aq)': 0.0449, 'NH4+': 0.0336} The solvent H2O(L) was intended to be set at 55.51 mol/L (pure water), yet it was interpreted as 1.24 mol/L. Since H2O(L) serves as the solvent providing protons and hydroxide ions and occasionally participates in reactions, this concentration error is problematic.
My hypothesis: Does this relate to Cantera's internal calculation mechanism? Specifically, does the solver treat these inputs as numerical concentrations requiring conversion, rather than direct mole fractions? If my hypothesis holds, would I need to define a dedicated H2O(L) species containing only the solvent to obtain solvent concentrations at different temperatures for conversion purposes?
Could anyone help me out?
reactor_NH3_H2O.py
NH3_H2O.yaml

Ray Speth

unread,
Mar 30, 2026, 10:08:48 AM (2 days ago) Mar 30
to Cantera Users' Group

Hi,

What version of Cantera are you using? Using the latest version of Cantera (3.2.0), I get the following output for the “initial” concentrations:

Initial - Liquid: {‘H2O(L)’: np.float64(48.10052320274122), ‘H+’: np.float64(8.665199640198382e-12), ‘OH-‘: np.float64(1.2997799460297574), ‘NH3(aq)’: np.float64(1.7330399280396767), ‘NH4+’: np.float64(1.2997799460297574)}

Note that the water in the solution cannot have the same concentration as pure water (55.51 mol/L) because you have assumed finite molar volumes for the dissolved species. Also, note that that particular molar concentration cannot be met at the specified temperature (80 C) where the density of water is less than 1 kg/l.

I don’t see anywhere that the concentration of water is being “interpreted” as 1.24 mol/l.

When you specify mole fractions that don’t add up to 1.0, Cantera automatically normalizes them to satisfy this constraint. It does not assume they correspond to volume-based concentrations or any other quantity.

Regards,
Ray

Reply all
Reply to author
Forward
0 new messages