Fluid model

The following inputs are defined using the prefix fluid:

Description

Type

Default

solve

Specify the name of the fluid or set to empty string or None to disable the fluid solver. The name assigned to the fluid solver is used to specify fluid properties and initial and boundary conditions. It is common to use the name fluid.

String

species

Specify the species that constitute the fluid.

All listed species must be properly defined. See the species definition documentation for additional details.

Strings

None

The root prefix [fluid_name] for the following inputs is the name defined using the fluid.solve keyword. For example, if the fluid solver is named myfluid, then the following keywords are preceded with myfluid and a period. Currently, MFIX-Exa only supports a single fluid; therefore, it is common to name the fluid fluid. This is illustrated later in example input snippets.

Viscosity

Molecular viscosity

The following inputs are defined using the prefix [fluid_name].viscosity.molecular:

Description

Type

Default

model

Specify which molecular viscosity model to use.

Options:

  • constant - constant viscosity

  • Sutherland [Sut93] -

    \(\displaystyle\mu(T) = \mu_{ref}\left(\frac{T}{T_{ref}}\right)^{3/2}\times\frac{(T_{ref}+S)}{(T+S)}\)

  • Reid [RPP87] -

    \(\displaystyle\mu(T) = Ae^{\left(\frac{B}{T} + CT + DT^2 \right)}\)

  • mixture - a mixture viscosity is computed from species viscosities and local species mass fractions [BSL06]

    \(\displaystyle\mu_{mix} = \sum_{\alpha=1}^{N} \frac{X_{\alpha} \mu_{\alpha}}{\sum_{\beta} X_{\beta} \phi_{\alpha \beta}}\)

A viscosity model is required if the fluid solver is enabled.

String

constant

constant

Constant fluid viscosity.

A value is required for constant viscosity model.

Real

None

Sutherland.T_ref

Sutherland model reference temperature.

A value is required for Sutherland viscosity model.

Real

None

Sutherland.mu_ref

Sutherland model reference viscosity at T_ref.

A value is required for Sutherland viscosity model.

Real

None

Sutherland.S

Sutherland model temperature.

A value is required for Sutherland viscosity model.

Real

None

Reid.A Reid.B Reid.C Reid.D

Reid model constants.

Values are required for Reid viscosity model.

Real

None

Eddy viscosity

The following inputs are defined using the prefix fluid.viscosity.eddy:

Description

Type

Default

model

Specify eddy viscosity model.

Options:

  • None - No eddy viscosity model

  • Smagorinsky-Lilly [Lil66, Sma63]

  • WALE [DNP98]

  • usr

String

None

Smagorinsky-Lilly.constant

Smagorinsky-Lilly constant which usually has values between 0.1 and 0.2.

A value is required when using the Smagorinsky-Lilly eddy viscosity model.

Real

None

WALE.constant

WALE eddy viscosity model constant.

Real

0.325

Suspension viscosity

The following inputs are defined using the prefix fluid.viscosity.suspension:

Description

Type

Default

model

Specify suspension viscosity model of the form

\(\mu_{susp} = \mu_{mol}(\mu^* - 1)\)

Options:

  • None - No eddy suspension model

    \(\mu^* = 1\)

  • Einstein [Ein11]

    \(\mu^* = 1 + 2.5\varepsilon_s\)

  • Brinkman [Bri52, GLGP07]

    \(\mu^* = (1-\varepsilon_s)^{-c}\)

  • Roscoe [KD59, MP56, Ros52]

    \(\mu^* = (1-\varepsilon_s/c_1)^{-c_2}\)

  • ChengLaw [CL03]

    \(\mu^* = e^{2.5(1/(1-\varepsilon_s)^c-1)/c}\)

  • Sato [SS81]

    \(\displaystyle\mu_{pit} = C d_s \rho \left|\boldsymbol{u} - \boldsymbol{u_s}\right|\)

  • Subramaniam [MTGS15]

    \(\mu_{pit} = C_\mu k_f^2 / \epsilon_f\)

String

None

Brinkman.constant

Constant for exponent in Brinkman suspension expression.

A value is required when using the Brinkman model.

Real

None

Roscoe.c1

Constant for max packing in Roscoe suspension expression.

A value is required when using the Roscoe model.

Real

None

Roscoe.c2

Constant for exponent in Roscoe suspension expression.

A value is required when using the Roscoe model.

Real

None

ChengLaw.constant

Constant for exponent in ChengLaw suspension expression.

A value is required when using the ChengLaw model.

Real

None

Sato.constant

Constant for Sato suspension expression.

Real

0.65

Subramaniam.constant

Constant for Subramaniam suspension expression.

Real

0.09

Maximum viscosity

The following inputs are defined using the prefix fluid.viscosity:

Description

Type

Default

max_effective_factor

Max limit of the effective viscosity as a factor of the molecular viscosity

\(\mu_{eff} < fac*\mu_{mol}\), where \(\displaystyle\mu_{eff} = \mu_{mol} + \mu_{eddy} + \mu_{susp} + \mu_{pit}\)

Real

1.e6

Molecular weight

The following inputs are defined using the prefix [fluid_name]:

Description

Type

Default

molecular_weight

Constant fluid molecular weight.

A molecular weight should only be defined when using one of the IdealGas constraints and the species equations are not solved.

Real

0

Specific heat

The following inputs are defined using the prefix [fluid_name].specific_heat:

Description

Type

Default

model

Specify which specific heat model to use for the fluid.

A specific heat model is required if advecting enthalpy. Furthermore, the model must be mixture if species equations are solved.

Options:

  • constant - the fluid has a constant specific heat

  • NASA7-poly the fluid specific heat is defined by NASA-7 polynomials.

    NASA7 polynomial format:

    \(c_p(T)/R = \sum_{i=0}^4 a_{i}T^{i}\)

    Additional information on NASA-7 polynomials is provided in species specific heats.

  • mixture - a mixture specific heat is computed from species specific heats and local species mass fractions.

    \(c_{p,\mathrm{mixture}} = \sum_n X_n c_{p,n}\)

String

None

constant

Constant fluid specific heat. A value is required for constant specific heat model.

Real

0

NASA7.a[i]

Specific heat polynomial coefficients. Polynomial coefficients are required if the fluid specific heat model is NASA7-poly.

Additional information on NASA-7 polynomials is provided in species specific heats.

Reals

None

NASA7.Tsplit

Defines the transition temperature between NASA-7 polynomials.

If there are N sets of coefficients for N temperature ranges, then N-1 transition temperatures must be specified.

In the standard case of two temperature ranges, a transition temperature of 1000K is assumed if Tsplit is not provided.

Reals

1000

ignore_discontinuities

Ignore discontinuities in NASA-7 polynomials at transition temperatures (Tsplit). More information is provided in species specific heats.

Int

0

The following inputs are defined using the prefix [fluid_name].

Description

Type

Default

enthalpy_of_formation

Enthalpy of formation of fluid. Only used when the fluid specific heat model is constant.

Real

0

reference_temperature

Reference temperature used to compute fluid specific enthalpy when using constant fluid specific heat model or mixture model with constant model for species.

Real

298.0

Thermal conductivity

The following inputs are defined using the prefix [fluid_name].thermal_conductivity.

Description

Type

Default

model

Specify which thermal conductivity model to use for the fluid. Options:

  • constant - constant thermal conductivity

  • Sutherland [Sut93] -

    \(\displaystyle\kappa(T) = \kappa_{ref}\left(\frac{T}{T_{ref}}\right)^{3/2}\times\frac{(T_{ref}+S)}{(T+S)}\)

  • power_law : Power law formulation

    \(\displaystyle\kappa(T) = \left(\frac{T}{T_{ref}}\right)^n\)

A thermal conductivity model is required if advecting enthalpy.

String

None

constant

Value of constant fluid thermal conductivity.

Real

None

Sutherland.T_ref

Sutherland model reference temperature.

Real

None

Sutherland.k_ref

Sutherland model reference conductivity at T_ref.

Real

None

Sutherland.S

Sutherland model temperature.

Real

None

power_law.T_ref

Power law model reference temperature.

Real

None

power_law.exponent

Power law model exponent \(n\)

Real

None

Radiation

The following inputs are defined using the prefix [fluid_name].radiation.

Description

Type

Default

scattering_coeff

Scattering coefficient of the fluid.

Real

None

absorption.model

Specify which radiation absorption coefficient model to use for the fluid. Options:

  • gray-poly - The absorption coefficient is defined by a temperature-dependent polynomial (0-5th order). Piecewise polynomials are defined by specifying temperature ranges.

  • gray-wsgg - Weighted sum of gray-gases model. For each gray gas n, a gas‑specific absorption coefficient \(k_n\) is provided along with a set of polynomial coefficients \(b_{n,i}\) (0th-5th order).

    \(\displaystyle a(T) = \sum_n \left( [1-e^{-k_i PS}] \sum_i b_{n,i} T^i \right)\)

  • mixture - Mixture-based model combining species contributions.

An absorption model is required if radiation is enabled.

String

None

Gray polynomial

The following inputs are defined using the prefix [fluid_name].radiation.absorption.

Description

Type

Default

form

Specifies the polynomial form used to represent the absorption coefficient as a function of temperature. Options:

  • 0 - Absorption coefficient is defined as a polynomial in temperature.

    \(\displaystyle a(T) = a_0 + a_1 T + a_2 T^2 + \ldots\)

  • 1 - Absorption coefficient is defined as a polynomial in the inverse of temperature.

    \(\displaystyle a(T) = a_0 + a_1 / T + a_2 / T^2 + \ldots\)

Int

0

T_range

Valid temperature range for the polynomial. If no temperature is provided, then the polynomial is assumed valid for all temperatures. Piecewise polynomials are defined by specify multiple ranges. For example, two piecewise polynomials can be specified by providing three temperatures: low, mid and high.

Reals

None

polynomial_coeffs

Polynomial coefficient. Polynomials can be up to 5-th order, and a set of polynomial coefficients must be defined for each temperature range.

Reals

None

Example: A single temperature-dependent polynomial

A single polynomial is used over the entire valid temperature range. Here, the absorption coefficient is represented by one set of polynomial coefficients (e.g., 0th–2nd order).:

fluid0.radiation.absorption.model = gray-poly
fluid0.radiation.absorption.T_range = 300. 2400.
fluid0.radiation.absorption.polynomial_coeffs = 32.2454,  4.057e-3, -3.89e-6

Example: Three piecewise constants

The absorption coefficient is defined using multiple temperature segments. Providing three temperatures defines two piecewise regions. Because each region is specified with a single coefficient, the absorption coefficient is constant within each segment.:

fluid0.radiation.absorption.model = gray-poly
fluid0.radiation.absorption.T_range = 300.  600. 1200.
fluid0.radiation.absorption.polynomial_coeffs = 1.
fluid0.radiation.absorption.polynomial_coeffs = 0.1
fluid0.radiation.absorption.polynomial_coeffs = 0.01

Gray WSGG (Weighted Sum of Gray Gases)

The following inputs are defined using the prefix [fluid_name].radiation.absorption.

Description

Type

Default

pressure-path_length

The pressure path length product PS. This term includes partial pressure of the absorbing gases P and the path length of the gas S. A value is required when the species equations are not solved.

Real

None

path_length

The path length of the gas, S. A value is required when the species are solved. It is combed with the total partial pressure of the real gases based on the local composition to compute the pressure path length product.

Real

None

gases

List of absorbing gas species. The total partial pressure based on the local composition P is computed from the listed species. One or more species must be listed if species equations are solved.

Strings

None

T_range

Valid temperature range for the polynomial. If no temperature is provided, then the polynomial is assumed valid for all temperatures. Piecewise polynomials are defined by specify multiple ranges. For example, two piecewise polynomials can be specified by providing three temperatures: low, mid and high.

Reals

None

coeffs

Weighted sum of gray gas coefficients.

Reals

None

polynomial_coeffs

Polynomial coefficient. Polynomials can be up to 5-th order, and a set of polynomial coefficients must be defined for each temperature range.

Reals

None

Example: WSGG model with five gray gases

Example inputs defining a WSGG model. Here, five gray gases are included in the absorption‑coefficient model. This is not a complete input file, nor does it represent a real WSGG model.

Dummy values are provided for illustration only.:

fluid0.radiation.absorption.model = gray-wsgg
fluid0.radiation.absorption.T_range = 600. 2400.
fluid0.radiation.absorption.pressure-path_length = 2.0

fluid0.radiation.absorption.coeffs = 100.  10.  1.  0.1  0.01
fluid0.radiation.absorption.polynomial_coeffs = 0.4068  -1.83E-04  8.68E-09
fluid0.radiation.absorption.polynomial_coeffs = 0.3390  -1.53E-04  7.24E-09
fluid0.radiation.absorption.polynomial_coeffs = 0.2712  -1.22E-04  5.79E-09
fluid0.radiation.absorption.polynomial_coeffs = 0.2034  -9.16E-05  4.34E-09
fluid0.radiation.absorption.polynomial_coeffs = 0.1356  -6.11E-05  2.89E-09

Each polynomial_coeffs line corresponds to one gray gas and provides the polynomial coefficients \(b_{n,i}\) in the temperature‑dependent term \(\sum_i b_{n,i}T^{i-1}\).

Example: WSGG model with partial‑pressure path‑length

Example inputs defining a weighted‑sum‑of‑gray‑gases model using three gray gases. In this case, the pressure path‑length product PS is computed from the partial pressures of real gases CO2 and H2O. As before, this is not a complete input file and does not represent a real WSGG dataset.:

species.solve = O2 H2O CO2 coal ash
fluid.species = CO2 H2O O2

fluid0.radiation.absorption.T_range = 600. 2400.
fluid0.radiation.absorption.path_length = 1.0
fluid0.radiation.absorption.gases = CO2 H2O
fluid0.radiation.absorption.coeffs = 75., 5., 1.
fluid0.radiation.absorption.polynomial_coeffs = 0.6280, -1.69E-04,  -8.78E-08,  2.22E-11
fluid0.radiation.absorption.polynomial_coeffs = 0.3768, -1.01E-04,  -5.27E-08,  1.33E-11
fluid0.radiation.absorption.polynomial_coeffs = 0.2512, -6.75E-05,  -3.51E-08,  8.90E-12

coeffs supplies the gray‑gas absorption coefficients \(k_n\), and each polynomial_coeffs line provides the \(b_{n,i}\) for the corresponding gray gas. The specified gases (CO2, H2O) are used to compute the local partial‑pressure path‑length PS.

Newton solver

The following inputs are defined using the prefix fluid.newton_solver and control the convergence criteria of the damped Newton solver used to compute temperature from enthalpy and specific heat.

Description

Type

Default

absolute_tol

Define absolute tolerance for the Newton solver

Real

1.e-8

relative_tol

Define relative tolerance for the Newton solver

Real

1.e-8

max_iterations

Define max number of iterations for the Newton solver

Int

500

Example inputs

Incompressible fluid

The following setup shows how to define the most basic fluid model where the only required physical property is fluid viscosity. We are using the IncompressibleFluid constraint; therefore, the constant fluid density is defined by the initial and boundary conditions. The fluid energy and species equations are not solved.

Listing 6 Snippet of inputs defining a simple incompressible fluid. This is not a complete input file.
mfix.constraint = IncompressibleFluid

mfix.advect_density  = 0
mfix.advect_enthalpy = 0
mfix.solve_species   = 0


# Fluid model settings
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid0.viscosity.molecular.model = constant
fluid0.viscosity.molecular.constant = 1.8e-5


# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0
ic.full-domain.fluid0.density   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0


# Boundary Conditions
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi
bc.inlet.fluid0.density  =  1.0

bc.inlet.fluid0.inflow_type = velocity
bc.inlet.fluid0.velocity =  1.0e-8

bc.outlet = po
bc.outlet.fluid0.pressure =  0.

Simple ideal gas

In the following example, we use the IdealGasOpenSystem so that the fluid density is calculated from the ideal gas equation of state. In addition to viscosity, we must also provide the fluid molecular weight. The fluid energy and species equations are not solved, but the constant fluid temperature is required in the initial and boundary conditions to fully specify the equation of state. Lastly, the outflow boundary pressure is taken as the thermodynamic pressure when evaluating the equation of state.

Listing 7 Snippet of inputs defining a simple ideal gas. This is not a complete input file.
mfix.constraint = IdealGasOpenSystem

mfix.advect_density  = 1
mfix.advect_enthalpy = 0
mfix.solve_species   = 0


# Fluid model settings
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid0.viscosity.molecular.model = constant
fluid0.viscosity.molecular.constant = 1.8e-5

fluid0.molecular_weight = 29.0e-3


# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0

ic.full-domain.fluid0.temperature = 300.0


# Boundary Conditions
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi

bc.inlet.fluid0.inflow_type = velocity
bc.inlet.fluid0.velocity =  1.0e-8

bc.inlet.fluid0.temperature = 300.0

bc.outlet = po
bc.outlet.fluid0.pressure =  101325.

Ideal gas with energy

In the last example, we use the IdealGasOpenSystem, however unlike the previous demonstration, the energy equation is solved. Therefore, we must define the fluid viscosity, molecular weight, thermal conductivity, and specific heat. Again, the fluid temperature is required in the initial and boundary conditions, and the outflow boundary pressure is taken as the thermodynamic pressure for the system.

Listing 8 Snippet of inputs defining an idea gas with energy. This is not a complete input file.
mfix.constraint = IdealGasOpenSystem

mfix.advect_density  = 1
mfix.advect_enthalpy = 1
mfix.solve_species   = 0


# Fluid model settings
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid0.viscosity.molecular.model = constant
fluid0.viscosity.molecular.constant = 2.0e-5

fluid0.thermal_conductivity.model = constant
fluid0.thermal_conductivity.constant = 0.026

fluid0.molecular_weight = 28.96518e-3

fluid0.specific_heat = NASA7-poly

fluid0.specific_heat.NASA7.a0 =  5.95960930E+00   3.08792717E+00
fluid0.specific_heat.NASA7.a1 =  3.56839620E+00   1.24597184E-03
fluid0.specific_heat.NASA7.a2 = -6.78729429E-04  -4.23718945E-07
fluid0.specific_heat.NASA7.a3 =  1.55371476E-06   6.74774789E-11
fluid0.specific_heat.NASA7.a4 = -3.29937060E-12  -3.97076972E-15
fluid0.specific_heat.NASA7.a5 = -4.66395387E-13  -9.95262755E+02


# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0

ic.full-domain.fluid0.temperature = 300.0

# Boundary Conditions
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi

bc.inlet.fluid0.inflow_type = velocity
bc.inlet.fluid0.velocity =  1.0e-8

bc.inlet.fluid0.temperature = 300.0

bc.outlet = po

bc.outlet.fluid0.pressure =  101325.