16  Materials

Equation of state, specific heat, and transport properties

16.1 What this setting is

Materials define how a fluid or solid responds to changes in pressure and temperature. Each domain names one material through domains[].material. The equation of state and specific heat determine thermodynamic behavior; viscosity and thermal conductivity determine transport in viscous flow.

16.2 Configure in the GUI

Wake CFD Desktop Material dialog for Air, a pure gas with an ideal-gas equation of state, gas constant 287.058 and molar mass 28.9647, and unchecked specific-heat, viscosity and thermal-conductivity groups
Figure 16.1: The Material dialog for a pure gas. The equation of state is always written; Specific Heat, Viscosity, and Thermal Conductivity are each enabled by their checkbox, and an unchecked group leaves the solver default in place.

Choose the material type first. For a pure fluid, the dialog has Equation of State, Specific Heat, Viscosity, and Thermal Conductivity groups; the last three can be collapsed. Changing a model replaces that group’s parameters with editable starting values. Changing the material type replaces the entire material’s model settings while preserving its name.

GUI control Input key What it configures
Name materials[].name Material name used by domains[].material.
Type materials[].type Pure fluid or solid. Mixture is listed but disabled.
Equation of State → Model materials[].eos.type Ideal gas, Peng–Robinson, or constant density, subject to solver and regime.
Equation of State → properties materials[].eos.* Gas constant/molar mass, critical properties, or constant density.
Specific Heat → Model and properties materials[].specific_heat.* Constant Cp or NASA polynomial with low/high temperature ranges.
Viscosity → Model and properties materials[].viscosity.* Constant, Sutherland, or power-law dynamic viscosity.
Thermal Conductivity → Model and properties materials[].conductivity.* Constant k, Sutherland k(T), or constant Prandtl number.
Solid properties materials[].solid.* Thermal conductivity k, density, and Cp when Type is Solid.

The GUI currently enables Peng–Robinson only for compressible DBNS and NASA polynomial only for DBNS with an ideal-gas EOS. The solver also accepts these models with compressible PBNS through JSONC. They are unavailable with FR; both require a mixed or fp64 solver binary. Constant-density EOS requires models.regime: "incompressible". See JSONC examples after the key descriptions.

16.3 Material entry and type

materials is an array with at least one entry. Each entry requires name and type; a domain references the name. Unknown keys are rejected.

type Meaning
pure Single-species fluid.
solid Solid material for steady conjugate heat transfer (CHT).
mixture Reserved; rejected by validation.

The shorter keys eos and conductivity are used below. equation_of_state and thermal_conductivity are accepted aliases. The former eos.gamma and top-level material density keys are not accepted: γ comes from specific heat, and constant density belongs at eos.density.

16.4 Equation of state (EOS)

Key Unit Meaning
eos.type — ideal_gas (default), peng_robinson, or constant_density.
eos.gas_constant J/(kg·K) Gas-law R; default 287.058 if neither R nor molar mass is given.
eos.molar_mass g/mol Gas-law molar mass; if R is omitted, R = 8314.46 / molar_mass.
eos.T_critical K Required positive critical temperature for Peng–Robinson.
eos.P_critical Pa Required positive critical pressure for Peng–Robinson.
eos.acentric_factor — Peng–Robinson Pitzer factor; default 0.
eos.density kg/m³ Required positive ρ₀ for constant_density; rejected for gas-law EOS.

If both R and molar mass are set, R takes precedence; a disagreement greater than 0.1% produces a warning. With a constant specific heat, the heat-capacity ratio is derived as γ = Cp / (Cp − R); omitting Cp gives Cp = 3.5 R and γ = 1.4. A compressible gas-law EOS derives density from pressure and temperature.

constant_density must be paired with an incompressible PBNS or FR case and has no gas constant or critical properties. Peng–Robinson runs with compressible DBNS or PBNS, not FR or an fp32 binary.

16.4.1 Property table

eos.table can be used with Peng–Robinson or an ideal gas with NASA-polynomial specific heat. Its optional keys are:

Key Unit Meaning
eos.table.temperature K [T_min, T_max], with 0 < T_min < T_max.
eos.table.pressure Pa [P_min, P_max], with 0 < P_min < P_max.
eos.table.resolution — [n_density, n_energy]; integers from 8 to 2048, default [256, 256].

Omitted ranges are derived from operating states in the case. If the case has no usable pressure or temperature range, specify the corresponding table range explicitly. A constant-Cp ideal gas uses a closed-form EOS and rejects eos.table.

16.5 Specific heat

Key Unit Meaning
specific_heat.type — constant (default) or nasa_polynomial.
specific_heat.cp J/(kg·K) Constant Cp; for a gas, omitting it gives 3.5 R (about 1004.7 for default air).
specific_heat.low.temperature, specific_heat.high.temperature K Each range’s [T_min, T_max]; low maximum must meet high minimum.
specific_heat.low.coefficients, specific_heat.high.coefficients — Seven NASA coefficients [a1, …, a7] for each range.

For a gas, explicit constant Cp must exceed R. NASA polynomial requires both ranges, eos.type: "ideal_gas", and compressible DBNS or PBNS in a mixed or fp64 build. Do not supply specific_heat.cp with it. The solver uses a1–a5 for Cp(T); a6 and a7 are stored but their enthalpy/entropy datum constants are not used. Outside the supplied ranges, endpoint Cp is held constant; a table range that exceeds the polynomial range produces a warning.

For constant-density PBNS with conductivity.type: "constant_prandtl", give specific_heat.cp explicitly: there is no gas law from which to derive it.

16.6 Viscosity

The viscosity block defaults to constant with value: 1.716e-5 Pa·s. It uses one model at a time; parameters for another model are rejected.

viscosity.type Parameters and defaults Meaning
constant value: 1.716e-5 Pa·s Fixed dynamic viscosity μ.
sutherland mu_ref: 1.716e-5 Pa·s, T_ref: 273.15 K, S: 110.4 K μ = μ_ref · (T/T_ref)^1.5 · (T_ref+S)/(T+S).
power_law mu_ref: 1.716e-5 Pa·s, T_ref: 273.15 K, exponent: 1.5 μ = μ_ref · (T/T_ref)^exponent.

Viscous FR artificial-compressibility cases have no temperature state and require viscosity.type: "constant".

16.7 Thermal conductivity

The conductivity block defaults to constant with value: 0.0242 W/(m·K). It uses one model at a time.

conductivity.type Parameters and defaults Meaning
constant value: 0.0242 W/(m·K) Fixed thermal conductivity k.
sutherland k_ref: 0.0242 W/(m·K), T_ref: 273.15 K, S: 194 K Temperature-dependent k(T).
constant_prandtl prandtl: 0.72 Derives k(T) = μ(T) · Cp(T) / Pr.

With direct constant or sutherland conductivity, Pr is derived from the properties; it is not an additional input. prandtl belongs inside the conductivity block, not at the material’s top level. Turbulent Prandtl numbers belong under models.turbulence.sa or models.turbulence.sst, as described in Physical models.

16.8 Solid properties

For a solid material referenced by a solid domain, solid.k must be positive. Steady CHT uses k only; there solid.rho and solid.Cp set the pseudo-time scale alone. An unsteady run with a solid domain carries the thermal inertia ρC_p ∂T/∂t, so both must be given and positive, and run_control.time_stepping must be bdf1 or bdf2.

Key Unit Meaning
solid.k W/(m·K) Solid thermal conductivity.
solid.rho kg/m³ Solid density; reserved for unsteady conduction.
solid.Cp J/(kg·K) Solid specific heat; reserved for unsteady conduction.

16.9 Reserved inputs

materials[].reference, materials[].table_gen, and materials[].radiation have schema fields but no active material model. Supplying any of their fields is rejected by input validation, including boolean radiation fields set to false. Do not confuse material-local reference with the separate top-level Reference values.

16.10 JSONC examples

The GUI writes the same material keys for the controls it exposes. For a CLI case or a supported combination not enabled in the GUI, use JSONC. These are fragments; a runnable case also needs mesh, domains, models, and other settings.

An ideal gas with constant Cp and temperature-dependent viscosity:

{
  "materials": [{
    "name": "Air", "type": "pure",
    "eos": { "type": "ideal_gas", "gas_constant": 287.058 },
    "specific_heat": { "type": "constant", "cp": 1004.7 },
    "viscosity": { "type": "sutherland", "mu_ref": 1.716e-5, "T_ref": 273.15, "S": 110.4 },
    "conductivity": { "type": "constant_prandtl", "prandtl": 0.72 }
  }]
}

An incompressible PBNS material with constant density:

{
  "analysis": { "solver": "pbns", "dimension": 3 },
  "models": { "regime": "incompressible" },
  "materials": [{
    "name": "Water", "type": "pure",
    "eos": { "type": "constant_density", "density": 998.2 },
    "specific_heat": { "type": "constant", "cp": 4182.0 },
    "viscosity": { "type": "constant", "value": 1.0e-3 },
    "conductivity": { "type": "constant_prandtl", "prandtl": 7.0 }
  }]
}

Peng–Robinson for CO₂ (compressible DBNS or PBNS, mixed/fp64):

{
  "materials": [{
    "name": "CO2", "type": "pure",
    "eos": {
      "type": "peng_robinson", "molar_mass": 44.01,
      "T_critical": 304.13, "P_critical": 7.3773e6,
      "acentric_factor": 0.225,
      "table": { "resolution": [256, 256] }
    },
    "specific_heat": { "type": "constant", "cp": 850.0 }
  }]
}

NASA-polynomial specific heat for air (also usable with compressible PBNS through JSONC):

{
  "materials": [{
    "name": "Air", "type": "pure",
    "eos": { "type": "ideal_gas", "gas_constant": 287.87 },
    "specific_heat": {
      "type": "nasa_polynomial",
      "low": {
        "temperature": [200.0, 1000.0],
        "coefficients": [3.56839620, -6.78729429e-4, 1.55371476e-6,
                         -3.29937060e-12, -4.66395387e-13, -1.06234659e3, 3.71582965]
      },
      "high": {
        "temperature": [1000.0, 6000.0],
        "coefficients": [3.08792717, 1.24597184e-3, -4.23718945e-7,
                         6.74774789e-11, -3.97076972e-15, -9.95262755e2, 5.95960930]
      }
    }
  }]
}

A steady CHT solid material:

{
  "materials": [{
    "name": "Steel", "type": "solid",
    "solid": { "k": 16.0, "rho": 7800.0, "Cp": 500.0 }
  }]
}