This guide documents the thermal conductivity calculation methods available in NeqSim for gas, liquid, and multiphase systems.
Table of Contents
Overview
Thermal conductivity ($\lambda$ or $k$) describes a material’s ability to conduct heat. It is essential for:
- Heat exchanger design
- Pipeline heat loss calculations
- Thermal simulation of process equipment
Units:
- Default output: W/(m·K) (Watts per meter-Kelvin)
Setting a conductivity model:
fluid.getPhase("gas").getPhysicalProperties().setConductivityModel("Chung");
fluid.getPhase("oil").getPhysicalProperties().setConductivityModel("PFCT");
fluid.getPhase("gas").initPhysicalProperties();
fluid.getPhase("oil").initPhysicalProperties();
Select the model after the flash and initial property calculation, then reinitialize each changed
phase as shown. Model keys are case-sensitive. Unsupported keys currently fall back to PFCT, so
use one of the documented keys and cover model selection in tests.
Available Models
PFCT (Pedersen)
The Pedersen Corresponding States method uses methane as a reference fluid with molecular weight corrections.
Class: PFCTConductivityMethodMod86
Principle: Uses corresponding states with methane as reference:
\[\lambda_{mix} = \lambda_{ref}(T_0, P_0) \cdot \frac{\alpha_{mix}}{\alpha_0}\]where:
- $\lambda_{ref}$ is methane thermal conductivity at corresponding conditions
- $T_0, P_0$ are the corresponding temperature and pressure
- $\alpha$ are molecular weight correction factors
Corresponding state mapping: \(T_0 = T \cdot \frac{T_{c,ref}}{T_{c,mix}} \cdot \frac{\alpha_0}{\alpha_{mix}}\)
\[P_0 = P \cdot \frac{P_{c,ref}}{P_{c,mix}} \cdot \frac{\alpha_0}{\alpha_{mix}}\]Applicable phases: Gas, Oil
Best for:
- Petroleum mixtures
- Wide pressure-temperature ranges
- Systems with characterized fractions
Usage:
fluid.getPhase("oil").getPhysicalProperties().setConductivityModel("PFCT");
Chung Method
The Chung method (1988) is a corresponding states correlation based on kinetic theory.
Class: ChungConductivityMethod
Equation (dilute gas): \(\lambda_0 = \frac{7.452 \eta_0 \Psi}{M}\)
where:
- $\eta_0$ is the dilute gas viscosity
- $\Psi$ is a correction factor
- $M$ is molar mass
The correction factor accounts for:
- Polyatomic structure
- Polar effects
- Association
Dense fluid correction: \(\lambda = \lambda_0 \cdot G_2(T^*, \rho^*) + B_1 q B_2\)
where $G_2$ and $B$ terms account for density effects.
Applicable phases: Primarily gas phase
Best for:
- Gas-phase calculations
- Polar gases
- As baseline correlation
Usage:
fluid.getPhase("gas").getPhysicalProperties().setConductivityModel("Chung");
fluid.getPhase("gas").initPhysicalProperties();
Chung Dense Method
Chung-dense implements the full Chung et al. correlation, including dilute-gas and
density-dependent contributions. Use it when pressure or liquid-like density makes the dilute
Chung model insufficient.
The implementation uses Chung’s conformal mixture rules with unity binary combining factors, including the effective transport molar mass, critical volume, critical temperature, acentric factor, dipole and association terms. The actual mixture molar mass converts EOS mass density to molar density. Ideal-gas molar heat capacity is independent of the total phase amount. The association input is the component’s viscosity correction factor, not its CPA association volume.
The dense equation is evaluated consistently in SI:
\[\lambda = \frac{31.2\eta_0\Psi}{M}\left(H_2^{-1}+B_6 y\right)+q B_7 y^2\sqrt{T_r}H_2\]Here $M$ is in kg/mol, $\eta_0$ in Pa s, $y=\rho_{mol}V_c/6$ with matched volume units, $T_r=T/T_c$, and $q=3.586\times10^{-3}\sqrt{T_c/M}/V_c^{2/3}$ for $V_c$ in cm³/mol. The collision integral uses $T^*=1.2593T_r$. Coefficients follow the original Chung table reproduced in Bouraba et al. (2017), Table A.2, including the negative association coefficient in $B_6$ and the original $B_7$ row. They differ from some reproductions of the fifth-edition table. This choice is explicit; it is not a claim that every later handbook coefficient table has been independently inspected.
Zero density uses the analytic limit; expm1 prevents cancellation at very low density.
Nonfinite inputs, nonpositive required constants, unnormalized compositions, negative density,
$y\geq1$, and $T^*$ outside 0.3–100 are rejected. There is no critical enhancement;
these bounds are mathematical/domain guards, not a guarantee of accuracy for every fluid
within them. Use a qualified reference-fluid model for near-critical design calculations.
This corrects the earlier amount-dependent heat capacity, reduced temperature, mixture rules,
transport-association input, mixed CGS/SI conversion and missing $B_7$ dense term.
Only explicitly selected Chung-dense calculations change. PFCT defaults are unchanged.
Frozen equation checks, amount invariance and lifecycle regressions are described in the
method audit.
Class: ChungDenseConductivityMethod
Applicable phases: Gas and liquid
Usage:
fluid.getPhase("gas").getPhysicalProperties().setConductivityModel("Chung-dense");
fluid.getPhase("gas").initPhysicalProperties();
Polynomial Correlation
Uses component-specific polynomial coefficients from the database.
Class: Conductivity (in liquid package)
Equation: \(\lambda = A + BT + CT^2\)
where A, B, C are component-specific parameters.
Database columns: LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3
Mixing rule: \(\lambda_{mix} = \sum_i x_i \lambda_i\)
Applicable phases: Liquid
Best for:
- Pure components with available parameters
- Simple liquid mixtures
Usage:
fluid.getPhase("oil").getPhysicalProperties().setConductivityModel("polynom");
fluid.getPhase("oil").initPhysicalProperties();
CO2 Reference
Pure-CO₂ thermal conductivity model implemented as a polynomial fit to reference data generated
with CoolProp. The implementation is checked against NIST values in
CO2ConductivityMethodTest and uses Span-Wagner properties if a usable density is unavailable.
Class: CO2ConductivityMethod
Constraint: The phase must contain pure CO₂. The implementation rejects mixtures; do not use
CO2Model for CO₂-rich multicomponent streams. NeqSim does not enforce a temperature-pressure
validity envelope for this polynomial, so validate extrapolated states independently.
Best for:
- Pure CO₂ systems
- CCS applications
- Reference calculations
Usage:
fluid.getPhase("gas").getPhysicalProperties().setConductivityModel("CO2Model");
fluid.getPhase("gas").initPhysicalProperties();
Filippov Liquid Mixing and Pressure Factor
The Filippov key combines database liquid polynomials using mass fractions. It is also
the built-in aqueous conductivity model in the explicitly selected GLYCOL, AMINE and
CO2WATER model sets:
Its enabled-by-default pressure option now evaluates the complete Missenard-derived Danner/Daubert expression published in the AFT CHEMPAK manual, section 8.6.5:
\[F=0.98+0.0079P_rT_r^{1.4}+0.63T_r^{1.2}\frac{P_r}{30+P_r}\]Here $T_r=T/\sum_i x_iT_{c,i}$ and $P_r=P/\sum_i x_iP_{c,i}$; T is K, and P and Pc use the same pressure unit (internally bara). The output is $k=k_0\max(1,F)$ in W/(m K). The previously implemented square-root factor omitted the rational term.
The unity floor and bypass at $T_r\geq0.95$ or $P_r<0.01$ are retained implementation choices, not accuracy bounds supplied by CHEMPAK. Pseudo-critical data below 1e-10 (K or bara) bypasses the correction; this does not qualify the uncorrected polynomials. Nonfinite pseudo-critical data returns NaN; nonfinite state values can also yield NaN. The cutoff at 0.95 is discontinuous. No saturation pressure is calculated or subtracted.
This qualifies implementation of that analytic derived expression, not the original Missenard tabulated-Q variant or sixth-edition conformance. The mixture pseudo-critical extension and database polynomial fits need independent physical validation. Do not infer an uncertainty or a design validity envelope from the numerical tests. Default PFCT selection is unchanged. The specialized sets above receive this correction automatically for their aqueous phases; their physical accuracy is not established by the route tests. For positive Tr below 0.95 and Pr at most 0.5, the full factor is below 0.994, so the unity floor can return one without evaluating a fractional power. Higher-pressure calculations use one fifth root to supply both temperature powers.
The following example, including the disable switch, executes in
FilippovConductivityMethodTest.guideExampleAndPressureUnits:
SystemInterface fluid = new SystemSrkEos(350, 100);
fluid.addComponent("n-hexane", 1);
fluid.setMixingRule("classic");
new ThermodynamicOperations(fluid).TPflash();
fluid.initProperties();
fluid.getPhase(0).getPhysicalProperties().setConductivityModel("Filippov");
fluid.getPhase(0).initPhysicalProperties();
double corrected = fluid.getPhase(0).getThermalConductivity("W/mK");
FilippovConductivityMethod model = (FilippovConductivityMethod)
fluid.getPhase(0).getPhysicalProperties().getConductivityModel();
model.setUsePressureCorrection(false);
fluid.getPhase(0).initPhysicalProperties();
double uncorrected = fluid.getPhase(0).getThermalConductivity("W/mK");
Use the existing Java phase/property interfaces (or the same objects through the Python bridge). No detached conductivity implementation or new invocation protocol is introduced. See the method audit for frozen equation values and exclusions.
Model Selection Guide
| Application | Recommended Model | Notes |
|---|---|---|
| Petroleum mixtures | PFCT | Corresponding states with MW correction |
| Low-density gas | Chung | Dilute-gas contribution |
| Dense gas or liquid | Chung-dense | Includes density-dependent contribution |
| Simple liquid mixtures | polynom | Uses database parameters |
| Pure CO₂ | CO2Model | Rejects mixtures; validate extrapolation |
| Wide P-T range | PFCT | Robust extrapolation |
| Polar systems | Chung | Includes polar corrections |
Additional implemented keys are friction theory, WaterModel, and H2Model.
They are specialized models and should be selected only with a composition and phase appropriate
to the underlying correlation.
Usage Examples
Basic Conductivity Calculation
import neqsim.thermo.system.SystemSrkEos;
import neqsim.thermo.system.SystemInterface;
import neqsim.thermodynamicoperations.ThermodynamicOperations;
// Create and flash fluid
SystemInterface fluid = new SystemSrkEos(350.0, 50.0);
fluid.addComponent("methane", 0.85);
fluid.addComponent("ethane", 0.10);
fluid.addComponent("propane", 0.05);
fluid.setMixingRule("classic");
ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();
// Initialize physical properties
fluid.initPhysicalProperties();
// Get thermal conductivity
double gasConductivity = fluid.getPhase("gas").getThermalConductivity("W/mK");
if (!(gasConductivity > 0.0)) {
throw new IllegalStateException("Expected positive gas thermal conductivity");
}
Comparing Conductivity Models
String[] models = {"PFCT", "Chung-dense"};
double[] conductivities = new double[models.length];
for (int i = 0; i < models.length; i++) {
SystemInterface fluid = new SystemSrkEos(350.0, 50.0);
fluid.addComponent("methane", 0.85);
fluid.addComponent("ethane", 0.10);
fluid.addComponent("propane", 0.05);
fluid.setMixingRule("classic");
ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();
fluid.initProperties();
fluid.getPhase("gas").getPhysicalProperties().setConductivityModel(models[i]);
fluid.getPhase("gas").initPhysicalProperties();
conductivities[i] = fluid.getPhase("gas").getThermalConductivity("W/mK");
}
Conductivity vs Pressure
SystemInterface baseFluid = new SystemSrkEos(350.0, 10.0);
baseFluid.addComponent("methane", 1.0);
baseFluid.setMixingRule("classic");
double[] pressuresBara = {10, 50, 100, 150, 200};
double[] conductivities = new double[pressuresBara.length];
for (int i = 0; i < pressuresBara.length; i++) {
SystemInterface fluid = baseFluid.clone();
fluid.setPressure(pressuresBara[i], "bara");
ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();
fluid.initPhysicalProperties();
conductivities[i] = fluid.getPhase(0).getThermalConductivity("W/mK");
}
Two-Phase System
SystemInterface fluid = new SystemSrkEos(280.0, 30.0);
fluid.addComponent("methane", 0.5);
fluid.addComponent("n-pentane", 0.5);
fluid.setMixingRule("classic");
fluid.setMultiPhaseCheck(true);
ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();
fluid.initPhysicalProperties();
double gasConductivity = fluid.hasPhaseType("gas")
? fluid.getPhase("gas").getThermalConductivity("W/mK") : Double.NaN;
double oilConductivity = fluid.hasPhaseType("oil")
? fluid.getPhase("oil").getThermalConductivity("W/mK") : Double.NaN;
Physical Background
Kinetic Theory (Dilute Gas)
For dilute gases, thermal conductivity is related to viscosity through:
\[\lambda = \frac{f \cdot \eta \cdot C_v}{M}\]where:
- $f$ is the Eucken factor (typically 1.32 for monoatomic, 1.77 for polyatomic)
- $\eta$ is dynamic viscosity
- $C_v$ is heat capacity at constant volume
- $M$ is molar mass
Mixing Rules
For mixtures, thermal conductivity is typically calculated using:
Mass fraction weighting: \(\lambda_{mix} = \sum_i w_i \lambda_i\)
Molar weighting with interaction: \(\lambda_{mix} = \sum_i \sum_j \frac{x_i x_j \lambda_{ij}}{\sum_k x_k \phi_{ik}}\)
where $\lambda_{ij}$ is a combining rule and $\phi_{ik}$ is an interaction factor.
Pressure Effects
Thermal conductivity increases with pressure, particularly in dense fluids:
- At low pressures: $\lambda \approx \lambda_0(T)$
- At high pressures: $\lambda = \lambda_0 + \Delta\lambda(\rho)$
The PFCT method accounts for this through corresponding states mapping to reference fluid behavior.
Temperature and Pressure Dependence
Gases
- Conductivity increases with temperature (~$T^{0.8}$)
- Weak pressure dependence at low-moderate pressures
- Significant increase at high pressures (dense gas)
Liquids
- Conductivity typically decreases with temperature
- Slight increase with pressure
- Water is an exception (increases with T up to ~130°C)
References
- Pedersen, K.S., et al. (1989). Thermal Conductivity of Crude Oils. Chem. Eng. Sci.
- Chung, T.H., et al. (1988). Generalized Multiparameter Correlation. I&EC Res.
- Huber, M.L., et al. (2016). New International Formulation for the Thermal Conductivity of CO₂. J. Phys. Chem. Ref. Data.
- Scalabrin, G., et al. (2006). A Reference Multiparameter Thermal Conductivity Equation for Carbon Dioxide. J. Phys. Chem. Ref. Data.
- Poling, B.E., et al. (2001). The Properties of Gases and Liquids, 5th Ed.