Skip to content

Thermodynamic and Transport Properties

Overview

FLINT computes thermodynamic and transport properties through pre-tabulated data, covering two complementary models:

Ideal gas — a mixture of \(N_s\) thermally perfect gases obeying the thermal equation of state

\[ p = \rho R_\text{mix} T \]

where \(p\) is pressure, \(\rho\) is density, \(R_\text{mix}\) is the mixture gas constant, and \(T\) is temperature. All properties depend on temperature only and are evaluated by 1D interpolation of per-species tables. An optional Cantera [1] backend can replace the native tables when advanced kinetic models or validation data are needed.

Real fluid — a single-component fluid where the ideal-gas equation of state is no longer valid (near the critical point, across phase boundaries, or in supercritical regimes). Properties are fully tabulated as functions of pressure and specific enthalpy on a uniform 2D \((p, h)\) grid and retrieved by bilinear interpolation.

Both models share the same module interface; the choice between them is made at load time through the appropriate initialisation call. In addition to thermodynamic and transport properties, both models expose the same primitive/conservative variable conversion routines for CFD applications.


Property Interpolation

All FLINT properties are pre-tabulated and retrieved by fast table lookups rather than polynomial evaluations at runtime.

Ideal Gas — 1D Temperature Interpolation

For each species, properties are stored at integer temperatures \(T_i\). Given a requested temperature \(T \in [T_i, T_{i+1}]\), any property \(f\) is obtained by linear interpolation:

\[ f(T) = f(T_i) + \big(f(T_{i+1}) - f(T_i)\big)\cdot(T - T_i) \]

where the integer spacing \(T_{i+1} - T_i = 1\) K has been assumed.

Real Fluid — 2D Bilinear Interpolation

For real fluids, properties depend on both pressure and enthalpy. The tables are laid out on a uniform \((p, h)\) grid with spacing \(\Delta p\) and \(\Delta h\), starting from \(p_\text{min}\) and \(h_\text{min}\). Given a state \((p, h)\), the surrounding cell indices are

\[ i = \left\lfloor \frac{p - p_\text{min}}{\Delta p} \right\rfloor, \qquad j = \left\lfloor \frac{h - h_\text{min}}{\Delta h} \right\rfloor \]

and any tabulated property \(f\) is reconstructed as

\[ f(p,h) = A + B\,\delta p + C\,\delta h + D\,\delta p\,\delta h \]

where \(\delta p = p - p_\text{min} - i\,\Delta p\), \(\delta h = h - h_\text{min} - j\,\Delta h\), and

\[ \begin{aligned} A &= f_{i,j} \\ B &= \frac{f_{i+1,j} - f_{i,j}}{\Delta p} \\ C &= \frac{f_{i,j+1} - f_{i,j}}{\Delta h} \\ D &= \frac{f_{i,j} + f_{i+1,j+1} - f_{i+1,j} - f_{i,j+1}}{\Delta p\,\Delta h} \end{aligned} \]

The same scheme is applied to the \((p, T)\) grid when retrieving enthalpy from pressure and temperature, which is needed when initialising from primitive variables.


Thermodynamic Properties

Ideal Gas Mixtures

Once individual species properties are known, mixture thermodynamic quantities are computed using mass-weighted averaging [2,3].

Mixture density: $$ \rho = \sum_{s=1}^{N_s}\rho_s $$

Mixture gas constant: $$ R_\text{mix} = \sum_{s=1}^{N_s} Y_s R_s = \sum_{s=1}^{N_s} \frac{\rho_s}{\rho} R_s $$

where \(Y_s = \rho_s/\rho\) is the mass fraction of species \(s\), and \(R_s = R_u/M_s\) is the specific gas constant (\(R_u = 8314.46\) J/(kmol·K) is the universal gas constant and \(M_s\) is the molecular weight).

Mixture specific heat capacity at constant pressure: $$ c_{p,\text{mix}} = \sum_{s=1}^{N_s} Y_s c_{p,s} $$

Specific heat capacity at constant volume: $$ c_{v,\text{mix}} = c_{p,\text{mix}} - R_\text{mix} $$

Heat capacity ratio (specific heat ratio): $$ \gamma = \frac{c_{p,\text{mix}}}{c_{v,\text{mix}}} = \frac{c_{p,\text{mix}}}{c_{p,\text{mix}} - R_\text{mix}} $$

Speed of sound: $$ a = \sqrt{\gamma R_\text{mix} T} $$

Mixture specific enthalpy: $$ h(\rho_s, T) = \sum_{s=1}^{N_s} Y_s h_s(T) $$

Total specific enthalpy (including kinetic energy): $$ h_0(\rho_s, T, \mathbf{u}) = h(\rho_s, T) + \frac{1}{2} |\mathbf{u}|^2 $$

where \(\mathbf{u}\) is the velocity vector.

Mixture specific internal energy: $$ e(\rho_s, T) = h(\rho_s, T) - \frac{p}{\rho} = \sum_{s=1}^{N_s} Y_s h_s(T) - R_\text{mix} T $$

Total specific internal energy: $$ e_0(\rho_s, T, \mathbf{u}) = e(\rho_s, T) + \frac{1}{2} |\mathbf{u}|^2 $$

Real Fluid

Because the ideal-gas equation of state breaks down near the critical point, across phase boundaries, and in supercritical regimes, the real fluid model does not assume any analytical form for the equation of state. Instead, all thermodynamic quantities are treated as general functions of pressure and specific enthalpy,

\[ f = f(p, h), \]

and retrieved from pre-tabulated 2D grids (see Property Interpolation above for the bilinear interpolation scheme). The variables tabulated on the \((p, h)\) mesh are:

Property Symbol Unit
Density \(\rho\) kg/m³
Temperature \(T\) K
Density deriv. at const. \(p\) \((\partial\rho/\partial T)_p\) kg/(m³·K)
Heat capacity at const. \(p\) \(c_p = (\partial h/\partial T)_p\) J/(kg·K)
Specific entropy \(s\) J/(kg·K)
Density deriv. at const. \(h\) \((\partial\rho/\partial p)_h\) kg/(m³·Pa)
Speed of sound \(a\) m/s

Current scope

The real fluid model supports a single-component fluid. Multi-species real fluid mixtures are not yet implemented.


Transport Properties

Ideal Gas Mixtures — Wilke's Mixing Rule

Once individual species transport properties are known, mixture transport properties are computed using Wilke's mixing rule [4,5], which accounts for molecular interactions between different species.

Wilke's interaction parameter: $$ \phi_{ij} = \frac{\left[1 + \left(\mu_i/\mu_j\right)^{1/2} \left(M_j/M_i\right)^{1/4}\right]^2}{\sqrt{8 \left(1 + M_i/M_j\right)}} $$

where \(\mu_i\) is the dynamic viscosity of species \(i\), \(M_i\) is the molecular weight of species \(i\), and \(X_i\) is the mole fraction of species \(i\).

Mixture dynamic viscosity: $$ \mu_\text{mix} = \sum_{i=1}^{N_s} \frac{X_i \mu_i}{\sum_{j=1}^{N_s} X_j \phi_{ij}} $$

Mixture thermal conductivity: $$ k_\text{mix} = \sum_{i=1}^{N_s} \frac{X_i k_i}{\sum_{j=1}^{N_s} X_j \phi_{ij}} $$

where \(k_i\) is the thermal conductivity of species \(i\).

Note on mole fractions: The mole fraction \(X_s\) is related to mass fraction \(Y_s\) by: $$ X_s = \frac{Y_s / M_s}{\sum_{j=1}^{N_s} Y_j / M_j} $$

Ideal Gas Mixtures — Species Diffusion

FLINT provides two closures for the species mass-diffusion coefficient \(D_s\) that enters Fick's law, \(\mathbf{j}_s = -\rho D_s \nabla Y_s\).

Constant Schmidt number. The simplest closure assigns every species the same diffusivity, tied to the mixture viscosity through a prescribed laminar Schmidt number \(Sc\):

\[ D_s = \frac{\mu_\text{mix}}{\rho\,Sc}, \qquad s = 1,\dots,N_s . \]

This is inexpensive and adequate when differential diffusion is unimportant, but it cannot represent species diffusing at different rates.

Mixture-averaged multicomponent diffusion. For differential diffusion, FLINT computes a per-species diffusivity from the binary (pair) diffusion coefficients using the Curtiss–Hirschfelder mixture-averaged approximation [3,7]:

\[ D_s = \frac{1 - X_s}{\displaystyle\sum_{j \ne s} X_j / \mathcal{D}_{sj}} \]

where \(\mathcal{D}_{sj}\) is the binary diffusion coefficient of the pair \((s,j)\). The binary coefficients depend on temperature and are pre-tabulated per species pair (see diffusion.dat). Because \(\mathcal{D}_{sj} = \mathcal{D}_{js}\), only the \(N_s(N_s-1)/2\) unique pairs are stored; each is interpolated once and reused for both partners.

Near-pure mixtures

As \(X_s \to 1\) the expression becomes the indeterminate \(0/0\). FLINT falls back to the mean binary diffusivity of species \(s\). This limit is harmless: \(\nabla Y_s \to 0\) there, and the species flux is in any case closed by the mass-conservation correction \(\sum_s \mathbf{j}_s = 0\) applied by the host solver.

Pressure dependence

Binary diffusion coefficients scale as \(\mathcal{D}_{sj} \propto 1/p\) (exactly, from kinetic theory). The table stores temperature-only coefficients at a reference pressure \(p_\text{ref}\) embedded in the diffusion.dat TITLE; FLINT rescales them to the local pressure \(p\) with the uniform factor \(p_\text{ref}/p\), so \(D_s\) is correct at any pressure: $$ D_s(T,p) = \frac{p_\text{ref}}{p}\,D_s(T,\,p_\text{ref}) . $$

Real Fluid

Dynamic viscosity \(\mu\) and thermal conductivity \(k\) for a real fluid are pre-tabulated on the same uniform \((p, h)\) grid as the thermodynamic properties and retrieved with the same bilinear interpolation scheme.


Primitive ↔ Conservative Variable Conversion

For CFD applications, conversions between primitive variables (density, velocity, pressure) and conservative variables (conserved mass, momentum, energy) are essential [6].

Primitive → Conservative

\[ \begin{aligned} (\rho_s)^\text{cons} &= (\rho_s)^\text{prim} \\ (\rho \mathbf{u})^\text{cons} &= \rho^\text{prim} \mathbf{u}^\text{prim} \\ (\rho e_0)^\text{cons} &= \rho^\text{prim} \left[ e(\rho_s^\text{prim}, T^\text{prim}) + \frac{1}{2} |\mathbf{u}^\text{prim}|^2 \right] \end{aligned} \]

Conservative → Primitive

The conversion from conservative to primitive variables requires solving for temperature \(T\) iteratively:

  1. Extract species densities: \(\rho_s = (\rho_s)^\text{cons}\)
  2. Compute total density: \(\rho = \sum_{s=1}^{N_s} \rho_s\)
  3. Compute velocity: \(\mathbf{u} = (\rho \mathbf{u})^\text{cons} / \rho\)
  4. Compute specific internal energy: \(e = (\rho e_0)^\text{cons}/\rho - \frac{1}{2}|\mathbf{u}|^2\)
  5. Solve for temperature using Newton–Raphson iteration: $$ e(\rho_s, T) = \sum_{s=1}^{N_s} Y_s h_s(T) - R_\text{mix}(Y_s) T $$ Find \(T\) such that \(e(\rho_s, T) = e_\text{known}\)
  6. Compute pressure: \(p = \rho R_\text{mix} T\)

References

[1] Cantera Development Team. Cantera: An Object-oriented Software Toolkit for Chemical Kinetics, Thermodynamics, and Transport Processes. https://cantera.org, Version 3.0+, 2024.

[2] Poinsot, T., and Veynante, D. Theoretical and Numerical Combustion, 3rd edition. Published by the authors, 2012.

[3] Kee, R. J., Coltrin, M. E., and Glarborg, P. Chemically Reacting Flow: Theory and Practice, 2nd edition. John Wiley & Sons, 2003.

[4] Wilke, C. R. "A Viscosity Equation for Gas Mixtures." The Journal of Chemical Physics, vol. 18, no. 4, 1950, pp. 517-519. https://doi.org/10.1063/1.1747673

[5] Bird, R. B., Stewart, W. E., and Lightfoot, E. N. Transport Phenomena, 2nd edition. John Wiley & Sons, 2002.

[6] Blazek, J. Computational Fluid Dynamics: Principles and Applications, 3rd edition. Butterworth-Heinemann, 2015.

[7] Hirschfelder, J. O., Curtiss, C. F., and Bird, R. B. Molecular Theory of Gases and Liquids. John Wiley & Sons, 1954.