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
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 }
}]
}