3. Wall Model¶
mirgecom.wall_model
handles solid walls and fluid-wall models.
3.1. Solid materials¶
3.1.1. Impermeable-wall variables¶
- class mirgecom.wall_model.SolidWallConservedVars(mass, energy)[source]¶
Wall conserved variables for heat conduction only material.
- class mirgecom.wall_model.SolidWallDependentVars(thermal_conductivity, temperature)[source]¶
Wall dependent variables for heat conduction only materials.
3.1.2. Impermeable material properties¶
The material properties are defined exclusively at the driver. The user must provide density, enthalpy, heat capacity and thermal conductivity of all constituents and their spatial distribution using
mask_from_elements
.
3.1.3. Impermeable wall model¶
- class mirgecom.wall_model.SolidWallModel(density_func, enthalpy_func, heat_capacity_func, thermal_conductivity_func)[source]¶
Model for calculating wall quantities for heat conduction only materials.
Since different materials can be coupled together in the same domain governed by diffusion equation, this wall model works as a wrapper of driver-defined functions that prescribe the actual properties and their spatial distribution.
- thermal_diffusivity(mass, temperature, thermal_conductivity=None)[source]¶
Return the wall thermal diffusivity for all components.
- get_temperature(wv, tseed=None, niter=3)[source]¶
Evaluate the temperature based on the energy.
3.2. Porous materials¶
3.2.1. Porous-wall variables¶
- class mirgecom.wall_model.PorousWallVars(material_densities, tau, void_fraction, emissivity, permeability, tortuosity, density)[source]¶
Variables for the porous material.
It combines conserved variables, such as material_densities, with those that depend on the current status of the wall, which is uniquely defined based on the material densities.
- Parameters:
- material_densities¶
- tau¶
- void_fraction¶
- emissivity¶
- permeability¶
- tortuosity¶
- density¶
3.2.2. Porous Media Transport¶
- class mirgecom.wall_model.PorousWallTransport(base_transport)[source]¶
Transport model for porous media flow.
Takes any transport model and modifies it to consider the interaction with the porous materials.
- Parameters:
base_transport (TransportModel)
- __init__(base_transport)[source]¶
Initialize transport model.
- Parameters:
base_transport (TransportModel)
- bulk_viscosity(cv, dv, wv, eos)[source]¶
Get the bulk viscosity for the gas, \(\mu_{B}\).
- Parameters:
cv (ConservedVars)
dv (GasDependentVars)
wv (PorousWallVars)
eos (GasEOS)
- Return type:
- viscosity(cv, dv, wv, eos)[source]¶
Viscosity of the gas through the porous wall.
- Parameters:
cv (ConservedVars)
dv (GasDependentVars)
wv (PorousWallVars)
eos (GasEOS)
- Return type:
- volume_viscosity(cv, dv, wv, eos)[source]¶
Get the 2nd viscosity coefficent, \(\lambda\).
- Parameters:
cv (ConservedVars)
dv (GasDependentVars)
wv (PorousWallVars)
eos (GasEOS)
- Return type:
- thermal_conductivity(cv, dv, wv, eos, wall_eos)[source]¶
Return the effective thermal conductivity of the gas+solid.
It is a function of temperature and degradation progress. As the fibers are oxidized, they reduce their cross area and, consequently, their ability to conduct heat.
It is evaluated using a mass-weighted average given by
\[\frac{\rho_s \kappa_s + \rho_g \kappa_g}{\rho_s + \rho_g}\]- Parameters:
cv (ConservedVars)
dv (GasDependentVars)
wv (PorousWallVars)
eos (GasEOS)
wall_eos (PorousWallEOS)
- Return type:
- species_diffusivity(cv, dv, wv, eos)[source]¶
Mass diffusivity of gaseous species through the porous wall.
- Parameters:
cv (ConservedVars)
dv (GasDependentVars)
wv (PorousWallVars)
eos (GasEOS)
- Return type:
3.2.3. Porous material properties¶
The properties of the materials are defined in specific files and used by
PorousWallEOS
.
- class mirgecom.wall_model.PorousWallEOS[source]¶
Abstract interface for porous media domains.
The properties are material-dependent and specified in individual files that inherit this class.
- abstract heat_capacity(temperature, tau)[source]¶
Evaluate the heat capacity \(C_{p_s}\) of the solid.
- abstract thermal_conductivity(temperature, tau)[source]¶
Evaluate the thermal conductivity \(\kappa\) of the solid.
- abstract emissivity(temperature=None, tau=None)[source]¶
Emissivity for energy radiation.
- Return type:
3.2.4. Porous Media Model¶
- class mirgecom.wall_model.PorousFlowModel(eos, wall_eos, transport, temperature_iteration=3)[source]¶
Main class of the porous media flow.
It is the equivalent to
GasModel
and wraps:- Parameters:
eos (MixtureEOS)
wall_eos (PorousWallEOS)
transport (PorousWallTransport)
temperature_iteration (int)
- wall_eos¶
The thermophysical properties of the wall material and its EOS.
- eos¶
The thermophysical properties of the gas and its EOS. For now, only mixtures are considered.
- transport¶
Transport class that governs how the gas flows through the porous media. This is accounted for in
PorousWallTransport
It also include functions that combine the properties of the porous material and the gas that permeates, yielding the actual porous flow EOS:
- solid_density(material_densities)[source]¶
Return the solid density \(\epsilon_s \rho_s\).
The material density is relative to the entire control volume, and is not to be confused with the intrinsic density, hence the \(\epsilon\) dependence. It is computed as the sum of all N solid phases:
\[\epsilon_s \rho_s = \sum_i^N \epsilon_i \rho_i\]- Return type:
- decomposition_progress(material_densities)[source]¶
Evaluate the progress ratio \(\tau\) of the decomposition.
Where \(\tau=1\), the material is locally virgin. On the other hand, if \(\tau=0\), then the fibers were all consumed.
- Return type:
- get_temperature(cv, wv, tseed)[source]¶
Evaluate the temperature based on solid+gas properties.
It uses the assumption of thermal equilibrium between solid and fluid. Newton iteration is used to get the temperature based on the internal energy/enthalpy and heat capacity for the bulk (solid+gas) material:
\[T^{n+1} = T^n - \frac {\epsilon_g \rho_g e_g + \rho_s h_s - \rho e} {\epsilon_g \rho_g C_{p_g} + \epsilon_s \rho_s C_{p_s}}\]- Parameters:
cv (ConservedVars)
wv (PorousWallVars)
tseed (DOFArray)
- Return type:
- get_pressure(cv, wv, temperature)[source]¶
Return the pressure of the gas considering the void fraction.
Since the density is evaluated based on the entire bulk material, i.e., considering the void fraction, the pressure is evaluated as
\[P = \frac{\epsilon \rho}{\epsilon} \frac{R}{M} T\]where \(\epsilon \rho\) is stored in
ConservedVars
and \(M\) is the molar mass of the mixture.- Parameters:
cv (ConservedVars)
wv (PorousWallVars)
temperature (DOFArray)
- Return type:
- internal_energy(cv, wv, temperature)[source]¶
Return the enthalpy of the gas+solid material.
\[\rho e = \epsilon_s \rho_s e_s + \epsilon_g \rho_g e_g\]- Parameters:
cv (ConservedVars)
wv (PorousWallVars)
temperature (DOFArray)
- Return type:
- heat_capacity(cv, wv, temperature)[source]¶
Return the heat capacity of the gas+solid material.
\[\rho e = \epsilon_s \rho_s {C_p}_s + \epsilon_g \rho_g {C_v}_g\]- Parameters:
cv (ConservedVars)
wv (PorousWallVars)
temperature (DOFArray)
- Return type:
3.3. Material specification¶
3.3.1. Carbon fiber¶
mirgecom.materials.carbon_fiber
evaluate carbon fiber data.
- class mirgecom.materials.carbon_fiber.Oxidation[source]¶
Abstract interface for wall oxidation model.
- class mirgecom.materials.carbon_fiber.FiberEOS(dim, anisotropic_direction, char_mass, virgin_mass)[source]¶
Evaluate the properties of the solid state containing only fibers.
The properties are obtained as a function of oxidation progress. It can be computed based on the mass \(m\), which is related to the void fraction \(\epsilon\) and radius \(r\) as:
\[\tau = \frac{m}{m_0} = \frac{\rho_i \epsilon}{\rho_i \epsilon_0} = \frac{r^2}{r_0^2}\]- void_fraction(tau)[source]¶
Return the volumetric fraction \(\epsilon\) filled with gas.
The fractions of gas and solid phases must sum to one, \(\epsilon_g + \epsilon_s = 1\). Both depend only on the oxidation progress ratio \(\tau\).
- enthalpy(temperature, tau=None)[source]¶
Evaluate the solid enthalpy \(h_s\) of the fibers.
- Return type:
- heat_capacity(temperature, tau=None)[source]¶
Evaluate the heat capacity \(C_{p_s}\) of the fibers.
The coefficients are obtained with the analytical derivative of the enthalpy fit.
- Return type:
- thermal_conductivity(temperature, tau=None)[source]¶
Evaluate the thermal conductivity \(\kappa\) of the fibers.
It accounts for anisotropy and oxidation progress.
- Return type:
3.3.2. TACOT¶
tacot
evaluates TACOT-related data.
TACOT is the Theoretical Ablative Composite for Open Testing, a surrogate composite material closely related to PICA (Phenolic Impregnated Carbon Ablator) proposed as an open-source material for the Ablation Workshop.
- class mirgecom.materials.tacot.Pyrolysis[source]¶
Evaluate the source terms for the pyrolysis decomposition.
The source terms follow as Arrhenius-like equation given by
\[\dot{\omega}_i^p = \mathcal{A}_{i} T^{n_{i}} \exp\left(- \frac{E_{i}}{RT} \right) \left( \frac{\epsilon_i \rho_i - \epsilon^c_i \rho^c_i}{\epsilon^0_i \rho^0_i} \right)^{m_i}\]For TACOT, 2 different reactions, which are assumed to only happen after a minimum temperature, are considered based on the resin constituents. The third reaction is the fiber oxidation, which is not handled here for now.
- get_source_terms(temperature, chi)[source]¶
Return the source terms of pyrolysis decomposition for TACOT.
- Parameters:
temperature (
DOFArray
) – The temperature of the bulk material.chi (numpy.ndarray) – Either the solid mass \(\rho_i\) of all fractions of the resin or the progress ratio \(\chi\) of the decomposition. The actual parameter depends on the modeling itself.
- Returns:
source – The source terms for the pyrolysis
- Return type:
- class mirgecom.materials.tacot.TacotEOS(char_mass, virgin_mass)[source]¶
Evaluate the properties of the solid state containing resin and fibers.
A linear weighting between the virgin and chared states is applied to yield the material properties. Polynomials were generated offline to avoid interpolation and they are not valid for temperatures above 3200K.
- void_fraction(tau)[source]¶
Return the volumetric fraction \(\epsilon\) filled with gas.
The fractions of gas and solid phases must sum to one, \(\epsilon_g + \epsilon_s = 1\). Both depend only on the pyrolysis progress ratio \(\tau\).
- heat_capacity(temperature, tau)[source]¶
Solid heat capacity \(C_{p_s}\) as a function of pyrolysis progress.
- thermal_conductivity(temperature, tau)[source]¶
Solid thermal conductivity as a function of pyrolysis progress.
- decomposition_progress(mass)[source]¶
Evaluate the progress ratio \(\tau\) of the phenolics decomposition.
Where \(\tau=1\), the material is locally virgin. On the other hand, if \(\tau=0\), then the pyrolysis is locally complete and only charred material exists:
\[\tau = \frac{\rho_0}{\rho_0 - \rho_c} \left( 1 - \frac{\rho_c}{\rho(t)} \right)\]
3.3.3. User-defined material¶
mirgecom.materials.prescribed_porous_material
for user-defined material.
The user can create any material with driver-oriented functions.
- class mirgecom.materials.prescribed_porous_material.PrescribedMaterialEOS(enthalpy_func, heat_capacity_func, thermal_conductivity_func, volume_fraction_func, permeability_func, emissivity_func, tortuosity_func, decomposition_progress_func)[source]¶
Evaluate the properties of a user-defined material.
- void_fraction(tau)[source]¶
Return the volumetric fraction \(\epsilon\) filled with gas.
The fractions of gas and solid phases must sum to one, \(\epsilon_g + \epsilon_s = 1\). Both depend only on the oxidation progress ratio \(\tau\).
- thermal_conductivity(temperature, tau)[source]¶
Evaluate the thermal conductivity \(\kappa\) of the fibers.
It employs a rescaling of the experimental data based on the fiber shrinkage during the oxidation.
3.4. Helper Functions¶
initializer
returns wall materials initialization.