Material Model

The simpleMaterials class creates the static and dynamic meshes of the different material regions by reading the regionProperties file. The simpleMaterial class creates the following material sub-models, based on the simpleModel class, for each region and updates them over time:

The creation of models, fields, and properties are described in the PATOx output during the initialization of the MaterialModel. An example is given in Fig. 1.1.

_images/init_PATO_PureCond.pdf

Example: initialization of the porousMat MaterialModel.

Mass Model

Figure 1.2 shows the architecture of the Mass model. The makeMassModel.C creates the different Mass types based on the simpleMassModel class. The different types of the Mass model are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

DarcyLaw Type

The DarcyLaw type solves the semi-implicit pressure equation (Eq. [eq:p1]). This equation comes from the perfect gas law (Eq. [eq:perfectGasLaw]), the mass conservation (Eq. [eq:m1]) and the Darcy’s law (Eq. [eq:darcy]). The right-hand side is the total pyrolysis gas production term and is computed in the . The gaseous thermodynamic and transport properties are computed in the . The solid material properties are computed in the .

\[\label{eq:perfectGasLaw} \rho_g = \frac{M_g~ p_g}{R~ T_a}\]
\[\label{eq:m1} \partial_t \left(\rho_g \right) + \boldsymbol{\partial_x} \cdot \left( \epsilon_g \rho_g \boldsymbol{v_g} \right) = \pi_{tot}\]
\[ \label{eq:darcy} \boldsymbol{v_g} = - \frac{1}{\epsilon_g} \, \left( \frac{1}{\mu_g}\, \underline{\underline{K_s}} \right) \cdot \boldsymbol{\partial_x} ~ p_g\]
\[\label{eq:p1} \partial_t \left( \frac{\epsilon_g~M_g~ p_g}{R~ T_a} \right) - \boldsymbol{\partial_x} \cdot \left( \frac{M_g ~ p_g ~ \underline{\underline{K_s}}\]

}{mu_g ~ R ~ T_a} ~ boldsymbol{partial_x} ~ p_g right) = pi_{tot}

DarcyLaw_Heterogeneous Type

The DarcyLaw_Heterogeneous type solves the semi-implicit pressure equation (Eq. [eq:p2]), based on the DarcyLaw type. The heterogeneous production rate (Eq. [eq:omegaH]), updated in the , is added as source term in the right-hand side.

\[\label{eq:p2} \partial_t \left( \frac{\epsilon_g~M_g~ p_g}{R~ T_a} \right) - \boldsymbol{\partial_x} \cdot \left( \frac{M_g ~ p_g ~ \underline{\underline{K_s}}\]

}{mu_g ~ R ~ T_a} ~ boldsymbol{partial_x} ~ p_g right) = pi_{tot} + Omega_h

\[\label{eq:omegaH} \Omega_h = - \dot{\omega}_C\]

DarcyLaw2T Type

The DarcyLaw2T type solves the semi-implicit pressure equation (Eq. [eq:p3]), based on the DarcyLaw type. Porous material is considered in thermal non-equilibrium (\(T_g \ne T_s \ne T_a\)) and gaseous temperature is used instead of porous material equilibrium temperature.

\[\label{eq:p3} \partial_t \left( \frac{\epsilon_g~M_g~ p_g}{R~ T_g} \right) - \boldsymbol{\partial_x} \cdot \left( \frac{M_g ~ p_g ~ \underline{\underline{K_s}}\]

}{mu_g ~ R ~ T_g} ~ boldsymbol{partial_x} ~ p_g right) = pi_{tot}

DarcyForchheimerLaw Type

The DarcyForchheimerLaw type solves the semi-implicit pressure equation (Eq. [eq:p4]). This equation comes from the perfect gas law (Eq. [eq:perfectGasLaw]), the mass conservation (Eq. [eq:m1]) and the Darcy-Forchheimer’s law (Eq. [eq:forchheimer]). The tensor :math:`\underline{\underline{X_s}} ` (Eq. `[eq:permeabilityInv] <#eq:permeabilityInv>`__) is introduced for convenience.

\[ \label{eq:forchheimer} \boldsymbol{v_g} = - \frac{1}{\epsilon_g} \, \left( \underline{\underline{K_s}} \, \underline{\underline{X_s}} \right) \cdot \boldsymbol{\partial_x} ~ p_g\]
\[\label{eq:permeabilityInv} X_{ij} = \frac{1}{\mu \, K_{ij} + \beta_{ij} \,\rho_g \, |\boldsymbol{U}|}\]
\[ \label{eq:p4} \partial_t \left( \frac{\epsilon_g~M_g~ p_g}{R~ T_a} \right) - \boldsymbol{\partial_x} \cdot \left( \frac{M_g ~ p_g ~ \underline{\underline{K_s}} ~ \underline{\underline{X_s}}\]

}{R ~ T_a} ~ ~ boldsymbol{partial_x} ~ p_g right) = pi_{tot}

DarcyForchheimerLaw2T Type

The DarcyForchheimerLaw2T type solves the semi-implicit pressure equation (Eq. [eq:p5]), based on the DarcyForchheimerLaw type. Porous material is considered in thermal non-equilibrium (\(T_g \ne T_s \ne T_a\)) and gaseous temperature is used instead of porous material equilibrium temperature.

\[ \label{eq:p5} \partial_t \left( \frac{\epsilon_g~M_g~ p_g}{R~ T_g} \right) - \boldsymbol{\partial_x} \cdot \left( \frac{M_g ~ p_g ~ \underline{\underline{K_s}} ~ \underline{\underline{X_s}}\]

}{R ~ T_g} ~ ~ boldsymbol{partial_x} ~ p_g right) = pi_{tot}

FixedPressureGamma Type

The FixedPressureGamma type fixes the value of the pressure field, the gamma (Eq. [eq:gamma]) field and the boundary conditions. The user can modify the following inputs in the model properties file:

  • internalField_P = internal cell center value of the scalar pressure.

  • boundaryField_P = boundary face center value of the scalar pressure.

  • internalField_Gamma = internal cell center value of the tensor gamma.

  • boundaryField_Gamma = boundary face center value of the tensor gamma.

\[ \label{eq:gamma} \underline{\underline{\gamma_s}} = \frac{p_g M_g}{\mu_g R T_g} ~ \underline{\underline{K_s}}\]

Energy Model

Figure 1.3 shows the architecture of the Energy model. The makeEnergyModel.C creates the different Energy types based on the simpleEnergyModel class. The Energy types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

PureConduction Type

The PureConduction type updates the temperature by solving the energy equation (Eq. [eq:PureCond]). The solid material properties are computed in the .

\[ \label{eq:PureCond} \rho_s c_{p,s} ~ \partial_t T - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T \right) = 0\]

Pyrolysis Type

The Pyrolysis type updates the temperature by solving the energy equation (Eq. [eq:EnergyPyro]). The left-hand side is composed by the solid and gaseous storage, the solid thermal conduction, the gaseous thermal convection and the pyrolysis energy flux. The gaseous thermodynamic and transport properties are computed in the . The solid material properties and the pyrolysis energy flux are computed in the .

\[ \label{eq:EnergyPyro} \rho_s c_{p,s} ~ \partial_t T_a + \partial_t \left( \epsilon_g \rho_g E_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_a \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{\gamma_s}} ~ \boldsymbol{\partial_x} p_g \right) + \dot{E}_p = 0\]
\[\underline{\underline{\gamma_{hg}}} = \frac{h_g p_g M_g}{\mu_g R T_a} ~ \underline{\underline{K_s}}\]

Pyrolysis_Heterogeneous_SpeciesDiffusion Type

The Pyrolysis_Heterogeneous_SpeciesDiffusion type updates the temperature by solving the energy equation (Eq. [eq:EnergyPyroHetero]) based on the type. The heterogeneous energy flux (Eq. [eq:heteroEnergy]) and the energy flux transported by diffusion of the gaseous species (Eq. [eq:DiffEnergy]) are added as source term to the right-hand side.

\[ \label{eq:EnergyPyroHetero} \rho_s c_{p,s} ~ \partial_t T_g + \partial_t \left( \epsilon_g \rho_g E_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{\gamma_s}} ~ \boldsymbol{\partial_x} p_g \right) + \dot{E}_\Omega = \dot{E}_{D} + \bar{h} \pi_{tot}\]
\[\label{eq:heteroEnergy} \dot{E}_\Omega = - h_c ~ \Omega_h = h_c ~ \dot{\omega}_{C(gr)}\]
\[\label{eq:DiffEnergy} \dot{E}_{D} = \sum^{N_s}_i ~ \boldsymbol{\partial_x} \cdot \left( \frac{D_{m,i} ~ \epsilon_g ~ \rho_g ~ h_i}{\eta} ~ \boldsymbol{\partial_x} y_i \right)\]

Pyrolysis2T Type

The Pyrolysis2T type updates the solid temperature and the gas temperature by solving two energy equation (Eq. [eq:EnergyPyro2T]). The left-hand side of Eq. [eq:EnergyPyro2Ts] is composed by the solid storage, the solid thermal conduction, the pyrolysis energy flux and the exchange between solid and fluid. The left-hand side of Eq. [eq:EnergyPyro2Tg] is composed by the gaseous storage, the pressure energy, the gaseous convection, the gas thermal conduction and the exchange between solid and fluid. The gaseous thermodynamic and transport properties are computed in the . The solid material properties and the pyrolysis energy flux are computed in the .

\[\begin{split} \label{eq:EnergyPyro2T} \begin{align} \rho_s c_{p,s} ~ \partial_t T_s - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_s \right) + \dot{E}_p + H \left( T_s - T_g \right) &= 0 \label{eq:EnergyPyro2Ts}\\ \partial_t \left( \epsilon_g \rho_g E_g \right) - \partial_t \left(\epsilon_g p_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{\gamma_s}} ~ \boldsymbol{\partial_x} p_g \right) + H \left( T_g - T_s \right) &= 0 \label{eq:EnergyPyro2Tg} \end{align}\end{split}\]
\[\underline{\underline{\gamma_{hg}}} = \frac{h_g p_g M_g}{\mu_g R T_g} ~ \underline{\underline{K_s}}\]

ForchheimerPyrolysis Type

The ForchheimerPyrolysis type updates the temperature by solving the energy equation (Eq. [eq:EnergyForchPyro]) based on the type with gaseous thermal convection term calculated by Eq. [eq:gammaHgForch].

\[ \label{eq:EnergyForchPyro} \rho_s c_{p,s} ~ \partial_t T_a + \partial_t \left( \epsilon_g \rho_g E_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_a \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{\gamma_s}} ~ \boldsymbol{\partial_x} p_g \right) + \dot{E}_p = 0\]
\[ \label{eq:gammaHgForch} \underline{\underline{\gamma_{hg}}} = \frac{h_g ~ M_g ~ p_g ~ \underline{\underline{K_s}} ~ \underline{\underline{X_s}}\]

}{R ~ T_a}

ForchheimerPyrolysis2T Type

The ForchheimerPyrolysis2T type updates the solid temperature and the gas temperature by solving two energy equation (Eq. [eq:EnergyForchPyro2T]) based on the type with gaseous thermal convection term calculated by Eq. [eq:gammaHgForch2T].

\[\begin{split} \label{eq:EnergyForchPyro2T} \begin{align} \rho_s c_{p,s} ~ \partial_t T_s - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_s \right) + \dot{E}_p + H \left( T_s - T_g \right) &= 0 \\ \partial_t \left( \epsilon_g \rho_g E_g \right) - \partial_t \left(\epsilon_g p_g \right) - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{\gamma_s}} ~ \boldsymbol{\partial_x} p_g \right) + H \left( T_g - T_s \right) &= 0 \end{align}\end{split}\]
\[ \label{eq:gammaHgForch2T} \underline{\underline{\gamma_{hg}}} = \frac{h_g ~ M_g ~ p_g ~ \underline{\underline{K_s}} ~ \underline{\underline{X_s}}\]

}{R ~ T_g}

Darcy2T Type

The Darcy2T type updates the temperature by solving energy equations (Eq. [eq:EnergyDarcy2T]) based on the type with constant solid heat capacity for materials without pyrolysis.

\[\begin{split} \label{eq:EnergyDarcy2T} \begin{align} \rho_s c_{p,s} ~ \partial_t T_s - \boldsymbol{\partial_x} \cdot \left( \underline{\underline{K_s}} ~ \boldsymbol{\partial_x} T_s \right) + \dot{E}_p + H \left( T_s - T_g \right) &= 0 \\ \partial_t \left( \epsilon_g \rho_g E_g \right) - \partial_t \left(\epsilon_g p_g \right) - c_p ~ \boldsymbol{\partial_x} \cdot \left( \epsilon_g \rho_g \boldsymbol{v_g} T_g \right) + H \left( T_g - T_s \right) &= 0 \end{align}\end{split}\]

Forchheimer2T Type

The Forchheimer2T type is identical to the type and will be deleted in a future release.

CorrectBC Type

The CorrectBC type updates all the boundary conditions of the temperature.

BoundaryTable Type

The BoundaryTable type updates the internal cell center value of the temperature using the value of the uniformFixedValue boundary face.

FixedTemperature Type

The FixedTemperature type fixes the value of the temperature fields and boundary conditions. The user can modify the following inputs in the model properties file:

  • internalField_T = internal cell center value of the temperature.

  • boundaryField_T = boundary face center value of the temperature.

TabulatedTemperature Type

The TabulatedTemperature type fixes the value of the temperature fields from an external file and boundary conditions from the inputs. Internal fields are mapped from a tabulated value and a distance from a given patch. The user can modify the following inputs in the model properties file:

  • internalFieldTable_fileName = file containing table of internal cell center value of the temperature.

  • originPatchName = name of the patch from which the temperature values will be mapped.

  • boundaryField_T = boundary face center value of the temperature.

ControlTemperature Type

The ControlTemperature type fixes a linear time dependent value of temperature inside the domain (Eq. [eq:controlTemperature]). The user can modify the following inputs in the model properties file:

  • a = temperature at \(t = 0\).

  • b = slope factor.

\[\label{eq:controlTemperature} T_a \left( t \right) = a + b ~ t\]

Input/Output (IO) Model

Figure 1.4 shows the architecture of the Input/Output (IO) model. The SampleFunction class creates the PATO sampling files and provides the PATO sampling methods based on the probing functions in OpenFOAM. The makeIOModel.C file creates the different IO types based on the simpleIOModel class. The IO types are described below.

no Type

The no type writes the fields from the writeFields input following the controlDict file and writes the probing fields from the probingFunctions input to the output folder.

PurePyrolysis Type

The PurePyrolysis type computes the solid density ratio of virgin and char (Eq. [eq:rhoRatio]) and the normalized total pyrolysis production rate (Eq. [eq:NormPi]) in function of time. This type compares also \(r(t)\) and \(\widetilde{\pi}_{tot}(t)\) to reference files and gives the least square difference (Eq. [eq:LSD]).

\[\label{eq:rhoRatio} r(t) = \frac{\rho_s (t)}{\rho_{sv}}\]
\[\label{eq:NormPi} \widetilde{\pi}_{tot}(t) = - \partial_t r(t) = \frac{\pi_i(t) }{\rho_{sv}}\]
\[\label{eq:LSD} L = \sum^{N_t}_i \left( f(t_i) - f_{ref}(t_i) \right)^2 \text{\hspace{1cm} with }f(t_i) = [ r(t_i), \widetilde{\pi}_{tot}(t_i)]\]

InverseProblem Type

The InverseProblem type takes a user list of fields and reference files to compare. Then, this type computes the least square difference (Eq. [eq:LSD2]).

\[\label{eq:LSD2} L = \sum^{N_t}_i \left( f(t_i) - f_{ref}(t_i) \right)^2\]

Profile Type

The Profile type takes a user list of fields. Then, this types computes and writes the 1D in-depth profile of these fields.

LinearInterpolation Type

The LinearInterpolation type initializes the fields from a user list with a linear interpolation (Eq. [linInt]).

\[\begin{split}\label{linInt} f = \begin{cases}f_{I} + ( f_{T} - f_{I} ) \frac{ y_C - y_{I} }{y_{T} - y_{I}} & \text{if }y_C > y_{I}\\ f_{B} + ( f_{I} - f_{B} ) \frac{ y_C - y_{B} }{y_{I} - y_{B}} & \text{else} \end{cases}\end{split}\]

mass Type

The Mass type computes the gas mass flow rate at the surface, the char mass flow rate, the total recession of the material and the position when the sample reached \(2\)% and \(98\)% of the charred state.

WriteControl Type

The WriteControl type writes the fields from IO:writeFields at the additional times provided in additionalWriteTimes. This type also writes the probing fields from IO:probingFunctions at the additional times provided in additionalProbingTimes. The user can modify the following inputs in the model properties file:

  • additionalWriteTimes = list of additional times to write the fields.

  • additionalProbingTimes = list of additional times to write the probing fields.

Volume Ablation Model

Figure 1.5 shows the architecture of the Volume Ablation model. The makeVolumeAblationModel.C file creates the different Volume Ablation types based on the simpleVolumeAblationModel class. The Volume Ablation types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

FibrousMaterialTypeA Type

The FibrousMaterialTypeA type updates the solid volume fraction by solving the Equation [eq:eps_s]. This equation includes the external solid density (Eq. [eq:rho_ext]) and the heterogeneous production rate (Eq. [eq:omegaH2]), updated in the model. The fiber radius (Eq. [eq:rT]), the specific surface (Eq. [eq:ss]), the site density (Eq. [eq:sd]) and the solid carbon mass fraction (Eq. [eq:yc]) are then computed in function of the solid volume fraction.

\[\label{eq:eps_s} \partial_t \epsilon_s + \frac{\Omega_h}{\rho_{ext}} = 0\]
\[\label{eq:omegaH2} \Omega_h = - \dot{\omega}_C\]
\[\begin{split}\label{eq:rho_ext} \rho_{ext} = \begin{cases} \rho_{sf,0} & \mbox{if } r_T < r_{f,0} \\ \rho_s & \mbox{else} \end{cases}\end{split}\]
\[\label{eq:rT} r_T = r_{T,0} ~ \sqrt{\frac{\epsilon_s}{\epsilon_{s,0}}}\]
\[\label{eq:ss} S_s = \frac{2~ r_T ~ \epsilon_{s,0} }{ (r_{T,0})^2}\]
\[\label{eq:sd} S_d = S_{d,0} \left[ 1 - exp \left( \frac{- r_T}{r_{ff}}\right)\right]\]
\[\label{eq:yc} y_{C(gr)} = S_s S_d\]

Gas Properties Model

Figure 1.6 shows the architecture of the Gas Properties model. The makeGasPropertiesModel.C file creates the different Gas Properties types based on the simpleGasPropertiesModel class. The Gas Properties types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

Equilibrium Type

The Equilibrium type updates the following gaseous transport and thermodynamic properties in function of pressure, temperature and elemental mole composition using the library. The total advancement of pyrolysis (\(\tau\)) is computed in the . The virgin and charred properties are given by the user in the constant material properties file, read in the .

  • The gaseous molar mass, \(M_g\)

  • The gaseous enthalpy, \(h_g\)

  • The gaseous viscosity, \(\mu_g\)

  • The gaseous density, \(\rho_g\)

  • The gaseous volume fraction, \(\epsilon_g = \epsilon_{g,c} + (\epsilon_{g,v} - \epsilon_{g,c})~ \tau\)

FiniteRate Type

The FiniteRate type updates the following gaseous transport and thermodynamic properties in function of pressure, temperature and species mass composition using the library. The total advancement of pyrolysis (\(\tau\)) is computed in the . The virgin and charred properties are given by the user in the constant material properties file, read in the .

  • The gaseous molar mass, \(M_g\)

  • The gaseous enthalpy, \(h_g\)

  • The gaseous viscosity, \(\mu_g\)

  • The gaseous density, \(\rho_g\)

  • The gaseous volume fraction, \(\epsilon_g = \epsilon_{g,c} + (\epsilon_{g,v} - \epsilon_{g,c})~ \tau\)

  • Energy flux transported by diffusion of the species, \(\dot{E}_{D}\)

Tabulated Type

The Tabulated type updates the following gaseous transport and thermodynamic properties in function of pressure and temperature using a linear interpolation method and a table given by the user. The total advancement of pyrolysis (\(\tau\)) is computed in the . The virgin and charred properties are given by the user in the constant material properties file, read in the .

  • The gaseous molar mass, \(M_g\)

  • The gaseous enthalpy, \(h_g\)

  • The gaseous viscosity, \(\mu_g\)

  • The gaseous density, \(\rho_g\)

  • The gaseous volume fraction, \(\epsilon_g = \epsilon_{gc,} + (\epsilon_{g,v} - \epsilon_{g,c})~ \tau\)

Tabulated2T Type

The Tabulated2T type updates the following gaseous transport and thermodynamic properties in function of pressure and gas temperature using a linear interpolation method and a table given by the user. The total advancement of pyrolysis (\(\tau\)) is computed in the . The virgin and charred properties are given by the user in the constant material properties file, read in the .

  • The gaseous molar mass, \(M_g\)

  • The gaseous enthalpy, \(h_g\)

  • The gaseous viscosity, \(\mu_g\)

  • The gaseous thermal conductivity \(k_g\)

  • The gaseous density, \(\rho_g\)

  • The gaseous volume fraction, \(\epsilon_g = \epsilon_{gc,} + (\epsilon_{g,v} - \epsilon_{g,c})~ \tau\)

Material Properties Model

Figure 1.7 shows the architecture of the Material Properties model. The makeMaterialPropertiesModel.C file creates the different Material Properties types based on the simpleMaterialPropertiesModel and CommonMaterialPropertiesModel classes. Only the fields that already exist in the mesh are updated in this model. The classes in the Object folder are used by different Material Properties types to interpolate values. The Material Properties types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

Fourier Type

The Fourier type updates the following solid properties (if they already exist in the mesh) using the Fourier’s law.

  • The solid thermal conductivity, :math:`underline{underline{K_s}}

= sum^{N_c}_{i=0} ~ k_i ~ T^i`

  • The solid heat capacity, \(c_{p,s} = \sum^{N_c}_{i=0} ~ c_{ps,i} ~ T^i\)

  • The solid density, \(\rho_s = \sum^{N_c}_{i=0} ~ \rho_{s,i} ~ T^i\)

  • The solid Young’s modulus \(E_s = \sum^{N_c}_{i=0} ~ E_{s,i} ~ T^i\)

  • The solid Poisson’s ration \(\nu_s = \sum^{N_c}_{i=0} ~ \nu_{s,i} ~ T^i\)

  • The solid thermal expansion coefficient \(\alpha_{th} = \sum^{N_c}_{i=0} ~ \alpha_{th,i} ~ T^i\)

  • The solid Jomaa function \(\xi_s = \sum^{N_c}_{i=0} ~ \xi_{s,i} ~ T^i\)

Fourier_Radiation Type

The Fourier_Radiation type updates the following solid properties (if they already exist in the mesh) using the Fourier’s law.

  • The solid thermal conductivity, :math:`underline{underline{K_s}}

= sum^{N_c}_{i=0} ~ k_i ~ T^i`

  • The solid heat capacity, \(c_{p,s} = \sum^{N_c}_{i=0} ~ c_{ps,i} ~ T^i\)

  • The solid density, \(\rho_s = \sum^{N_c}_{i=0} ~ \rho_{s,i} ~ T^i\)

  • The solid emissivity, \(\varepsilon_s = \sum^{N_c}_{i=0} ~ \varepsilon_{s,i} ~ T^i\)

  • The radiative heat flux, \(q_r = - \varepsilon_s \sigma_{SB} \left( T^4 - T_\infty^4 \right)\)

  • The solid Young’s modulus \(E_s = \sum^{N_c}_{i=0} ~ E_{s,i} ~ T^i\)

  • The solid Poisson’s ration \(\nu_s = \sum^{N_c}_{i=0} ~ \nu_{s,i} ~ T^i\)

  • The solid thermal expansion coefficient \(\alpha_{th} = \sum^{N_c}_{i=0} ~ \alpha_{th,i} ~ T^i\)

  • The solid Jomaa function \(\xi_s = \sum^{N_c}_{i=0} ~ \xi_{s,i} ~ T^i\)

Porous_const Type

The Porous_const type updates the solid properties (if they already exist in the mesh) using constant values from the constantProperties file located in the MaterialPropertiesDirectory folder.

  • The solid thermal conductivity, \(k_{s,xx} = k_{s,yy} = k_{s,zz} =\) k_const

  • The solid heat capacity, \(c_{p,s} =\) cp_const

  • The solid density, \(\rho_s =\) rho_s_const

  • The solid permeability, \(K_{s,xx} = K_{s,yy} = K_{s,zz} =\) K_const

  • The solid Forchheimer coefficient, \(\beta_{s,xx} = \beta_{s,yy} = \beta_{s,zz} =\) Beta_const

  • The pyrolysis energy flux, \(\dot{E}_p =\) pyrolysisFlux_const

  • The solid emissivity, \(\varepsilon_s =\) emissivity_const

  • The solid absorptivity, \(\alpha_s =\) absorptivity_const

  • The solid Young’s modulus \(E_s =\) E_const

  • The solid Poisson’s ration \(\nu_s =\) nu_const

  • The solid thermal expansion coefficient \(\alpha_{th} =\) alpha_const

  • The solid charred enthalpy, \(h_c =\) h_c_const

  • The solid Jomaa function, \(\xi_s =\) xi_const

Porous Type

The Porous type updates the following solid properties (if they already exist in the mesh) using the solid density and the total advancement of pyrolysis, updated in the .

  • The solid thermal conductivity, :math:`underline{underline{K_s}}

= tens{k_{sv}} ~ tau ~ frac{rho_{sv}}{maxleft(rho_{s},rho_{sc} right)} + tens{k_{sc}} left(1 - tau ~ frac{rho_{sv}}{maxleft(rho_{s},rho_{sc} right)} right)`

  • The solid heat capacity, \(c_{p,s} = c_{p,sv}~ \tau~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + c_{p,sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid density, \(\rho_s = \sum^{N_p}_i \rho_{s,i} ~ \epsilon_{s,i}\)

  • The solid phase density, \(\rho_{s,i} = \frac{\epsilon_{sv,i}}{\epsilon_{s,i}} \rho_{sv,i} \left( 1 - \sum^{N_{sp}}_j \cst{F}_{ij} \chi_{ij} \right)\)

  • The solid permeability, :math:`underline{underline{K_s}}

= tens{K_{sc}} + (tens{K_{sv}} - tens{K_{sc}})~ tau`

  • The solid Forchheimer coefficient, \(\tens{\beta_s} = \tens{\beta_{sc}} + (\tens{\beta_{sv}} - \tens{\beta_{sc}})~ \tau\)

  • The solid average enthalpy, \(\bar{h} = \frac{\rho_{sv} h_{sv} -\rho_{sc} h_{sc}}{ \rho_{sv} - \rho_{sc}}\)

  • The pyrolysis energy flux, \(\dot{E}_p = - \bar{h} \pi_{tot}\)

  • The solid emissivity, \(\varepsilon_s = \varepsilon_{sv} ~\tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + \varepsilon_{sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid absorptivity, \(\alpha_s = \alpha_{sv} ~ \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + \alpha_{sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid Young’s modulus \(E_s = E_{sv} ~\tau + E_{sc} \left( 1 - \tau \right)\)

  • The solid Poisson’s ration \(\nu_s = \nu_{sv} ~\tau + \nu_{sc} \left( 1 - \tau \right)\)

  • The solid thermal expansion coefficient \(\alpha_{th} = \alpha_{th,v} ~\tau + \alpha_{th,c} \left( 1 - \tau \right)\)

  • The solid charred enthalpy, \(h_c\)

  • The solid Jomaa function, \(\xi_s\)

The constantProperties file from the MaterialPropertiesDirectory folder includes the number of solid phases \(N_p\), the initial solid phase densities (\(\rho_{s,i}\)), the initial solid phase volume fractions (\(\epsilon_{s,i}\)), the virgin solid permeability (\(\tens{K_{sv}}\)), the charred solid permeability (\(\tens{K_{sc}}\)), the virgin Forchheimer coefficient (\(\tens{\beta_{sv}}\)), the charred Forchheimer coefficient (\(\tens{\beta_{sc}}\)), the virgin solid Young’s modulus (\(E_{sv}\)), the charred solid Young’s modulus (\(E_{sc}\)), the virgin solid Poisson’s ratio (\(\nu_{sv}\)), the charred solid Poisson’s ratio (\(\nu_{sc}\)), the virgin thermal expansion coefficient (\(\alpha_{th,v}\)), the charred thermal expansion coefficient (\(\alpha_{th,c}\)), the solid Jomaa function and the reference enthalpies of pyrolysis reaction \(j\) within phase \(i\) (\(h_{p,ij})\) . The solid charred and virgin material properties in function of pressure and temperature are given by the char and virgin material files from the MaterialPropertiesDirectory folder. These files must have the 9 following columns: pressure \(p\), temperature \(T\), solid heat capacity \(c_{p,s}\), solid enthalpy \(h_s\), solid thermal conductivity in \(i,j,k\) directions \(\tens{k}\), solid emissivity \(\varepsilon_s\) and solid absorptivity \(\alpha_s\).
When the detailedSolidEnthalpy option is activated, the pyrolysis energy flux is computed as follows
\[h_{S,s} = \frac{\rho_{sv} \left[ h_{S,sv}(p,T) - h_{Sv}(p,T_0)\right] - \rho_{sc} \left[ h_{S,sc}(p,T) - h_{S,sc}(p,T_0)\right]}{\rho_{sv} - \rho_{sc} }\]
\[h_{S,sv} = \int^T_{T_0} c_{p,sv} ~ dT \text{\hspace{2cm}} h_{S,sc} = \int^T_{T_0} c_{p,sc} ~ dT\]
\[\dot{E}_p = - \sum^{N_p}_i \sum_j^{N_{sp}} \rho_{sv,i} ~ \epsilon_{sv,i} ~ \cst{F}_{ij} ~ \partial_t \chi_{ij} \left(h_{p,ij} + h_{S,s} \right)\]

GradedPorous Type

The GradedPorous type updates the following solid properties (if they already exist in the mesh) based on the Porous type. The total advancement of pyrolysis (\(\tau\)) is updated in the . Porosity \(\phi\) is calculated from values from a given file at distance from a given patch.

  • The solid thermal conductivity, :math:`underline{underline{K_s}}

= tens{k_{sv}} ~ tau ~ frac{rho_{sv}}{maxleft(rho_{s},rho_{sc} right)} + tens{k_{sc}} left(1 - tau ~ frac{rho_{sv}}{maxleft(rho_{s},rho_{sc} right)} right)`

  • The solid heat capacity, \(c_{p,s} = c_{p,sv}~ \tau~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + c_{p,sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid density, \(\rho_s = \sum^{N_p}_i \rho_{s,i} ~ \epsilon_{s,i}\)

  • The solid phase density, \(\rho_{s,i} = \frac{\epsilon_{sv,i}}{\epsilon_{s,i}} \rho_{sv,i} \left( 1 - \sum^{N_{sp}}_j \cst{F}_{ij} \chi_{ij} \right)\)

  • The solid permeability, :math:`underline{underline{K_s}}

= tens{K_{sc}} + (tens{K_{sv}} - tens{K_{sc}})~ tau`

  • The solid Forchheimer coefficient, \(\tens{\beta_s} = \tens{\beta_{sc}} + (\tens{\beta_{sv}} - \tens{\beta_{sc}})~ \tau\)

  • The solid average enthalpy, \(\bar{h} = \frac{\rho_{sv} h_{sv} -\rho_{sc} h_{sc}}{ \rho_{sv} - \rho_{sc}}\)

  • The pyrolysis energy flux, \(\dot{E}_p = - \bar{h} \pi_{tot}\)

  • The solid emissivity, \(\varepsilon_s = \varepsilon_{sv} ~\tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + \varepsilon_{sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid absorptivity, \(\alpha_s = \alpha_{sv} ~ \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + \alpha_{sc} \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

  • The solid Young’s modulus \(E_s = E_{sv} ~\tau + E_{sc} \left( 1 - \tau \right)\)

  • The solid Poisson’s ration \(\nu_s = \nu_{sv} ~\tau + \nu_{sc} \left( 1 - \tau \right)\)

  • The solid thermal expansion coefficient \(\alpha_{th} = \alpha_{th,v} ~\tau + \alpha_{th,c} \left( 1 - \tau \right)\)

  • The solid charred enthalpy, \(h_c\)

  • The solid Jomaa function, \(\xi_s\)

In addition to the data needed for the Porous type, the constantProperties file from the MaterialPropertiesDirectory folder includes the gradingFilesEpsI and the gradingPatchNameEpsI from which the grading distance is calculated.

Porous_const_k_UQ Type

The Porous_const_k_UQ type updates the solid properties (if they already exist in the mesh) by the Porous type except for the solid thermal conductivity (:math:`underline{underline{K_s}} `) that uses constant values from the constantProperties file located in the MaterialPropertiesDirectory folder.

  • The solid thermal conductivity,
    \(k_{s,xx} = k_{s,yy} = k_{s,zz} =\) k_const_v \(~ \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} +\) k_const_c \(\left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

Porous_factor Type

The Porous_factor type updates the solid properties (if they already exist in the mesh) based on the Porous type. The total advancement of pyrolysis (\(\tau\)) is updated in the . The following properties are multiplied by a field factor provided in the constantProperties file from the MaterialPropertiesDirectory folder.

  • The virgin solid heat capacity, \(c_{p,sv}\)

  • The charred solid heat capacity \(c_{p,sc}\)

  • The virgin solid enthalpy, \(h_{sv}\)

  • The charred solid enthalpy, \(h_{sc}\)

  • The virgin solid thermal conductivity in \(i,j,k\) directions \(\tens{k_v}\)

  • The charred solid thermal conductivity in \(i,j,k\) directions \(\tens{k_c}\)

  • The virgin solid emissivity \(\varepsilon_{sv}\)

  • The charred solid emissivity \(\varepsilon_{sc}\)

  • The virgin solid absorptivity \(\alpha_{sv}\)

  • The charred solid absorptivity \(\alpha_{sc}\)

Porous_polynomial_k_UQ Type

The Porous_polynomial_k_UQ type updates the solid properties (if they already exist in the mesh) by the Porous type except for the solid thermal conductivity (:math:`underline{underline{K_s}} `) that uses constant values from the constantProperties file located in the MaterialPropertiesDirectory folder.

  • Constant values,
    \(k_{s,v0}\) = kCondVirgin
    \(k_{s,v3}\) = kRadVirgin
    \(k_{s,c0}\) = kCondChar
    \(k_{s,c3}\) = kRadChar
  • The solid thermal conductivity,
    \(k_{s,xx} = k_{s,yy} = k_{s,zz} = \left( k_{s,v0} + k_{s,v3} ~ T^3 \right) ~ \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} + \left( k_{s,c0} + k_{s,c3} ~ T^3 \right) \left(1 - \tau ~ \frac{\rho_{sv}}{max\left(\rho_{s},\rho_{sc} \right)} \right)\)

Pyrolysis Model

Figure 1.8 shows the architecture of the Pyrolysis model. The makePyrolysisModel.C file creates the different Pyrolysis types based on the simplePyrolysisModel class. The Pyrolysis types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

virgin Type

The virgin type initializes the following fields of a virgin material using the constantProperties file in the materialPropertiesDirectory folder:

\[\pi_{tot}=0 \hspace{1cm} \tau=1\]
\[\rho_{sv,i}=\text{\textbf{rhoI\_s[i]}} \hspace{1cm} \rho_{s,i}=\text{\textbf{rho\_s[i]}}\]
\[\epsilon_{sv,i}=\text{\textbf{epsI\_s[i]}} \hspace{1cm} \epsilon_{s,i}=\text{\textbf{eps\_s[i]}}\]
\[\rho_s = \rho_{sv} = \sum^{N_p}_i \rho_{sv,i}\epsilon_{sv,i}\]
\[\rho_{sc} = \rho_{sv} - \sum^{N_p}_i \sum^{N_{sp}}_j \cst{F}_{ij} \rho_{sv,i}\epsilon_{sv,i}\]

char Type

The char type is based on the virgin material. The only difference for a charred material is the initialization of the advancement of pyrolysis (\(\tau = 0\)) and the solid density (\(\rho_s = \rho_{s,c}\)).

LinearArrhenius Type

The LinearArrhenius type updates the pyrolysis production rate by solving the pyrolysis equations (Eq. [eq:chi]). The pyrolysis reactions are divided by phase i and sub-phase j. The total advancement of pyrolysis (Eq. [eq:tau]), the total pyrolysis production rate (Eq. [eq:piTot]), the elemental/species pyrolysis production rates and the decomposed solid densities (Eq. [eq:rho_si]) are then computed.

\[\label{eq:chi} \partial_t \chi_{ij} = \cst{A}_{ij} ~T^{n_{ij}}~ exp\left(\frac{-\cst{E}_{ij}}{RT}\right) \left( 1 - \chi_{ij} \right)^{m_{ij}}\]
\[\label{eq:tau} \tau = \sum^{N_p}_i \sum^{N_{sp}}_j \frac{\epsilon_{sv,i}~ \rho_{sv,i} ~\cst{F}_{ij} }{ \sum^{N_p}_i \sum^{N_{sp}}_j \epsilon_{sv,i}~ \rho_{sv,i} ~\cst{F}_{ij}}~ (1 - \chi_{ij})\]
\[\label{eq:piTot} \pi_{tot} = \sum^{N_p}_i \sum^{N_{sp}}_j \sum^{N_e}_k z_{ijk} ~ \rho_{sv,i} ~ \epsilon_{sv,i} ~ \cst{F}_{ij} ~ \partial_t \chi_{ij}\]
\[\label{eq:pi} \pi_{k} = \sum^{N_p}_i \sum^{N_{sp}}_j z_{ijk} ~ \rho_{sv,i} ~ \epsilon_{sv,i} ~ \cst{F}_{ij} ~ \partial_t \chi_{ij}\]
\[\label{eq:rho_si} \rho_{s,i} = \frac{\epsilon_{sv,i}}{\epsilon_{s,i}} \rho_{sv,i} \left( 1 - \sum^{N_{sp}}_j \cst{F}_{ij} \chi_{ij} \right)\]

Eq. [eq:rho_s] shows the update of the solid density in the ( type).

\[\label{eq:rho_s} \rho_s = \sum^{N_p}_i \rho_{s,i}~\epsilon_{s,i}\]

FIAT Type

The FIAT type updates the pyrolysis production rate by solving the 3 pyrolysis equations (Eq. [eq:FIATPyro]). The total pyrolysis production rate (Eq. [eq:FIATPiTot]) and the solid density (Eq. [eq:FIATRho_s2]) are then computed.

\[\label{eq:FIATPyro} \partial_t \rho_i = - A_i ~ \rho_{v,i} \left( \frac{\rho_i - \rho_{c,i}}{\rho_{v,i}} \right)^{\psi_i} exp\left(\frac{-E_i}{T}\right) \text{\hspace{1cm} i=0,1,2}\]
\[\label{eq:FIATPiTot} \pi_{tot} = - (1 - \phi) ~ \Gamma ~ \partial_t \left( \rho_0 - \rho_1 \right)\]
\[\label{eq:FIATRho_s2} \rho_s = (1 - \phi) ~ \Gamma ~ (\rho_0 + \rho_1 ) + ( 1 - \Gamma) ~ \rho_2\]

MaterialChemistry Model

Figure 1.9 shows the architecture of the Material Chemistry model. The makeMaterialChemistryModel.C file creates the different Material Chemistry types based on the simpleMaterialChemistryModel class. The FiniteRateChemistryModel folder contains all files and directories for creating the different finite rate models based on BasicFiniteRateChemistryModel.C. The Material Chemistry types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

ConstantEquilibrium Type

The ConstantEquilibrium type creates the mixture using the Equil option with a constant elemental composition from the user.

ConstantFiniteRate Type

The ConstantFiniteRate type creates the mixture using the ChemNonEq1T option with a constant species composition from the user.

EquilibriumElement Type

The EquilibriumElement type updates the elemental mass fraction by solving the elemental mass conservation equation (Eq. [eq:z]). The transport and thermodynamic properties are updated in the .

\[\label{eq:z} \epsilon_g \rho_g ~ \partial_t z_k + \boldsymbol{\partial_x} \cdot \left( \epsilon_g \rho_g \boldsymbol{v_g} z_k \right) - \boldsymbol{\partial_x} \cdot \left( \frac{D_k \epsilon_g \rho_g}{\eta} ~ \boldsymbol{\partial_x} z_k \right) = \pi_k\]

OnlyFiniteRate Type

The OnlyFiniteRate type creates the mixture using the ChemNonEq1T option with a constant species composition and updates the finite-rate chemistry in function of the species mass fraction, pressure and temperature: \(\dot{\omega}_i(p,T,y_i)\).

SpeciesConservation Type

The SpeciesConservation type updates the species mass fraction by solving the species mass conservation equation (Eq. [eq:y]). The transport and thermodynamic properties are updated in the . This type also updates the heterogeneous reaction rate (Eq. [eq:omegaH3]) and the finite-rate chemistry in function of the species mass fraction, pressure and temperature: \(\dot{\omega}_i(p,T,y_i)\)

\[\label{eq:y} \epsilon_g \rho_g ~ \partial_t y_i + \boldsymbol{\partial_x} \cdot \left( \epsilon_g \rho_g \boldsymbol{v_g} y_i \right) - \boldsymbol{\partial_x} \cdot \left( \frac{D_i \epsilon_g \rho_g}{\eta} ~ \boldsymbol{\partial_x} y_i \right) = \epsilon_g ~ \dot{\omega}_i + \pi_i\]
\[\label{eq:omegaH3} \Omega_h = - \dot{\omega}_{C(gr)}\]

Time Control Model

Figure 1.10 shows the architecture of the Time Control model. The makeTimeControlModel.C file creates the different Time Control types based on the simpleTimeControlModel class. The Time Control types are described below.

no Type

The no type is empty and serves as a place holder when the is not used.

GradP Type

The “GradP” type updates the time step value \(\Delta t\) by computing the Courant number \(C_N\) (Eq. [eq:cn1]).

\[S_D = \frac{\text{mag}\left(\text{linearInterpolate}(\boldsymbol{v_g})\right)}{\Delta x ~ REV_{length}}\]
\[\label{eq:cn1} C_N = \text{max}(S_D) ~ \Delta t\]
\[\Delta t_{fact} = \text{min}\left[ \text{min}\left( \frac{C_{N,max}}{C_N + SMALL}, ~ 1 + 0.2 ~ \Delta t_{max} \right), ~ 1.05 \right]\]
\[\Delta t = \text{max}\left[ \text{min}\left( \Delta t_{fact} \cdot \Delta t, ~ \Delta t_{max} \right), ~ \Delta t_{min} \right]\]

GradP_ChemYEqn Type

The “GradP” type updates the time step value \(\Delta t\) by computing the Courant number \(C_N\) (Eq. [eq:cn2]) and the chemical time step (Eq. [eq:dtChem]).

\[S_D = \frac{\text{mag}\left(\text{linearInterpolate}(\boldsymbol{v_g})\right)}{\Delta x ~ REV_{length}}\]
\[\label{eq:cn2} C_N = \text{max}(S_D) ~ \Delta t\]
\[\Delta t_{fact} = \text{min}\left[ \text{min}\left( \frac{C_{N,max}}{C_N + SMALL}, ~ 1 + 0.2 ~ \Delta t_{max} \right), ~ 1.05 \right]\]
\[\Delta t_{pres} = \text{max}\left[ \text{min}\left( \Delta t_{fact} \cdot \Delta t, ~ \Delta t_{max} \right), ~ \Delta t_{min} \right]\]
\[\boldsymbol{\partial_x}~ y_{max} = \text{max}\left( \frac{y^{n-1}_i - y^n_i}{y^{n-1}_i} \right)\]
\[\begin{split}\label{eq:dtChem} \Delta t_{chemY} = \begin{cases} 1/1.2 ~ \Delta t & \text{if } ~ \boldsymbol{\partial_x}~ y_{max} > \text{dYtolMax} \\ 1.2 ~ \Delta t & \text{if } ~ \boldsymbol{\partial_x}~ y_{max} < \text{dYtolMin} \end{cases}\end{split}\]
\[\Delta t = \text{max} \left[ \text{min} \left( \text{min} \left[ \Delta t_{chemY}, ~ \Delta t_{chem} \right], ~ \Delta t_{pres} \right), ~ \Delta t_{chem,min} \right]\]

Solid Mechanics Model

Figure 1.11 shows the architecture of the state-of-the-art material solid mechanics models implementation in PATO. The makeSolidMechanicsModel.C file creates the different Solid Mechanic types based on the simpleSolidMechanicsModel class. The Solid Mechanics types are described below. The elasticSolidFoam and elasticOrthoSolidFoam types are based on the work of Philip Cardiff from foam-extend 4.1.

no Type

The no type is empty and serves as a place holder when the is not used.

ElasticThermal Type

The ElasticThermal type updates the solid displacement by solving a transient/steady-state segregated finite-volume formulation for small strain elastic isotropic thermal pyrolysable solid bodies. The displacement field D is solved for using a total Lagrangian approach, taking into account the material’s expansion/shrinkage caused by the temperature field and the advancement of the pyrolysis reactions. The solver also provides the strain tensor field epsilon and stress tensor field sigma. The governing equation solved by this Solid Mechanics type is as follows:

\[\frac{\partial \rho \partial \boldsymbol{D}}{\partial t^2} = \partial_x \cdot \left( \left( 2 \mu_s + \lambda_s \right) \tens{\partial_x \boldsymbol{D}} \right) + \boldsymbol{div(\sigma)_{exp}} - \partial_x \left(3K \alpha_{th} (T-T_0)\right) + \partial_x \left( 3K \xi \left( \tau_0 - \tau \right) \right)\]

where,

\[\boldsymbol{div(\sigma)_{exp}} = \partial_x \cdot \left( \tens{\sigma_s} - \left( 2\mu_s + \lambda_s \right) ~ \tens{\partial_x \boldsymbol{D}} \right)\]

Displacement Type

The Displacement type updates the solid displacement similarly to the ElasticThermal model. Moreover, the mesh is moved at each time step according to the calculated displacement.

elasticSolidFoam Type

The elasticSolidFoam type updates the solid displacement by solving a transient/steady-state segregated finite-volume formulation for small strain elastic isotropic solid bodies allowing for general principal material orientations. The displacement field D is solved for using a total Lagrangian approach. The solver also provides the strain tensor field epsilon and stress tensor field sigma. The governing equation solved by this Solid Mechanics type is as follows:

\[\frac{\partial \rho \partial \boldsymbol{D}}{\partial t^2} = \partial_x \cdot \left( \left( 2 \mu_s + \lambda_s \right) \tens{\partial_x \boldsymbol{D}} \right) + \partial_{x_{exp}} \cdot \left( \tens{\sigma_s} - \left( 2\mu_s + \lambda_s \right) ~ \tens{\partial_x \boldsymbol{D}} \right)\]

where,

\[\tens{\sigma}_s = \mu_s ~ \left( \tens{\partial_x \boldsymbol{D}} + \tens{\partial_x \boldsymbol{D}}^T \right) + \lambda_s ~\tens{I} ~ tr(\tens{\partial_x \boldsymbol{D}})\]

elasticOrthoSolidFoam Type

The elasticOrthoSolidFoam type updates the solid displacement by solving a transient/steady-state segregated finite-volume formulation for small strain elastic orthotropic solid bodies . The displacement field D is solved for using a total Lagrangian approach. The solver also provides the strain tensor field epsilon and stress tensor field sigma. The governing equation solved by this Solid Mechanics type is as follows:

\[\frac{\partial \rho \partial \boldsymbol{D}}{\partial t^2} = \partial_x \cdot \left( \boldsymbol{K} ~ \tens{\partial_x \boldsymbol{D}} \right) + \partial_{x_{exp}} \cdot \left( \tens{\sigma_s} - \boldsymbol{K} ~ \tens{\partial_x \boldsymbol{D}} \right)\]

where,

\[\tens{\sigma}_s = \tens{C}_e : \frac{1}{2} \left( \tens{\partial_x \boldsymbol{D}} + \tens{\partial_x \boldsymbol{D}}^T \right)\]

MaterialFailureCriteria Model

Two types of stress-based failure theories are available in literature : the maximum stress and the quadratic stress failure theories. In the maximum stress failure theory, the predicted by the material solver stresses of each mode are compared to the relevant material strength. Failure is predicted when the following criterion is satisfied:

\[\max \left( \frac{\sigma_{11}}{\sigma_{\text{t}1}^{\text{f}}}, \left| \frac{\sigma_{11}}{\sigma_{\text{c}1}^{\text{f}}} \right|, \frac{\sigma_{22}}{\sigma_{\text{t}2}^{\text{f}}}, \left| \frac{\sigma_{22}}{\sigma_{\text{c}2}^{\text{f}}} \right|, \frac{\sigma_{33}}{\sigma_{\text{t}3}^{\text{f}}}, \left| \frac{\sigma_{33}}{\sigma_{\text{t}3}^{\text{f}}} \right|, \left| \frac{\sigma_{12}}{\sigma_{12}^{\text{f}}} \right|, \left| \frac{\sigma_{23}}{\sigma_{23}^{\text{f}}} \right|, \left| \frac{\sigma_{31}}{\sigma_{31}^{\text{f}}} \right| \right) > 1, \label{eq:max_stress}\]

where \(\sigma_{\text{t}i}^{\text{f}}\), \(\sigma_{\text{c}i}^{\text{f}}\) are the maximum material strengths in tension (t) and compression (c) in the three directions (\(i=\) 1, 2, 3). Quadratic failure theories take into account the effective multi-axial loads on the material. Popular phenomenological failure theories for non-isotropic material are the Tsai-Hill and, the more general, Tsai-Wu theories .

The maximum stress model was chosen as a first approach for determining failing regions. Mechanical erosion is caused by brittle failure of the fibers, for which maximum stress theories work well. Additionally, it allows for an easier identification of the responsible modes, particularly important for the study of anisotropic materials. The uncertainties related to the maximum stress model still need to be evaluated. An extensive review and comparison of different failure prediction models can be found in .

MaterialFailureMassRemoval Model

The failure criteria model, described above, gives for each computational cell the information of whether a single cell is failing under the local stress field. The MaterialFailureMassRemoval model connects this information to the actual surface mass removal (e.g. spallation), in terms of the recession velocity:

\[u_{\text{r}} = \frac{l_{\text{f}}}{\Delta t},\]

where \(l_{\text{f}}\) is the depth of the failing region and the face of the local, failing boundary. The “failure distance” is determined at each time step, with an algorithm combining a geometrically increasing inward search to find the first non-failing cell, followed by a bisection algorithm to determine its exact distance from the surface. The mesh motion algorithm of PATO, is afterwards, responsible for applying the displacement. In-depth, disconnected patches of failing material are not accounted for here, since they involve mechanisms and phenomena, such as cracking, beyond the scope of this model.

The mass, \(m_{\text{f}}\), removed from the material due to mechanical erosion during \(\Delta t\) is calculated for each face of area \(A\) as:

\[m_{\text{f}} = \rho_s ~ u_{\text{r}} ~ l_{\text{f}}~ A ~ \Delta t,\]

where \(\rho_s\) is the solid density.

Boundary Conditions

Figure 1.12 shows the architecture of the state-of-the-art material Boundary Conditions (BC) implemented in PATO. The material BC are explained below.

BoundaryMapping BC

Figure 1.13 shows the architecture of the Boundary Mapping boundary conditions.

The boundaryMappingFvPatchScalarField class creates the Boundary Mapping patches. The makeBoundaryMappingModel.C creates the Boundary Mapping boundary conditions based on the simpleBoundaryMappingModel class. The constantBoundaryMappingModel class updates the boundary conditions of a fields list using user tables. The gaussianBoundaryMappingModel class updates the boundary conditions of a field’s list using Gaussian equations (Eq. [eq:gaussian]).

\[\label{eq:gaussian} f(t) = A ~ exp\left( \frac{-(t-B)^2}{C} \right)\]

The polynomialBoundaryMappingModel class updates the boundary conditions of a field’s list using polynomial equations (Eq. [eq:poly]).

\[\label{eq:poly} f(t) = \sum^{N_p}_i ~ A_i ~ t^i\]

The FluxFactor class updates the 2D axi-symmetric flux mapping using the distance from the user center point to the face centers along the user normal. The twoDaxiBoundaryMappingModel class updates the boundary conditions of a fields list using the radius and the axial distance. The twoDaxiFluxMapBoundaryMappingModel class updates the boundary conditions of the flux mapping field using the FluxFactor class. The twoDaxiPressureMapBoundaryMappingModel class updates the boundary conditions of the pressure field using the FluxFactor class. The threeDtecplotBoundaryMappingModel class reads a user Tecplot file and updates the boundary conditions of a fields list with the Arbitrary Mesh Interface (AMI) of OpenFOAM which enables interfacing adjacent, disconnected mesh domains using Galerkin projection.

Bprime BC

Surface mass balance
The char ablation rate \(\dot{m}_{ca}\) and the wall enthalpy \(h_w\) are computed with a thermochemical model in equilibrium at the wall. Figure 1.14 provides a schematic for the surface mass balance model based on the steady state element conservation in a control volume close to the wall. The equilibrium chemistry in the control volume is assumed to be quasi-steady in order to decouple the material response and the boundary layer. The time variation of \(p_w\), \(T_w\), \(\dot{m}_{pg}\) and \(\dot{m}_{ca}\) is neglected. Mechanical erosion is not considered here.
_images/surface-mass-balance.png

Surface mass balance at the heatshield front surface.

Under the assumption that Prandtl and Lewis numbers are equal to unity and the diffusion coefficients are identical between elements, the conservation of mass fraction of an element \(k\) in the control volume may be written as

\[C'_H \left( z_{k,w} - z_{k,e} \right) + \left( \dot{m}_{pg} + \dot{m}_{ca} \right) z_{k,w} = \dot{m}_{pg}~ z_{k,pg} + \dot{m}_{ca} ~z_{k,ca} \label{eq:massSurf1}\]
\[\left( z_{k,w} - z_{k,e} \right) + \left( \dot{B}'_{pg} + \dot{B}'_{ca} \right) z_{k,w} = \dot{B}'_{pg}~ z_{k,pg} + \dot{B}'_{ca} ~z_{k,ca} \label{eq:massSurf1b}\]

The formation of the species \(S_i\) from the elements \(A_k\) is formulated as follows

\[S_i \rightleftharpoons \sum_{k \in [1,N_e]} \nu_{i,k} A_k \label{eq:formation}\]

Table 1.1 shows an example of the formation of the species from the and elements.

[eq:formation].

\(S_1\)

\(\nu_{1,1}\)

\(\nu_{1,2}\)

\(E_1\)

\(E_2\)

1

2

If the species are assumed perfect gas, then the chemical equilibrium is given by

\[\frac{x_i}{ \prod_{k \in [1,N_e]} \left(x_k\right)^{\nu_{i,k}}} = K_i(T) ~ \Leftrightarrow ~ ln \left( x_i\right) - \sum_{k \in [1,N_e]} \nu_{i,k} ln\left(x_k\right) - ln \left[K_i(T)\right] = 0 \label{eq:massSurf2}\]
\[\sum_{i \in [1,N_s]} x_i = 1 ~~~~~~~~~~ \sum_{k \in [1,N_e]} x_k = 1 \label{eq:massSurf3}\]

The surface mass balance model computes \(\dot{m}_{ca}\) and \(h_w\) from Eq. [eq:massSurf1], [eq:massSurf2] and [eq:massSurf3].

The pyrolysis gas production rate at the heatshield front surface \(\dot{m}_{pg}\) by integrating the pyrolysis, mass and transport equations. \(p_w\) and \(C_H\) are given by the aerothermal environment. \(T_w\) and \(C'_H\) are computed in the surface energy balance described below.

The material mass loss rate leads to a surface ablation velocity given by


\[\vect{v}_{ca} = \frac{\dot{m}_{ca} }{\rho_{sw} } ~ \vect{n}\]

and is applied as a mesh motion in PATO.

Surface energy balance
The wall temperature \(T_w\) is computed with a surface energy balance model, as illustrated in Fig. 1.15. Heating and cooling energy fluxes from the environment and the porous material are shown. The state-of-the-art surface energy balance at the wall is given by
\[q^{out}_{cond} = C'_H \left( h_e - h_w \right) + \dot{m}_{pg} h_{pg} + \dot{m}_{ca} h_{ca} - \left( \dot{m}_{pg} + \dot{m}_{ca} \right) h_w+ q^{in}_{rad} - \varepsilon_w \sigma \left(T_w^4 - T_\infty^4 \right) \label{eq:Tw1}\]
_images/surface-energy-balance.png

Surface energy balance at the heatshield front surface.

The equality between inward and outward fluxes yields

\[{q}^{in}_{conv} + q^{in}_{diff} +{q}^{in}_{rad}+ q^{in}_{adv} = {q}^{out}_{cond} + {q}^{out}_{rad} + q^{out}_{adv} \label{eq:in&out}\]

The different terms of Eq. [eq:in&out] are formulated here. The convective heat flux, under the assumption of a frozen boundary layer and a non-catalytic wall is

\[{q}^{in}_{conv} = C_H \left( h_e - h_{ew} \right) \label{eq:qinconv}\]

\(h_{ew}\) is the enthalpy computed at the wall temperature, with the boundary layer edge gaseous species composition.

\[h_{ew} = \sum_{i \in [1,N_s]} y_{i,e} h_i(T_w)\]

The energy carried by diffusion of the gaseous species is given by

\[{q}^{in}_{diff} = C_M \left( h_{ew} - h_{w} \right)\]

\(h_{w}\) is the enthalpy at the wall temperature, with the porous material gaseous species composition.

\[h_{w} = \sum_{i \in [1,N_s]} y_{i,w} h_i(T_w)\]

The advective energy transport produced by the pyrolysis and the char ablation read respectively

\[q^{in}_{adv} = \dot{m}_{pg} h_{pg} + \dot{m}_{ca} h_{ca} \label{eq:qinadv}\]
\[q^{out}_{adv} = \left( \dot{m}_{pg} + \dot{m}_{ca} \right) h_w\]

The radiative heating from the plasma is given by,

\[{q}^{in}_{rad} = \alpha_{w} ~ q_{pla} + \varepsilon_w ~ \sigma ~ T^4_\infty \label{qradin-eq}\]

while the re-radiative cooling by surface emission reads

\[{q}^{out}_{rad} = \varepsilon_{w} ~ \sigma ~ T^4_w \label{eq:qoutadv}\]

under the assumption that the surface behaves as a gray body.

The effective heat conduction in the porous material is given by

\[{q}^{out}_{cond} = - \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n}\]

Eq. [eq:in&out], using the different energy contributions explained above, gives

\[\begin{split}\begin{aligned} \begin{split} &- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = C_H \left( h_e - h_{ew} \right) + C_M \left( h_{ew} - h_w \right) \\ &+ \dot{m}_{pg} \left( h_{pg} - h_w \right) + \dot{m}_{ca} \left( h_{ca} - h_w \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \end{split} \label{eq:surfEnergy1} \end{aligned}\end{split}\]

Assuming equal Prandtl and Lewis number and equal diffusion coefficients for all elements, Eq. [eq:surfEnergy1] becomes

\[\begin{split}\begin{aligned} \begin{split} &- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = C'_H \left( h_e - h_w \right) \\ &+ \dot{m}_{pg} \left( h_{pg} - h_w \right) + \dot{m}_{ca} \left( h_{ca} - h_w \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \end{split} \label{eq:surfEnergy2} \end{aligned}\end{split}\]

\(C_H\) is corrected to account only for the blockage induced by the pyrolysis and ablation gas blowing. The blowing correction (Eq. [eq:C’H]) is updated in the BlowingCorrection class where other film coefficient corrections, such as roughness and hot wall effects, are not considered.

\[\begin{split}\begin{eqnarray} C'_H = C_H \frac{ ln \left[1 + 2 \lambda \left(B'_{pg} + B'_{ca}\right) \right]}{ 2 \lambda \left(B'_{pg} + B'_{ca}\right)} \\ B'_{pg} = \frac{\dot{m}_{pg}}{C_M} \\ B'_{ca} = \frac{\dot{m}_{ca}}{C_M} \end{eqnarray} \label{eq:C'H}\end{split}\]
When the chemistryOn flag is turned on, the surface energy balance computes \(T_w\) from Eq. [eq:surfEnergy2] using the following inputs: \(C'_H\), \(h_e\), \(h_w\), \(\dot{m}_{pg}\), \(h_{pg}\), \(\dot{m}_{ca}\), \(h_{ca}\), \(\varepsilon_w\), \(T_\infty\), \(\alpha_w\) and \(q_{pla}\). \(C'_H\) is computed with Eq. [eq:C’H]. \(C_H\) and \(h_e\) are given by the aerothermal environment. \(h_w\) and \(\dot{m}_{ca}\) come from the surface mass balance. \(\dot{m}_{pg}\) is computed by integrating the pyrolysis, mass and transport equations. \(h_{pg}\) and \(h_{ca}\) are computed using the model.
When the chemistryOn flag is turned off, the wall temperature is updated using the following equation:
\[\begin{aligned} \begin{split} &- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = h_{conv} \left( T_e - T_w \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \end{split} \label{eq:surfEnergyChemistryOff} \end{aligned}\]

optionsBC

The following optionsBC types are activated with a Switch in the BC input file:

  • factorOptionModel multiplies the fields from the first tuple elements in factorList by a factor equals to the second tuple elements.

  • timeFactorOptionModel updates the fields from the first tuple elements in timeFactorList using a linear interpolation of the data from timeFactorFile. The second tuple elements give the column indexes of the corresponding fields in timeFactorFile.

Listing [lis:optionBC] shows an example of the optionBC types. In this case, factorOptionModel multiplies by 2 the pressure boundary field of the top BC. timeFactorOptionModel updates the char blowing rate at the top BC using a linear interpolation in time of the first column values from constant/timeFactor.

boundaryField {
    top {
        type Bprime;
        factorOption yes;
        factorList (("p" 2));
        timeFactorOption yes;
        timeFactorFile "constant/timeFactor";
        timeFactorList (("BprimeCw" 1));
        BprimeFile "data/Materials/TACOT/BprimeTable";
        mappingType "constant";
        mappingFields ((p "1") (rhoeUeCH "2") (h_r "3"));
        Tbackground 187;
        qRad 0;
        lambda 0.5;
        chemistryOn 1;
        value uniform 300;
    }
}

BprimeCoating BC

The BprimeCoating BC extends the Bprime boundary condition for coated surfaces. While the underlying physics are identical with the ones of the previous section, the surface mass and energy balances are initially closed with the thermochemical parameters of the single component coating. Ablation of the material reduces the thickness of the coating till its complete removal, without deforming the mesh, an assumption justified by the fact that coatings are usually less than a millimeter in thickness. After the coating’s removal the substrate material is exposed and the boundary condition behaves like in the uncoated case.

BprimeCoatingMixture BC

The BprimeCoatingMixture BC is an extension of the BprimeCoating BC including multiple species coatings, such as Si-O-C (silicon oxycarbide) surfaces. The coating’s elemental composition needs to be specified, with the B’ tables calculated at run-time.

HeatFlux BC

The HeatFluxBoundaryConditions class applies a heat flux (\(q^{CFD}_{conv}\)) directly to the boundary. This boundary condition does not currently allow for recession. The surface energy balance is given by

\[q^{out}_{cond} = q^{CFD}_{conv} + \alpha_w q_{pla} - \varepsilon_w \sigma \left(T_w^4 - T_\infty^4 \right) \label{eq:heatflux_energy}\]

erosionModel BC

The erosionModelBoundaryConditions class updates the cellMotionU field, which directly impacts the mesh motion. The physicsBasedErosionModel flag, chosen by the user, selects the type of erosion model.

  • type=1: the ablation rate is based on the minimum fiber radius failure and the gradient of fiber radius.

    \[\boldsymbol{v}_{mesh} = \frac{r_{f,fail} - r_{f,w}}{\boldsymbol{\partial_x} r_{f,int} \cdot \boldsymbol{n} ~ \Delta t} ~ \boldsymbol{n}\]
  • type=2: the ablation rate is based on the solid density gradient.

    \[\boldsymbol{v}_{mesh} = \frac{50 - \rho_{s,w}}{\boldsymbol{\partial_x} \rho_{s,int} \cdot \boldsymbol{n}~ \Delta t} ~ \boldsymbol{n}\]
  • type=3: the ablation rate is based on the cell-by-cell removing.

    \[\boldsymbol{v}_{mesh} = 0.98 ~ \boldsymbol{v}_{mesh} + 0.02 ~ \frac{ \Delta x }{\Delta t} ~ \boldsymbol{n}\]
  • type=4: the ablation rate is based on the solid density.

    \[\boldsymbol{v}_{mesh} = \text{max}\left(1.05 ~ \boldsymbol{v}_{mesh} \cdot \boldsymbol{n} , ~\frac{10^{-7}}{\rho_{s,w}} \right) ~ \boldsymbol{n}\]
  • type=5: the ablation rate is based on the heterogeneous rate.

    \[\boldsymbol{v}_{mesh} = 0.95 ~ \boldsymbol{v}_{mesh} + 0.05 ~ \frac{\Omega_{H,int}}{\rho_{s,int}} ~ \boldsymbol{n}\]

coupledMixed BC

The coupledMixedFvPatchScalarField class creates the boundary conditions patch and updates the field \(f_1\) boundary conditions using the harmonic averaging of the neighbor field \(f_2\) (Eq. [eq:harmo]).

\[\label{eq:harmo} f_{1/2} = v_{f} ~ f_{1} + \left(1 - v_{f} \right) ~ f_2\]
\[v_f = \frac{\frac{k_2}{\Delta x_2}}{\frac{k_1}{\Delta x_1} + \frac{k_2}{\Delta x_2}}\]

positiveGradient BC

The positiveGradientFvPatchScalarField class creates the boundary conditions patch and updates the field \(f_w\) boundary conditions using the cell center value \(f_1\) and the positive gradient (Eq. [eq:posGrad]).

\[\begin{split}\label{eq:posGrad} \boldsymbol{\partial_x} f_w = \begin{cases} \frac{f_w-f_1}{\Delta x_1} & \text{ if } ~ f_w > f_1\\ 0 & \text{ if } ~ f_w \leq f_1 \\\end{cases}\end{split}\]

pyro_recession BC

pyro_recession BC updates the mesh motion velocity \(\boldsymbol{v}_{mesh}\) using the recession rate \(r_r\).

\[\boldsymbol{v}_{mesh} = r_r ~\boldsymbol{n}\]

radiative BC

The radiativeBoundaryConditions class updates the temperature BC. The wall temperature \(T_w\) is computed with a surface energy balance model (Eq. [eq:eb1]).

\[{q}^{in}_{conv} + q^{in}_{diff} + {q}^{in}_{rad} = {q}^{out}_{cond} + {q}^{out}_{rad} \label{eq:eb1}\]

The convective heat flux, under the assumption of a frozen boundary layer and a non-catalytic wall is

\[{q}^{in}_{conv} = C_H \left( h_e - h_{ew} \right)\]

\(h_{ew}\) is the enthalpy computed at the wall temperature, with the boundary layer edge gaseous species composition.

\[h_{ew} = \sum_{i \in [1,N_s]} y_{i,e} h_i(T_w)\]

The energy carried by diffusion of the gaseous species is given by

\[{q}^{in}_{diff} = C_M \left( h_{ew} - h_{w} \right)\]

\(h_{w}\) is the enthalpy at the wall temperature, with the porous material gaseous species composition.

\[h_{w} = \sum_{i \in [1,N_s]} y_{i,w} h_i(T_w)\]

The radiative heating from the plasma is given by,

\[{q}^{in}_{rad} = \alpha_{w} ~ q_{pla} + \varepsilon_w ~ \sigma ~ T^4_\infty\]

while the re-radiative cooling by surface emission reads

\[{q}^{out}_{rad} = \varepsilon_{w} ~ \sigma ~ T^4_w\]

under the assumption that the surface behaves as a gray body. The effective heat conduction in the porous material is given by

\[{q}^{out}_{cond} = - \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n}\]

Eq. [eq:eb1], using the different energy contributions explained above, gives

\[- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = C_H \left( h_e - h_{ew} \right) + C_M \left( h_{ew} - h_w \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \label{eq:surfEnergy3}\]

Assuming equal Prandtl and Lewis number and equal diffusion coefficients for all elements, Eq. [eq:surfEnergy3] becomes

\[- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = C'_H \left( h_e - h_w \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \label{eq:surfEnergy4}\]

\(C_H\) is normally corrected to account for the blockage induced by the pyrolysis and ablation gas blowing. This radiativeBoundaryConditions class assumes there is no pyrolysis and ablation gas blowing.

\[C'_H = C_H \label{eq:CH}\]

The surface energy balance computes \(T_w\) from Eq. [eq:surfEnergy4] using the following user inputs: \(C_H\), \(h_e\), \(h_w\), \(\varepsilon_w\), \(T_\infty\), \(\alpha_w\) and \(q_{pla}\).

speciesBC BC

The speciesBCBoundaryConditions class updates the \(C'_H\) boundary conditions and reads the boundary layer edge species composition.

VolumeAblation BC

The VolumeAblationBoundaryConditions class updates the temperature boundary conditions and the mesh motion. The wall temperature \(T_w\) is computed with a surface energy balance model (Eq. [eq:eb1]).

\[{q}^{in}_{conv} + {q}^{in}_{rad} = {q}^{out}_{cond} + {q}^{out}_{rad} \label{eq:eb2}\]

The convective heat flux, under the assumption of a frozen boundary layer and a non-catalytic wall is

\[{q}^{in}_{conv} = C_H \left( h_e - h_{ew} \right)\]

\(h_{ew}\) is the enthalpy computed at the wall temperature, with the boundary layer edge gaseous species composition.

\[h_{ew} = \sum_{i \in [1,N_s]} y_{i,e} h_i(T_w)\]

The radiative heating from the plasma is given by,

\[{q}^{in}_{rad} = \alpha_{w} ~ q_{pla} + \varepsilon_w ~ \sigma ~ T^4_\infty\]

while the re-radiative cooling by surface emission reads

\[{q}^{out}_{rad} = \varepsilon_{w} ~ \sigma ~ T^4_w\]

under the assumption that the surface behaves as a gray body. The effective heat conduction in the porous material is given by

\[{q}^{out}_{cond} = - \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n}\]

Eq. [eq:eb2], using the different energy contributions explained above, gives

\[- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = C_H \left( h_e - h_{ew} \right) - \varepsilon_w \sigma \left( T_w^4 - T_{\infty}^4 \right) + \alpha_w q_{pla} \label{eq:surfEnergy5}\]
The surface energy balance computes \(T_w\) from Eq. [eq:surfEnergy5] using the following user inputs: \(C_H\), \(h_e\), \(y_{i,e}\), \(\varepsilon_w\), \(T_\infty\), \(\alpha_w\) and \(q_{pla}\).
Besides, the VolumeAblationBoundaryConditions class updates the cellMotionU boundary field, which directly impacts the mesh motion. The physicsBasedErosionModel user flag selects the type of motion model.
  • type 1: the ablation rate is based on the minimum fiber radius failure and the gradient of fiber radius.

    \[\boldsymbol{v}_{mesh} = \frac{r_{f,fail} - r_{f,w}}{\boldsymbol{\partial_x} r_{f,int} \cdot \boldsymbol{n} ~ \Delta t} ~ \boldsymbol{n}\]
  • type 2: the ablation rate is based on the solid density gradient.

    \[\boldsymbol{v}_{mesh} = \frac{50 - \rho_{s,w}}{\boldsymbol{\partial_x} \rho_{s,int} \cdot \boldsymbol{n}~ \Delta t} ~ \boldsymbol{n}\]
  • type 3: the ablation rate is based on the cell-by-cell removing.

    \[\boldsymbol{v}_{mesh} = 0.98 ~ \boldsymbol{v}_{mesh} + 0.02 ~ \frac{ \Delta x }{\Delta t} ~ \boldsymbol{n}\]
  • type 4: the ablation rate is based on the solid density.

    \[\boldsymbol{v}_{mesh} = \text{max}\left(1.05 ~ \boldsymbol{v}_{mesh} \cdot \boldsymbol{n} , ~\frac{10^{-7}}{\rho_{s,w}} \right) ~ \boldsymbol{n}\]
  • type 5: the ablation rate is based on the heterogeneous rate.

    \[\boldsymbol{v}_{mesh} = 0.95 ~ \boldsymbol{v}_{mesh} + 0.05 ~ \frac{\Omega_{H,int}}{\rho_{s,int}} ~ \boldsymbol{n}\]

basicWallHeatFluxTemperature BC

The basicWallHeatFluxTemperature BC applies a heat flux condition to temperature on a wall. It is based on the OpenFOAM externalWallHeatFlux BC. It operates in one of three modes:

  • Fixed power: supply Power \(Q\) in W.

    \[\begin{split}\begin{align} T_{w} &= T_{cell}\\ \partial_w T &= \frac{\frac{Q}{S_f} + q_r}{k_s} \end{align}\end{split}\]
  • Heat flux: supply heat flux \(q\) in W \(\cdot\) m\(^{-2}\).

    \[\begin{split}\begin{align} T_{w} &= T_{cell}\\ \partial_w T &= \frac{q + q_r}{k_s} \end{align}\end{split}\]
  • Fixed heat transfer coefficient: supply heat transfer coefficient \(h_{th}\) in W \(\cdot\) m\(^{-2} \cdot\) K\(^{-1}\) and ambient temperature \(T_{\infty}\) in K.

    \[\begin{split}\begin{align} T_{w} &= \frac{h - \frac{q_r}{T_{cell}}}{h - \frac{q_r}{T_{cell}} + k_s ~ \frac{1}{\delta}} ~ \frac{\epsilon ~ \sigma ~ T^4}{h - \frac{q_r}{T_{cell}}} + \left( 1 - \frac{h - \frac{q_r}{T_{cell}}}{h - \frac{q_r}{T_{cell}} + k_s ~ \frac{1}{\delta}} \right) ~ T_{cell} \; &\text{if} \; q_r < 0\\ T_{w} &= \frac{h}{h + k_s ~ \frac{1}{\delta}} ~ \frac{\epsilon ~ \sigma ~ T^4 + q_r}{h} + \left( 1 - \frac{h}{h + k_s ~ \frac{1}{\delta}} \right) ~ T_{cell} \; &\text{if} \; q_r \geq 0 \end{align}\end{split}\]

darcyVelocityPressure BC

The darcyVelocityPressure BC provides a Darcy’s velocity condition for pressure. It is derived from a fixedGradient condition, whereas pressure is calculated from the projection of the velocity vector and permeability tensor on the direction of the flow.

\[ \label{eq:darcyBC} \partial_w p = - \mu_g*\frac{\epsilon \boldsymbol{v_g} \cdot \boldsymbol{n}}{\underline{\underline{K_s}} \cdot \boldsymbol{n} \cdot \boldsymbol{n}}\]

darcyFlowRatePressure BC

The darcyFlowRatePressure BC provides a Darcy flow calculated for a uniform velocity field normal to the patch (Eq. [eq:darcyBC]) adjusted to match the specified flow rate. For a mass-based flux, the flow rate should be provided in kg \(\cdot\) s\(^{-1}\). For a volumetric-based flux, the flow rate is in m\(^3 \cdot s^{-1}\).

forchheimerVelocityPressure BC

The forchheimerVelocityPressure BC provides a compressible Darcy-Forchheimer’s velocity condition for pressure. It is derived from a fixedGradient condition, whereas pressure is calculated from the projection of the velocity vector and permeability tensor on the direction of the flow.

\[\label{eq:forchheimerBC} \partial_w p = - \left( \frac{\mu_g}{\tens{K} \cdot \boldsymbol{n} \cdot \boldsymbol{n}} + \rho_g \tens{\beta} \cdot \boldsymbol{n} \cdot \boldsymbol{n} ~ |\epsilon \boldsymbol{v_g}| \right) \left( \epsilon \boldsymbol{v_g} \cdot \boldsymbol{n} \right) + \rho_g ~ g_f\]

forchheimerFlowRatePressure BC

The forchheimerFlowRatePressure BC provides a compressible Darcy-Forchheimer’s flow calculated for a uniform velocity field normal to the patch (Eq. [eq:forchheimerBC]) adjusted to match the specified flow rate. For a mass-based flux, the flow rate should be provided in kg \(\cdot\) s\(^{-1}\). For a volumetric-based flux, the flow rate is in m\(^3 \cdot s^{-1}\).

tractionDisplacement BC

The tractionDisplacement BC provides a fixed traction BC for the standard linear elastic, fixed coefficient displacement equation with thermal and pyrolysis contribution.

\[\begin{split}\label{eq:tracDis} \begin{split} \partial_w \boldsymbol{D} & = \frac{1}{2 \mu_s + \lambda_s} \left( \boldsymbol{F_t} + F_p ~ \boldsymbol{n} - \left( \boldsymbol{n} \cdot \left( \mu_s \tens{\partial_x D}^T - \left( \mu_s + \lambda_s \right) ~ \tens{\partial_x D}\right) \right)\right.\\ & \left. - \boldsymbol{n} ~ \lambda_s ~ tr(\tens{\partial_x D}) + \boldsymbol{n} ~ 3 K ~ \alpha_{th} ~ (T_a -T_0) - \boldsymbol{n} ~ 3 K ~ \xi \left( \tau_0 - \tau \right) \right) \end{split}\end{split}\]

fixedDisplacementZeroShear BC

The “fixedDisplacementZeroShear” BC sets the patch-normal component of displacement while allowing the two tangential directions to be free canceling any shear stress. The BC solves equation Eq. [eq:tracDis] and project its normal to the patch, setting the other components to zero.

qRad_emission_absorption BC

The qRad_emission_absorption BC updates the temperature boundary field at a patch using the radiative equilibrium condition. Other fields are mapped through BC.

\[- \left(~ \overline{\overline{\vect{k}}}_w \cdot \frac{\partial T_w}{ \partial \vect{n}} \right) \cdot \vect{n} = - \epsilon ~ \sigma \left( T_w^4 - T_{\inf}^4 \right) + \alpha_w ~ q_{rad,w}\]