\documentclass[12pt,modern,tighten,times,apj]{aastex61}

\newcommand{\sigv}{{\ensuremath{\langle \sigma v \rangle}}}
\newcommand{\eg}{e.g.}
\newcommand{\alp}{\ensuremath{\alpha}}
\newcommand{\thsp}{\thinspace}
\newcommand{\cc}{\ensuremath {\mathrm{cm^{3}}}}
\newcommand{\gcc}{\ensuremath{\mathrm{\thsp g \thsp cm^{-3}}}}
\newcommand{\kel}{\ensuremath{\mathrm{\thsp K}}}
\newcommand{\gk}{\ensuremath{\mathrm{\thsp GK}}}
\newcommand{\calN}{\ensuremath {\mathcal N}}
\newcommand{\calZ} {\ensuremath {\mathcal {Z}}}
\newcommand{\isotope}[2]{\ensuremath{\mathrm{^{#2}#1}}}
\newcommand{\ye}{\ensuremath{Y_{e}}}

\begin{document}

\title{XNet}

\section{Introduction}

Represented numerically as a system of first order differential equations, the nuclear reaction network has sink and source terms representing each of the many nuclear reactions involved.
XNet is group of routines, written in FORTRAN95, designed to solve arbitrary nuclear reaction networks of astrophysical interest.
To explain the functionality of XNet, we begin by briefly outlining the sets of reactions we must solve to evolve the nuclear composition.
To this end, we present a brief overview of the thermonuclear reaction rates of interest and how these rates are assembled into the differential equations that must ultimately be solved.
For more detailed information, we refer the reader to several textbooks covering this subjects \cite{Clay83,RoRo88,Arne96}.
We follow this with a discussion of the solvers included within XNet.
Because the rate equations in nucleosynthetic applications involve a wide range of timescales, implicit methods have proven mandatory, leading to the need to solve matrix equations.
Efforts to improve the performance of such rate equation methods are focused on efficient solution of these matrix equations, in particular by making best use of the sparseness of these matrices, and finding methods that require less frequent matrix solutions.

\section{Reaction Rates}\label{sect:reacrate}

There are a large number of types of nuclear reactions which are of astrophysical interest, most of which are included in XNet.
In addition to the emission or absorption of  nuclei and nucleons, nuclear reactions can involve the emission or  absorption of photons ($\gamma$-rays) and leptons (electrons, neutrinos,  and their anti-particles).
As a result, nuclear reactions involve three of the  four fundamental forces, the nuclear strong, electromagnetic and nuclear weak forces.
Reactions involving leptons (termed weak interactions) proceed  much more slowly than those involving only nucleons and photons;  however,  these reactions are important because only weak interactions can change the global ratio of protons to neutrons.

The most basic piece of information about any nuclear reaction is the nuclear cross section.
The cross section for a reaction between target $j$ and projectile $k$ is defined by
\begin{equation}
    \sigma = {\rm{number\ of\ reactions\ target^{-1} sec^{-1}} \over
    {flux\ of\ incoming\ projectiles}} = {{r/n_j} \over {n_k v}}.
    \label{eq:sigma}
\end{equation}
The second equality holds when the relative velocity between targets of number density $n_j$ and projectiles of number density $n_k$ is constant and has the value $v$.
Then $r$, the number of reactions per $cm^{-3}$\ and sec, can be expressed as $r=\sigma v n_j n_k$.
More generally, the targets and projectiles have distributions of velocities, in which case $r$ is given by
\begin{equation}
    r_{j,k}=\int \sigma (\vert \vec v_j -\vec v_k\vert) \vert \vec v_j
    -\vec v_k\vert d^3 n_j d^3 n_k.
    \label{eq:rate}
\end{equation}
The evaluation of this integral depends on the types of particles and distributions which are involved. For nuclei $j$ and $k$ in an astrophysical plasma, Maxwell-Boltzmann statistics generally apply; thus,
\begin{equation}
    d^3n=n ({{m} \over {2\pi k_B T}})^{3/2} \exp (-{{mv^2} \over {2 k_B T}}) d^3v,
\end{equation}
allowing $n_j$ and $n_k$ to be moved outside of the integral.
Eq.~\ref{eq:rate} can then be written as $r_{j,k}=\sigv_{j,k} n_j n_k$, where \sigv\ is the velocity integrated cross section.
Equivalently, one can express the reaction rate in terms of a mean lifetime of particle $j$ against destruction by particle $k$,
\begin{equation}
    \tau_{k}(j)= {1 \over {\sigv_{j,k} n_{k}}}
    \label{eq:tau}
\end{equation}

For thermonuclear reactions, these integrated cross sections have the form \cite{Clay83,FoCZ67}
\begin{equation}
    \langle j,k \rangle \equiv \sigv_{j,k}= ({8 \over {\mu \pi}})^{1/2}
    (k_B T)^{-3/2} \int_0 ^\infty E \sigma (E) {\rm exp}(-E/k_B T) dE,
    \label{eq:sigv}
\end{equation}
where $\mu$ denotes the reduced mass of the target-projectile system, $E$ the center of mass energy, $T$ the temperature and $k_{B}$ is Boltzmann's constant.

Experimental measurements and theoretical predictions for these reaction rates provide the data input necessary to study astrophysical thermonuclear kinetics.
While detailed discussion of individual rates is beyond the scope of this article, the interested reader is directed to the following reviews, in this volume and elsewhere.
Experimental nuclear rates and the methodology for measuring them have been reviewed in detail by \cite{RoRo88,KaTW98}.
A number of articles in this volume review the charged particle reaction rates which are important in the Sun \cite{HaPR04}, in later stages of stellar evolution \cite{BuBa04}, and for explosive burning on compact objects \cite{AnSB04,HeJI04,ReSc04}.
Experimental neutron capture cross sections are also summarized \cite{KaMe04,BaKa00}.
Theoretical modeling of these rates \cite{RaDe04,MaNW04} is vitally important to provide the many rates for which experimental information is incomplete or non-existant.
Beyond measuring or calculating these rates, progress in nuclear astrophysics also requires the compilation and dissemination (in a usable form) of this hard-earned nuclear data to the broadest astrophysical community \cite{CaFo88,GRSD04,Smit03}.

When particle $k$ in Eq.~\ref{eq:rate} is a photon, the distribution $d^3n_k$ is given by the Plank distribution,
\begin{equation}
    d^3n_{\gamma} =  {{8 \pi} \over {c^3 h^3}} {{E_{\gamma}^2} \over
    {\exp \left(E_{\gamma} /k_B T\right)-1}} dE_{\gamma} \ .
\end{equation}
Furthermore, the relative velocity is always $c$ and thus the integral is separable, simplifying to
\begin{equation}
    r_j  = {{\int d^3n_j}\over {\pi ^2 (c \hbar )^3}} \int_0 ^\infty {{c
    \sigma(E_\gamma ) E_{\gamma}^2} \over {{\rm exp}(E_\gamma /k_B T) -1}} dE_
    \gamma \equiv \lambda_{j,\gamma} (T) n_j.
    \label{eq:phrate}
\end{equation}
In practice it is not usually necessary to directly evaluate the photodisintegration cross sections (see, however, \cite{MoZU04} for exceptions), because they can be expressed by detailed balance in terms of the capture cross sections for the inverse reaction, $l+m\rightarrow j+\gamma$ \cite{FoCZ67} .
\begin{equation}
    \lambda_{j,\gamma} (T)= ({{G_l G_m} \over G_j}) ({{A_l A_m} \over A_j})
    ^{3/2} ({{m_u k_B T} \over {2\pi \hbar^2}})^{3/2} \langle l,m \rangle
    \exp (-Q_{lm}/k_B T).
    \label{eq:detbal}
\end{equation}
This expression depends on the partition functions, $G_{k}=\sum_i (2J_i+1) \exp (-E_i/k_B T)$ (which account for the populations of the excited states of the nucleus), the mass numbers, $A$, the temperature $T$, the inverse reaction rate $\langle l,m \rangle$, and the reaction $Q$-value (the energy released by the reaction), $Q_{lm}=(m_l+m_m-m_j) c^2$.
Since photodisintegrations are endoergic, their rates are vanishingly small until sufficient photons exist in the high energy tail of the Planck distribution with energies $> Q_{{lm}}$.
As a rule of thumb this requires $T$$\approx$$Q_{lm}/30 k_{B}$.

In practice, these experimental and theoretical reaction rates are determined for bare nuclei, while in astrophysical plasmas, these reactions occur among a background of other nuclei and electrons.
As a result of this background, the reacting nuclei experience a Coulomb repulsion modified from
that of bare nuclei.
For high densities and/or low temperatures, the effects of this screening of reactions becomes very important.
Under most conditions (with non-vanishing temperatures) the generalized reaction rate integral can be separated into the traditional expression without screening [Eq.~\ref{eq:sigv}] and a screening factor,
\begin{equation}
    \langle j,k \rangle^*=f_{scr}(Z_j,Z_k,\rho,T,n_i) \langle j,k \rangle.
    \label{eq:screen}
\end{equation}
This screening factor is dependent on the charge of the involved particles, the density, temperature, and the composition of the plasma. For more details on the form of $f_{scr}$, see, \eg, \cite{Salp54,DeGC73,Ichi93,BrSa97}.
At high densities and low temperatures screening factors can enhance reactions by many orders of magnitude and lead to {\em pycnonuclear ignition}.
In the extreme case of very low temperatures, where reactions are only possible via ground state oscillations of the nuclei in a Coulomb lattice, Eq.~\ref{eq:screen} breaks down, because it was derived under the assumption of a Boltzmann distribution \cite{SaVa69,IcKi99}.

In stellar plasmas, target nuclei also do not exist solely in their ground states.
This complicates the rate expression in Eq.~\ref{eq:sigv}, which now must take into account the cross sections for capture out of the different excited states and properly weight them according to their probability of occurrence in the ensemble of target nuclei.
Because the timescales for transitions between excited states of a nucleus are typically much shorter than other reaction timescales, it is usually valid to assume that the nuclei are internally equilibrated and a given excited state is populated in the ensemble by the usual Boltzmann factor $\propto e^{-E/k_BT}$, where $E$ now is the excitation energy of that state.
From this, one may derive a factor, called the {\em stellar enhancement factor} (SEF), to correct the ground-state reaction rate for the population of excited states (see, e.g., \cite{RaTh00,AARD99}).

Interesting complications to this prescription arise when the internal
equilibration timescale for a nucleus exceeds the other reaction
timescales in the problem.  This usually occurs when a large spin
difference between the ground state of an isotope and its first excited state
prevents them from communicating directly via internal transitions.
The isotope $^{26}$Al is the prototypical example, with a ground and isomeric state of spin and parity $5^+$ and $0^+$, respectively.  When these two states equilibrate, it is not through a direct transition between the states--that simply takes too long.  Rather the equilibration occurs
through transitions to higher-lying levels that communicate effectively
with both levels.  This problem has been studied in detail (e.g.,
\cite{WaFo80}), and the most straightforward way of dealing with this is
to assume that the higher-lying levels are in a steady state since their
destruction timescales are so rapid.  When this is done, the population of
the target nucleus break up into two ensembles, one tied to the ground
state and one tied to the isomer \cite{GuMe01}.  These may then be treated
as separate species in the network, each with its own rates to and from
other isotopes and with effective rates for transitions between the two
ensembles.  Fortunately, the number of nuclei requiring such treatment is
small and does not add much computational burden to running the nuclear
reaction network.

A procedure similar to that used to derive Eq.~\ref{eq:phrate} applies to captures of electrons by nuclei.  Because the electron is 1836 times less massive than a
nucleon, the velocity of the nucleus $j$ in the center of mass system is
negligible in comparison to the electron velocity ($\vert \vec v_j- \vec
v_e \vert \approx \vert \vec v_e \vert$).  In the neutral, completely
ionized plasmas typical of the astrophysical sites of nucleosynthesis, the
electron number density, $n_{e}$, is equal to the total density of protons
in nuclei, $\sum_i Z_i n_i$.  However in many of these astrophysical
settings the electrons are at least partially degenerate, therefore the
electron distribution cannot be assumed to be Maxwellian.  Instead the
capture cross section may be integrated over a Boltzmann, partially
degenerate, or degenerate Fermi distribution of electrons, depending on the
astrophysical conditions.  The resulting electron capture rates are
functions of $T$ and $n_e$, $r_j=\lambda_{j,e} (T,n_e) n_j.$  Similar equations apply for the capture of positrons which are in thermal equilibrium with photons, electrons, and nuclei.  Electron and positron capture calculations have been performed for a large variety of nuclei with mass numbers between A=20 and A=100 (see \cite{LiMF04} for more information).
For normal decays, like beta or alpha decays, with a characteristic  half-life
$\tau_{1/2}$,  Eq.~\ref{eq:phrate} also applies, with the
decay constant  $\lambda_j=\ln 2/\tau_{1/2}$.  In addition to innumerable
experimental half-life determinations, beta-decay half-lives for a wide range of unstable nuclei have  been predicted (see \cite{Borz04,MoNK97}).

Even though the size of the neutrino scattering cross section on nuclei and electrons is very small, at high densities ($\rho \sim 10^{13} \gcc$), enough scattering events occur to thermalize the neutrino distribution.  Under such conditions the inverse process to electron capture (neutrino capture) can occur in significant numbers and the neutrino capture rate can be expressed in a form similar to Eqs.~\ref{eq:phrate} by integrating over the thermal
neutrino distribution (e.g. \cite{FuMe95}).  Inelastic neutrino scattering
on nuclei can also be expressed in this form.  The latter can cause
particle emission, similar to photodisintegration.  See \cite{BuRe04,Brue85,Voge04} for more complete discussion of the interactions of neutrinos with matter.  The calculation of these rates
can be further complicated by the neutrinos being out of thermal
equilibrium with the local environment.  When thermal equilibrium among
neutrinos was established at a different location, then the neutrino
distribution might be characterized by a chemical potential and a
temperature different from the local values.  Otherwise, the neutrino
distribution must be evolved in detail (see, \eg, \cite{MeMe99}).

\subsection{Screening}

While much of the literature on the screening of nuclear reactions has focused on the screening of fusion reactions, this same physics is important when reaction pairs have equilibrated, be it local quasi-equilibrium (QSE) or global Nuclear Statistical Equilibrium (NSE) \citep{HiTh96,BrGa99}.
If equilibrium abundances calculated from thermonuclear reaction networks using these fusion rates are to match the abundances calculated from equilibrium expressions, the relevant screening factors must be calculated consistently.
Using the velocity integrated cross section $\langle \sigma v \rangle$, the screened cross section for the reaction of nuclei $i$ and $j$ is defined in terms of the unscreened cross section by
\begin{equation}
{\langle \sigma v \rangle}_{screened\ nuclei} = \exp(H_{ij}) {\langle
\sigma v \rangle}_{bare\ nuclei} \ ,
\end{equation}
where $\exp(H_{ij})$ is termed the screening enhancement factor, sometimes denoted $f_{scr}$.

Screening enters the equilibrium expressions for NSE or QSE as a modification of the nuclear binding energy, $H(Z)$, that is the difference in the Helmholtz free energy due to screening in assembling the nucleus $^AZ$.
Some screening laws, like Salpeter's original weak and strong screening laws \citep{Salp54}, are derived analytically from this same change in the free energy \citep[see also][]{DeGrCo73}.
Given an expression for the change in free energy $H(Z)$, the screening factor for reaction rates can be computed from
\begin{equation}
H_{ij} = (H(Z_i+Z_j)-H(Z_i)-H(Z_j))/k_B T.
\end{equation}
Other screening laws are the product of fits to Monte Carlo plasma simulations \citep[see, for example,]{OgIyIc91}
Within statistical uncertainties, these alternative methods produce consistent results \citep[see, for example,][]{DeSl99,Rose92}.

Previously, \citet{HiTh96} had constructed the NSE screening term sequentially from $H_{p,\gamma}$ terms to maintain consistency with the nuclear reaction network results, whereas \citet{BrGa99} computed NSE screening terms from global Coulomb corrections using various moments in powers of $Z$ over the NSE abundance distribution.
Where $H_{p,\gamma} = (H(Z+1)-H(Z)-H(1))/k_B T$, these results should be consistent. (Note $H(1)=0$, there is no reaction that builds a proton.)

The necessity of this functional form for screening comes from the requirement that the change in the difference in the binding energy due to screening between two species must be independent of the reaction pathway.
For example, the abundances of $^AZ$ and $^{(A+4)}(Z+2)$ can be kept in equilibrium by $(\alpha,\gamma)$ and it reverse or by the series $(p,\gamma) (p,\gamma) (n,\gamma) (n,\gamma)$ and their reverses.
When constructed from $H(Z)$, this is requirement is manifestly met, $\Delta BE = H(Z+2)-H(Z)$.
Without this, you can not define a unique relation for the equilibrium screening correction that covers all of the reaction paths that are simultaneously in equilibrium between $^AZ$ and $^{(A+4)}(Z+2)$.
Further note that because the reaction pathways $(p,\gamma) (p,\gamma) (n,\gamma) (n,\gamma)$ and $(p,\gamma) (n,\gamma) (p,\gamma) (n,\gamma)$ are simultaneously in equilibrium, H(Z) can not depend on A.
%for example, $H_{\alpha,\gamma}$ = $H_{p,\gamma} + H_{p,\gamma} + H_{n,\gamma} + H_{n,\gamma} = H_{p,\gamma} + H_{n,\gamma} + H_{p,\gamma} + H_{n,\gamma}$, etc.

For three reactant reactions, the screening factor for reaction rates is conventionally calculated as $H_{ijk} = H_{ij} + H_{(i+j)k}$ because three particle reactions of importance in astrophysics are generally sequential pairs of reactions where a short-lived intermediate nucleus $(i+j)$ is formed by the first pair of reactants and captures the third reactant before it decays.
To remain consistent with the requirements of equilibrium screening, we must construct $H_{ijk}$ from $H$.
In general, this approach should work as well for astrophysical 3 reactant reactions as for 2.
\begin{eqnarray}
H(Z_i+Z_j+Z_k) &-&H(Z_i) - H(Z_j) - H(Z_k) \\
&=& \left(H(Z_i+Z_j+Z_k) - H(Z_i+Z_j) - H(Z_k)\right) \\
&+& \left(H(Z_i+Z_j) - H(Z_i) - H(Z_j)\right) \\
&=& H_{(i+j)k} + H_{ij} \\
&=& H_{ijk} \ .
\end{eqnarray}
Thus the screening factors of 3 reactant reactions can be adequately calculated from the change in free energy.

\subsubsection{Weak Screening}

For weak screening,  Graboske, Dewitt, Grossman \& Cooper (1973; ApJ 181 457), give $H_{12}$ in terms of charge independent parameter $\Lambda_0$, an average charge parameter $\tilde z$ which depends on the abundances of all nuclear species, and the ion charges $Z_i$ and $Z_j$ as
\begin{equation}
H_{ij} = Z_i Z_j \tilde{z} \Lambda_0.
\end{equation}
$\Lambda_0$ and  $\tilde z$ are defined in \citet{DeGrCo73}.
This expression approaches the classical Debye-H\"uckel case as the electrons become non-degenerate.
Choosing the corresponding
\begin{equation}
H(Z) = {1\over2} Z^2 \tilde{z} \Lambda_0 \ ,
\end{equation}
then
\begin{equation}
H(Z_i+Z_j) - H(Z_i) - H(Z_j) = {1\over2}\left((Z_i+Z_j)^2 - Z_i^2 - Z_j^2\right) \tilde{z} \Lambda_0  =  Z_i Z_j \tilde{z} \Lambda_0 = H_{ij}
\end{equation}
Thus the equivalence of the approaches does indeed hold for two-reactant reactions.
For three-reactant reactions,
\begin{equation}
H_{ijk} = H_{ij} + H_{(i+j)k} = Z_i Z_j \tilde{z} \Lambda_0 + (Z_i+Z_j) Z_k \tilde{z} \Lambda_0 = (Z_i Z_j + Z_i Z_k + Z_j Z_k) \tilde{z} \Lambda_0 \ .
\end{equation}
In terms of H(Z)
\begin{eqnarray}
H(Z_i+Z_j+Z_k) &-&H(Z_i) - H(Z_j) - H(Z_k) \\
&=&  {1\over2}\left((Z_i+Z_j+Z_k)^2 - Z_i^2 - Z_j^2- Z_k^2\right) \tilde{z} \Lambda_0 \\
&=& (Z_i Z_j + Z_i Z_k + Z_j Z_k) \tilde{z} \Lambda_0 = H_{ijk} \ ,
\end{eqnarray}
thus the equivalence of the approaches also holds for three-reactant reactions.

\subsubsection{Intermediate Screening}

For intermediate screening,  \citet{DeGrCo73} give $H_{12}$ in terms of charge independent parameter $\Lambda_0$, and several average charge parameters $\tilde z$, $\bar z$, and $\langle z^{1.58}\rangle$, which depends on the abundances of all nuclear species, and the ion charges $Z_i$ and $Z_j$ as
\begin{equation}
H_{ij} = 0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j)^{1.860} - Z_i^{1.860} - Z_j^{1.860}\right].
\end{equation}
Choosing the corresponding
\begin{equation}H(Z) = 0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} Z^{1.860}, \end{equation} then
\begin{eqnarray}
H(Z_i+Z_j) &-& H(Z_i) - H(Z_j) \\
&=& 0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j)^{1.860} - Z_i^{1.860} - Z_j^{1.860}\right]= H_{ij}
\end{eqnarray}
Thus the equivalence of the approaches does indeed hold for two-reactant reactions.
For three-reactant reactions,
\begin{eqnarray}
H_{ijk} &=& H_{ij} + H_{(i+j)k} \\
&=& 0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j)^{1.860} - Z_i^{1.860} - Z_j^{1.860}\right] \\
&+& 0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j+Z_k)^{1.860} - (Z_i + Z_j)^{1.860} - Z_k^{1.860}\right] \\
&=&  0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j+Z_k)^{1.860} - Z_i^{1.860} - Z_j^{1.860} - Z_k^{1.860} \right]
\ .
\end{eqnarray}
In terms of H(Z)
\begin{eqnarray}
H(Z_i+Z_j+Z_k) &-& H(Z_i) - H(Z_j) - H(Z_k) \\
&=&  0.380 {\langle z^{1.58}\rangle \over \tilde{z}^{0.58}\bar{z}^{0.28}} \Lambda_0^{0.860} \left[(Z_i + Z_j+Z_k)^{1.860} - Z_i^{1.860} - Z_j^{1.860} - Z_k^{1.860} \right]\\
&=&  H_{ijk} \ ,
\end{eqnarray}
thus the equivalence of the approaches also holds for three-reactant reactions.

\subsubsection{Strong Screening}

\section{Solvers}

The large number of reaction types discussed in \S \ref{sect:reacrate} can
be divided into 3 functional categories based on the number of reactants
which are nuclei.  The reactions involving a single nucleus, which include
decays, electron and positron captures, photodisintegrations, and neutrino
induced reactions, depend on the number density of only the target species.
For reaction involving two nuclei, the reaction rate depends on the number
densities of both target and projectile nuclei.  There are also a few
important three-particle process (like the triple-\alp\ process, see \S \ref{sect:hyb}) which are commonly successive captures with an
intermediate unstable target (see, \eg, \cite{NoTM85,GoWT95}).  Using an
equilibrium abundance for the unstable intermediate, the contributions of
these reactions are commonly written in the form of a three-particle
processes, depending on a trio of number densities.  Grouping reactions by
these 3 functional categories, the time derivatives of the number densities
of each nuclear species in an astrophysical plasma can be written in terms
of the reaction rates, $r$, as
\begin{equation}
    \left. {{\partial n_i} \over {\partial t}} \right|_{\rho =const}= \sum_j
    \calN^i _j r_j + \sum_{j,k} \calN^i _{j,k} r_{j,k} + \sum_{j,k,l}
    \calN^i _{j,k,l} r_{j,k,l},
    \label{eq:ndot}
\end{equation}
where the three sums are over reactions which produce or destroy a nucleus
of species $i$ with 1, 2 \& 3 reactant nuclei, respectively.  The \calN\ s
provide for proper accounting of numbers of nuclei and are given by:
$\calN^i_j = N_i$, $\calN^i_{j,k} = N_i / \prod_{m=1}^{n_{j,k}} | N_{m} |!
$, and $\calN^i_{j,k,l} = N_i / \prod_{m=1}^{n_{j,k,l}} |N_{m}|!$.  The $N_i's$
can be positive or negative numbers that specify how many particles of
species $i$ are created or destroyed in a reaction, while the denominators,
including factorials, run over the $n_{j,k}$ or $n_{j,k,l}$ different species destroyed in the reaction and avoid double counting of the number of reactions when identical particles react with each other (for example in the \isotope{C}{12} + \isotope{C}{12} or the triple-\alp\ reactions; for details see \cite{FoCZ67}).

In addition to nuclear reactions, expansion or contraction of the plasma
can also produce changes in the number densities $n_i$.  To separate the
nuclear changes in composition from these hydrodynamic effects, the nuclear abundance $Y_i =n_i/\rho N_A$, where $N_{A}$ is Avogadro's number, is commonly used.  For a nucleus with atomic weight $A_i$, $A_iY_i$
represents the mass fraction of this nucleus, therefore $\sum A_iY_i=1$.
Likewise, the equation of charge conservation becomes $\sum Z_i Y_i = Y_e$,
where $\ye (= n_e /\rho N_A)$ is the electron abundance (also termed the electron fraction).  By recasting Eq.~\ref{eq:ndot} in terms of nuclear abundances $Y_i$, a set of ordinary differential equations
for the evolution of $\dot Y_i$ results which depends only on nuclear
reactions.  In terms of the reaction cross sections introduced in \S
\ref{sect:reacrate}, this reaction network is described by the following
set of differential equations
%\begin{eqnarray}
%    \dot Y_i & = & \sum_j \calN^i _j \lambda_j Y_j + \sum_{j,k} \calN^i _{j,k}
%    \rho N_A \langle j,k \rangle Y_j Y_k  \nonumber \\
%    & + & \sum_{j,k,l} \calN^i _{j,k,l} \rho^2 N_A^2 \langle j,k,l \rangle
%	Y_j Y_k Y_l.
%    \label{eq:ydot}
%\end{eqnarray}
\begin{equation}
    \dot Y_i = \sum_j \calN^i _j \lambda_j Y_j + \sum_{j,k} \calN^i _{j,k}
\rho N_A \langle j,k \rangle Y_j Y_k  + \sum_{j,k,l} \calN^i _{j,k,l} \rho^2 N_A^2 \langle j,k,l \rangle Y_j Y_k Y_l. \label{eq:ydot}
\end{equation}

In principle, the initial value problem presented by the nuclear reaction network
can be solved by any of a large number of methods discussed in the
literature.  However the physical nature of the problem, reflected in the
$\lambda$'s and \sigv 's, greatly restricts the optimal choice.  The large
number of reactions display a wide range of reaction timescales, $\tau$
(see Eq.~\ref{eq:tau}).  Numerical systems whose solutions depend on a wide range of timescales are termed \emph{stiff}.  Gear \cite{Gear71} demonstrated that
even a single equation can be stiff if it has both rapidly and slowly varying
components.  Practically, stiffness occurs when the limitation of the
timestep size is due to numerical stability rather than accuracy.  A more
rigorous definition \cite{Lamb80} is that a system of equations $\vec{\dot Y}
(\vec Y)$ is stiff if the eigenvalues $\lambda_{j}$ of the Jacobian
$\partial \vec{\dot Y} / \partial \vec Y$ obey the criterion that for negative $\Re(\lambda_{j})$ (the real part of the eigenvalues $\lambda_j$)
\begin{equation}
    {\mathcal S}  =  {{max |\Re(\lambda_{j})|} \over {min |\Re(\lambda_{j})|}}
    \gg 1
    \label{eq:lambdastiff}
\end{equation}
for $j=1,\cdots,N$.  As we will explain in this section, $\mathcal S > 10^{15}$ is not uncommon in astrophysics.

Astrophysical calculations of nucleosynthesis belong to the general field of
reactive flows, and therefore share some characteristics with related
terrestrial fields.  In particular, chemical kinetics, the study of the
evolution of chemical abundances, is an important part of atmospheric and
combustion physics and produces sets of equations much like Eq.~\ref{eq:ndot}
(see \cite{OrBo01} for a through introduction).  These chemical kinetics systems
are known for their stiffness and a great deal of effort has been expended on
developing methods to solve these equations.  Many of the considerations for
the choice of solution method for chemical kinetics also
apply to thermonuclear kinetics.  In both cases, temporal integration of
the reaction rate equations is broken up into short intervals because of the
need to update the hydrodynamics variables.  This favors one step, self
starting algorithms.  Because abundances must be tracked for a large number of
computational cells (hundreds to thousands for one dimensional models,
millions to billions for the coming generation of three dimensional models), memory storage concerns favor low order methods since they don't require  the storage of as much data from prior steps.  In any event, both the errors in fluid dynamics and in the reaction rates are typically a few percent or more, so the greater precision of these higher order methods often does not result in greater accuracy.  Note that these statements do not in general apply to calculations of Big Bang nucleosynthesis (at least those that assume homogeniety). As a result quite different methods are employed in these calculations \cite{FiOl04}

Because of the wide range in timescales between strong, electromagnetic and
weak reactions, nuclear reaction networks are extraordinarily stiff.  PP chain
nucleosynthesis, responsible for the energy output of the Sun, offers an
excellent example of the difficulties.  The first reaction of the PP1 chain is
$\isotope{H}{1}(p,e^{+} \nu)  \isotope{H}{2}$, the fusion of two protons to form
deuterium.  This is a weak  reaction, requiring the conversion of a proton into
a neutron, and  releasing a positron and a neutrino.  As a result, the reaction
timescale  $\tau_{p}(\isotope{H}{1})$ is very long, billions of years for
conditions like  those in the solar interior.  The second reaction of the PP1
chain is the  capture of a proton on the newly formed deuteron,
$\isotope{H}{2}(p,\gamma)  \isotope{He}{3}$.  For conditions like those in the solar
interior, the  characteristic timescale, $\tau_{p}(\isotope{H}{2})$ is a few
seconds.  Thus  the timescales for two of the most important reactions for
hydrogen burning  in stars like our Sun differ by more than 17 orders of
magnitude (see \cite{Clay83,HaPR04} for a more complete discussion of the PP chain).
This  disparity results not from a lack of \isotope{H}{1} + \isotope{H}{1} collisions (which occur at a rate  $Y(\isotope{H}{1})/ Y(\isotope{H}{2}) \sim 10^{17}$ times more often than \isotope{H}{1} + \isotope{H}{2} collisions), but from the rarity of the transformation of a proton to a neutron.  While the presence of weak  reactions
among the dominant energy producing reactions is unique to hydrogen burning,
most nucleosynthesis calculations are similarly stiff, in part because of the
need to include weak interactions but also the potential for neutron capture
reactions, which occur very rapidly even at low temperature, following any
release of free neutrons. The nature of the nuclear reaction network  equations has thus far limited the astrophysical usefulness of the most sophisticated methods to solve stiff equations developed for chemical kinetics.

\subsection{Euler Methods}

For a set of nuclear abundances $\vec Y$, one can calculate the time
derivatives of the abundances, $\dot {\vec Y}$ using Eq.~\ref{eq:ydot}.   The
desired solution is the abundance at a future time, $\vec Y(t+\Delta  t)$,
where $\Delta t$ is the network timestep.  For simplicity, most past and present nucleosynthesis calculations use the simple finite difference prescription
\begin{equation}
	{{\vec Y(t+\Delta t)- \vec Y(t)} \over {\Delta t}} = (1-\Theta) \dot
	{\vec Y}(t+\Delta t) + \Theta \dot {\vec Y}(t).
    \label{eq:deriv}
\end{equation}
This choice is also supported by the advantages of coupling low order, single step methods with hydrodynamics. With $\Theta=1$, Eq.~\ref{eq:deriv} becomes the explicit Euler method
while for $\Theta=0$ it is the implicit backward Euler method, both of
which are first order accurate.  For $\Theta=1/2$, Eq.~\ref{eq:deriv} is
the semi-implicit trapezoidal method, which is second order accurate.  For
the stiff set of non-linear differential equations which form most nuclear reaction
networks, a fully implicit treatment is generally most successful
\cite{ArTr69}, though the trapezoidal method has been used in Big Bang
nucleosynthesis calculations \cite{Wago73}, where coupling to hydrodynamics
is less important.  Solving the fully implicit version of Eq.~\ref{eq:deriv}
is equivalent to finding the zeros of the set of equations
\begin{equation}
    \vec \calZ(t+\Delta t)\equiv {{\vec Y(t+\Delta t)- \vec Y(t)} \over
    {\Delta t}} - \dot {\vec Y}(t+\Delta t) =0 \ .
	\label{eq:zer}
\end{equation}
This is done using the Newton-Raphson method (see, \eg, \cite{NumRec}),
which is based on the Taylor series expansion of $\vec \calZ(t+\Delta t)$,
with the trial change in abundances given by
\begin{equation}
	\Delta \vec Y = \left( \partial \vec \calZ (t+\Delta t) \over
	\partial \vec Y (t+\Delta t) \right)^{-1} \vec \calZ \ ,
	\label{eq:dely}
\end{equation}
where $\partial \vec \calZ / \partial \vec Y $ is the Jacobian of $\vec
\calZ$.

Historically \cite{ArTr69} and in some modern applications (see, \eg, \cite{Khok96}), each timestep consists of only a single application of the procedure outlined in Eqs.~\ref{eq:zer} \& \ref{eq:dely}.  This semi-implicit backward Euler method has the advantage of a relatively small and predictable number of matrix solutions, but there are only heuristic checks that the chosen timestep results in a stable or accurate solution.  In fully implicit backward Euler schemes, iteration using the procedure of Eqs.~\ref{eq:zer} \& \ref{eq:dely} continues until both $\Delta \vec Y$ and $\vec \calZ$ are below some tolerance, providing a measure of the stability and accuracy.  If this convergence does not occur within a reasonable number of iterations, the timestep is subdivided into smaller intervals until a converged solution can be achieved, allowing the fully implicit backward Euler integration to respond to instability or inaccuracy in a way that is impossible with the semi-implicit backward Euler approach.  Higher order methods allow better estimates of the truncation error by comparing the solutions of different order schemes and sub-dividing the timestep if these errors are too large.

\subsection{Bader-Deuflhard}

In the variable order Bader-Deuflhard method, the timestep is divided into m substeps with $\delta t = \Delta t /m$ and the matrix
\begin{equation}
{\mathcal A} = {\mathcal I} - {{\partial \vec{\dot Y}} \over {\partial \vec Y}}
\end{equation}

For the first substep, the matrix equation
\begin{equation}
{\mathcal A} \cdot \Delta {\vec Y}_0 = \delta t \vec {\dot Y_0}
\end{equation}
is solved and abundance is iterated ${\vec Y}_1 = {\vec Y}_0 + \delta {\vec Y}_0$.
For substeps $k = 1$ to $k=m-1$, the equation
\begin{equation}
{\mathcal A} \cdot x  = \delta t \vec {\dot Y_k} - \Delta {\vec Y}_{k-1}
\end{equation}
is solved, with the abundance updated as ${\vec Y}_{k+1} = {\vec Y}_{k} + \delta {\vec Y}_{k}$ where $\delta {\vec Y}_{k} = \delta {\vec Y}_{k-1} + 2 x$.
For the last substep (k = m), the equation
\begin{equation}
{\mathcal A} \cdot \Delta {\vec Y}_m = \delta t (\vec {\dot Y_m} - \Delta {\vec Y}_{m-1})
\end{equation}
is solved, and the final abundance update given by ${\vec Y}(t+\Delta t) = {\vec Y}_{m} + \delta {\vec Y}_{m} $.

\subsection{Gear Methods}

\subsection{Matrix Equations}

A common feature of all of these methods is the expression of the system as a matrix equation.
A potential numerical problem with the solution is the singularity of the this matrix.
For example, the Jacobian matrix in the Backward Euler case, $\partial \vec \calZ (t+\Delta t)/ \partial
\vec Y (t+ \Delta t)$.
From Eq.~\ref{eq:zer}, the individual matrix elements of the Jacobian have the form
\begin{equation}
	 {\partial \calZ_{i} \over \partial Y_{j}} =
	{\delta_{ij} \over \Delta t} - {\partial \dot Y_{i} \over
	\partial Y_{j}}\nonumber
	= {\delta_{ij} \over \Delta t} - \sum {1 \over \tau_{j}(i)} \ ,
	\label{eq:jacobian}
\end{equation}
where $\delta_{ij}$ is the Kronecker delta, and $\tau_{j}(i)$ is the destruction timescale of nucleus $i$ with respect to nucleus $j$ for a given reaction, as defined in Eq.~\ref{eq:tau}.
The sum accounts for the fact that there may be more than one reaction by which nucleus $j$ is involved in the creation or destruction of nucleus $i$.
Along the diagonal of the Jacobian, there are two competing terms, $1/\Delta t$ and $\sum 1/\tau_{i}(i)$.
This sum is over all reactions which destroy nucleus $i$, and is dominated by the fastest reactions.
As a result, $\sum 1/\tau_{i}(i)$ can be orders of magnitude larger than the reciprocal of the desired timestep, $1/\Delta t$.
This is especially a problem near equilibrium, where both destruction and the balancing production timescales are very short in comparison to the preferred timestep size, resulting in differences close to the numerical accuracy (i.e. 14 or more orders of magnitude).
In such cases, the term $1/\Delta t$ is numerically neglected, leading to numerically singular matrices.
One approach to avoiding this problem is to artificially scale these short, equilibrium timescales by a factor which brings their timescale closer to $\Delta t$, but leaves them small enough to ensure equilibrium.
While this approach has been used successfully, the ad hoc nature of this artificial scaling renders these methods fragile.
%A more promising approach is to make directly use of equilibrium expressions for abundances, which, as we will discuss in \S\ref{sect:hyb}, also ensures the economical use of computer resources.

For larger nuclear reaction networks, the Newton-Raphson method requires solution of a moderately large ($N=100-3000$) matrix equation for each zone.
Since general solution of a dense matrix scales as $O(N^{3})$, this can make these large networks progressively much more expensive.
While in principal, every species reacts with each of the hundreds of others, resulting in a dense Jacobian matrix,
in practice it is possible to neglect most of these reactions.  Because of
the $Z_{i}Z_{j}$ dependence of the repulsive Coulomb term in the nuclear
potential, captures of free neutrons and isotopes of H and He on heavy
nuclei occur much faster than fusions of heavier nuclei.  Furthermore, with
the exception of the Big Bang nucleosynthesis and PP-chains, reactions
involving secondary isotopes of H (deuterium and tritium) and He are
neglectable.  Likewise, photodisintegrations tend to eject free nucleons or
\alp-particles.  Thus, with a few important exceptions, for each nucleus we
need only consider twelve reactions linking it to its nuclear neighbors by the
capture of an $n,p,\alpha$ or $\gamma$ and release a different one of these
four.  The exceptions to this rule are the few heavy ion reactions important
for burning stages like carbon and oxygen burning where the dearth of light
nuclei cause the heavy ion collisions to dominate.

\begin{figure}
    \begin{center}
 	    \includegraphics[width=.6\textwidth]{sparse}
    \end{center}
	\caption{Graphic demonstration of the sparseness of the Jacobian
	matrix.  The filled squares represent the non-zero elements.}
    \label{fig:sparse}
\end{figure}

Fig.~\ref{fig:sparse} demonstrates the sparseness of the resulting Jacobian
matrix, for a 300 nuclei network chosen to handle all the energy generating stages in the life of a massive star.  The nuclei are indexed in order of increasing Z and then A.  Of the 90,000 matrix elements, fewer than 5,000 are non-zero.  In terms of
the standard forms for sparse matrices, this Jacobian is best described
as doubly bordered, band diagonal.  With a border width, $\Delta B$, of
45 necessary to include the heavy ion reactions among \isotope{C}{12},
\isotope{O}{16} and \isotope{Ne}{20} along with the free neutrons, protons and
\alp -particles and a band diagonal width, $\Delta D$, of
54, even this sparse form includes almost 50,000 elements.  With solution
of the matrix equation consuming 90+\% of the computational time, there
is clearly a need for custom tailored solvers which take better advantage
of the sparseness of the Jacobian \cite{PrAA87}. To date best results for small (N$<$100) matrices are obtained with machine optimized dense solvers (\eg\ LAPACK) or matrix specific solvers generated by symbolic processing \cite{Mull98,Mull86}.
For large matrices, generalized sparse solvers, both custom built and from
software libraries, are used (see, \cite{Timm99}).

\bibliographystyle{apj}
\bibliography{apj_journals,add_journals,network,rspn_process,ccsn,sn-obs,stellar}

\end{document}


\section{Results}
\subsection{Implementation}
Languages, Libraries, Overview
\subsection{Enhancements}
\subsection{Applications}

Ease of use

Complexity

Span Program

\subsubsection{Search}
\subsubsection{Parity}
\subsubsection{Exact}
\subsection{Determining Big-O Complexity}
\subsection{Worst Case Inputs}
\subsection{Comparisons to Other Lower Bound Methods}


\chapter{MPMICE} \label{Sec:MPMICE}

\section{Introduction}

MPMICE is a marriage of the multi-material ICE method, described in
Section~\ref{Sec:ICE} and MPM, described in Section~\ref{Sec:MPM}.
The equations of motion solved for both fluid and solid are essentially
the same, although the physical behavior of these two states of matter
differ, largely due to their constitutive relationships.  MPM is used
to track the evolution of solid materials in a Lagrangian frame of
reference, while fluids are evolved in the Eulerian frame.

\section{Theory - Algorithm Description}

At this time, the reader is directed to the manuscript by Guilkey,
Harman and Banerjee~\cite{fourthmit} for the theoretical and algorithmic
description of the method.

%\subsection{Uintah Specification}

%\subsubsection{ICE}

%\subsubsection{Basic Inputs}
%\subsubsection{Physical Constants}
%\subsubsection{Material Properties}
%\subsubsection{Equation of State}
%\subsubsection{Exchange Properties}
%\subsubsection{BoundaryConditions}
%\subsubsection{Solvers}

%\subsection{MPM}

%\subsubsection{Basic Inputs}
%\subsubsection{Physical Constants}
%\subsubsection{Material Properties}
%\subsubsection{Constitutive Models}
%\subsubsection{Contact}
%\subsubsection{BoundaryConditions}
%\subsubsection{Physical Boundary Conditions}

\section{Solid State Kinetic Models}

A generalized reaction model for solid state kinetics based on the
assumption that the temperature dependence of the rate can be separated
from the reaction model as embodied by the equation:

\begin{equation}
\frac{d\alpha}{dt}=k(T)f(\alpha)
\end{equation}

\noindent is implemented in Uintah and named \textbf{SolidReactionModel}.  To
use the \textbf{SolidReactionModel} one must specify both a temperature
dependent rate constant model and a rate model.  The model is a grid based
model, so should work with both MPM and ICE materials.  In the case where an MPM
material is used as the reactant or product, the thermodynamic quantities
that are interpolated to the grid are used to calculate reaction rates.

Additional rate constant and rate models may be added by either subclassing \textbf{RateConstantModel}
or \textbf{RateModel}.  Examples of this can be found in the
\textbf{src/CCA/Components/Models/SolidReactionModel}
directory. Two models currently exist for the rate constant $k(T)$, Arrhenius and
Modified Arrhenius.  These two models have the forms:

\begin{equation}
k(T)=Ae^{\frac{-E_a}{RT}}
\end{equation}

\noindent and:

\begin{equation}
k(T)=AT^be^{\frac{-Ea}{RT}}
\end{equation}

Various rate models of different classes exist for use.  These classes include
reaction-order models, diffusion models, geometrical contraction models and
nucleation models. The following table shows the various models available.  Models
were taken from \cite{ref:vyazovkinwight} and \cite{ref:khawamflanagan}.\newline\newline

\begin{tabular}{ |l | c | c |}
\hline
\textbf{Model} & $f(\alpha)$ & \textbf{Uintah 'type'} \\
\hline
\hline
\multicolumn{3}{|c|}{\textbf{Reaction-order Models}} \\
\hline
Nth Order & $(1-\alpha)^n$  & NthOrder \\
\hline
\multicolumn{3}{|c|}{\textbf{Diffusion Models}} \\
\hline
1-D Diffusion & $1/2\alpha$  & Diffusion \\
\hline
2-D Diffusion & $-1/ln(1-\alpha)$  & Diffusion \\
\hline
3-D Diffusion& $3/2(1-\alpha)^{2/3}(1-(1-\alpha)^{1/3})$  & Diffusion \\
\hline
4-D Diffusion& $3/2(1/\alpha^{1/3}-1)$  & Diffusion \\
\hline
\multicolumn{3}{|c|}{\textbf{Geometrical Contraction Models}} \\
\hline
Contracting Cylinder& $2\sqrt{1-\alpha}$  & ContractingCylinder \\
\hline
Contracting Sphere& $3(1-\alpha)^{2/3}$  & ContractingSphere \\
\hline
\multicolumn{3}{|c|}{\textbf{Nucleation Models}} \\
\hline
Power & $a\alpha^b$  & Power \\
\hline
Avarami-Erofe'ev & $a(1-\alpha)(-ln(1-\alpha))^b$  & AvaramiErofeev \\
\hline
\end{tabular} \newline\newline

The input file specification is as follows:

\begin{verbatim}
  <Models>
    <Model type="SolidReactionModel">
      <RateConstantModel type="type">
         ....
      </RateConstantModel>
      <RateModel type="type">
         ....
      </RateModel>
    </Model>
  <Models>
\end{verbatim}

\noindent Here, the type attribute for \textbf{RateConstantModel} should be either \textbf{Arrhenius} or \textbf{ModifiedArrhenius}
which both take an activation energy \textbf{Ea}, and frequency factor \textbf{A}.  In addition, the modified Arrhenius
model takes a temperature dependence exponent, \textbf{b}.

The specification of type attribute for \textbf{RateModel} should be one of those listed in the previous table.
The \textbf{NthOrder} model must have a positive integral value for the reaction order \textbf{n}.
The \textbf{Diffusion} based models require a \textbf{dimension} value that should be 1, 2, 3 or 4 depending
on the dimensionality of the desired rate model.  Both geometric contraction models take no additional
input parameters. Both nucleation based models, \textbf{Power} and \textbf{AvaramiErofeev}, take both
an \textbf{a} and a \textbf{b} input parameter.

\section{HE Reaction Models}

Three models exist for reaction of high explosive materials.  Each
simulation using one of these models utilize MPMICE's material
interactions as its foundation.  The components work by taking several
material specific constants as well as a reactant and product material
from the model input section of the .ups file.  Following are brief
descriptions of each model, as well as their input parameters.

\subsection{Simple Burn} \label{Sec:SimpleBurn}

Simple Burn, as the name implies, is a simple model of combustion of HMX based on the rate equation:

\begin{equation}
\dot{m}=A P^{0.778}
\label{simburneqn}
\end{equation}

Where $\dot{m}$ is the mass flux, $P$ is the pressure and $n$ is the pressure dependence coefficient.  The pressure coefficient in Equation (\ref{simburneqn}) is that of HMX.  The models input section for a Simple Burn simulation takes the form:

\begin{verbatim}
<Models>
  <Model type="Simple_Burn">
    <fromMaterial> reactant      </fromMaterial>
    <toMaterial>   product       </toMaterial>
    <Active>       true          </Active>
    <ThresholdTemp>       450.0  </ThresholdTemp>
    <ThresholdPressure> 50000.0  </ThresholdPressure>
    <Enthalpy>        2000000.0  </Enthalpy>
    <BurnCoeff>            75.3  </BurnCoeff>
    <refPressure>      101325.0  </refPressure>
  </Model>
</Models>
\end{verbatim}

The first two tags take names of materials previously defined in the input file, defining both reactant and product used by the model.  See Section \ref{sec:ICEmat_props} and \ref{Sec:mat_props} for in depth description for defining materials.  $<$Active$>$ is a debugging parameter that takes a boolean value indicating whether the model is on (i.e. the actual computations take place during the timestep).  True is the value to set for $<$Active$>$ in most situations.  Each of the other parameters take double values.  Threshold temperature and pressure tags define two criteria the cell must have in order to be flagged burning.  The reference pressure is used to scale the cell centered pressure as well as make it an unitless value.  The burn coefficient corresponds to $A$ in the rate equation.  Enthalpy is simply the enthalpy value for conversion of reactant to product.
\newpage
\subsection{Steady Burn} \label{Sec:SteadyBurn}

Steady Burn is a more accurate model than Simple Burn.  It is based on WSB model of combustion developed by Ward, Son and Brewster in \cite{ref:wardsonbrewster}.  WSB is based on a simplified two-step chemical model with an initial zero-order, thermally activated ($E_c > 0$), mildly exothermic, solid-to-gas reaction, modeled as a thermal decomposition of the solid:

\begin{equation}
A(solid)\rightarrow B(gas)
\end{equation}

Intermediate $B$, in the presence of any gas phase collision partner $M$, reacts in a highly exothermic fashion producing a flame.  This step is modelled as a second-order, gas phase, free radical chain reaction based on the assumption that $E_g = 0$:

\begin{equation}
B(gas)+M(gas)\rightarrow C(gas)+M(gas)
\end{equation}

As such, this second equation represents the reaction in the gas phase that causes heat convection back to the surface that activate the first reaction.  In Steady Burn, a solution is found by iteratively solving two equations: one for mass burning rate $\dot{m}$ and one for surface temperature $T_s$.  Mass flux is initially solved with an assumed value $T_s$ (in the model set to $850.0 K$) using WSB:

\begin{equation}
\dot{m}\left(T_s\right)=\sqrt{\frac{\displaystyle \kappa_c \rho_c A_c R T_s^2 \exp\left({\frac{\displaystyle -E_c}{\displaystyle R T_s}}\right)}{\displaystyle C_p E_c \left(T_s - T_0 - \frac{Q_c}{2 C_p}\right)}}
\label{WSB1}
\end{equation}

The solution to this equation is used to refine the surface temperature and vice-versus until a self-consistent solution for surface temperature and mass flux has been found.  The surface temperature equation takes the form:

\begin{equation}
T_s(\dot{m},P)=T_0 + \frac{\displaystyle Q_c}{\displaystyle C_p} + \frac{Q_g}{Cp\left(1+\frac{\displaystyle x_g\left(\dot{m},P\right)}{\displaystyle x_{cd}(\dot{m})}\right)}
\label{WSB2}
\end{equation}

$x_g$ in the third term of Equation (\ref{WSB2}) is the flame standoff distance, computed from:

\begin{equation}
x_g\left(\dot{m},P\right)=\frac{2 x_{cd}\left(\dot{m}\right)}{\displaystyle \sqrt{1 + D_a\left(\dot{m},P\right)} - 1}
\label{WSB3}
\end{equation}

where $x_{cd}$ and $D_a$ are the convective-diffusive length and Damkohler number, respectively:

\begin{equation}
x_{cd} \left(\dot{m}\right)=\frac{\kappa_g}{\displaystyle \dot{m} C_p}
\label{WSB4}
\end{equation}
\begin{equation}
D_a\left(\dot{m},P\right) = \frac{4 B_g M C_p P^2}{\displaystyle R^2 \kappa_g} x_{cd}\left(\dot{m}\right)^2
\label{WSB5}
\end{equation}

WSB model is valid as a 1D model, but needs extension to work in a 3D multimaterial CFD environment.  As such, Steady Burn is WSB extended with logic for ignition of energetic materials and computation of surface area for burning cells.  Ignition of a cell is based on three criteria:
\begin{itemize}
  \item The cell must contain one particle of energetic solid
  \item The cell is near a surface of an energetic solid (e.g. ratio of minimum node-centered mass to maximum node-centered mass is less than 0.7)
  \item One neighboring cell must have at most two particles of energetic material
\end{itemize}
If a cell is ignited, the model will be applied and mass will be transferred from reactant material to product material.  Total mass burned is computed using mass flux $\dot{m}$, $\Delta t$ of the timestep and the calculated surface area, found using:

\begin{equation}
A=\frac{\delta x \delta y \delta z}{\displaystyle \delta x |g_x| + \delta y |g_y| + \delta z |g_z|}
\label{WSB6}
\end{equation} where $\delta x$, $\delta y$, and $\delta z$ are the dimensions of the cell and components of $\overrightarrow{g}$ are the normalized density gradients of the particle mass in a cell.  A more thorough examination of Steady Burn can be read about in \cite{ref:wighteddings}.

The following table describes the input parameters for Steady Burn.  The final column of the table indicates parameters for combustion of HMX.

\begin{center}
\begin{tabular}{| l | c | p{4cm} | l |}
\hline
  \multicolumn{4}{|c|}{\textbf{Steady Burn Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description} & \textbf{HMX Value} \\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source) &  \\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink) & \\
\hline
  $<$IdealGasConst$>$ & double & Ideal gas constant ($R$) & $8.314 J/(K\times mol)$ \\
\hline
  $<$PreExpCondPh$>$ & double & Condensed phase pre-exponential coefficient ($A_c$) & $1.637\times10^{15} s^{-1}$ \\
\hline
  $<$ActEnergyCondPh$>$ & double & Condensed phase activation energy ($E_c$) & $1.76\times10^5 J/mol$ \\
\hline
  $<$PreExpGasPh$>$ & double & Gas phase frequency factor ($B_g$) & $1.6\times10^{-3} m^3/(kg\times s\times K)$ \\
\hline
  $<$CondPhaseHeat$>$ & double & Condensed phase heat release per unit mass ($Q_c$) & $4.0\times10^5 J/kg$ \\
\hline
  $<$GasPhaseHeat$>$ & double & Gas phase heat release per unit mass ($Q_g$) & $3.018\times10^6 J/kg$ \\
\hline
  $<$HeatConductGasPh$>$ & double & Thermal conductivity of gas ($\kappa_g$) & $0.07 W/(m\times K)$ \\
\hline
  $<$HeatConductCondPh$>$ & double & Thermal conductivity of condensed phase ($\kappa_c$) & $0.02 W/(m\times K)$ \\
\hline
  $<$SpecificHeatBoth$>$ & double & Specific heat at constant pressure ($c_p$) & $1.4\times10^3 J/(kg\times K)$ \\
\hline
  $<$MoleWeightGasPh$>$ & double & Molecular weight of gas ($W$) & $3.42\times10^{-2} kg/mol$ \\
\hline
  $<$BoundaryParticles$>$ & int & Max \# of particles a cell can have and be burning & Resolution dependent \\
\hline
  $<$ThresholdPressure$>$ & double & Threshold pressure cell must have $\ge$ to burn mass & $50000 Pa$ \\
\hline
  $<$IgnitionTemp$>$ & double & Temperature cell must have $\ge$ to be burning & $550 K$ \\
\hline
\end{tabular}
\end{center}

\newpage
\subsection{Unsteady Burn} \label {Sec:UnsteadyBurn}

Unsteady Burn is a model developed at the University of Utah as an extension of Steady Burn to better represent mass burning rates when pressure at the burning surface fluctuates. A pressure-coupled response is accounted for in the model such that, qualitatively a pressure increase causes gas phase reaction rates to increase as well as move the gas phase reactions closer to the burning surface.  Increase of near surface gas phase reactions increases the rate of thermally activated solid state reactions, ultimately causing a higher steady burn rate.  Unsteady Burn more accurately models the transition from low pressure to high pressure than Steady Burn by taking into account the initially overshot burn rate at the time when the pressure increases, and the relaxation period to steady burn rate.  Similarly, Unsteady Burn models undershot pressures during pressure drops.

The model is an extension of Steady Burn by partial decoupling of the gas phase and solid state Equations (\ref{WSB1}) and (\ref{WSB2}).  An expression for the temperature gradient of the solid:

\begin{equation}
  \beta = \left(T_s - T_0\right) \frac{m c_p}{\displaystyle\kappa_c}
  \label{WSB7}
\end{equation}

is reaarranged for $(T_s-T_0)$ and substituted in Equation (\ref{WSB1}) leading to the quadradic equation:

\begin{equation}
\dot{m}^2 - \frac{2 \beta \kappa_c}{Q_c} \dot{m} + \frac{2 A_c R T_s^2 \kappa_c \rho_c }{E_c Q_C} \exp\left({\frac{-E_c}{R T_s}}\right)=0
\label{WSB8}
\end{equation}

which allows independent tracking of temperature gradient $\beta$ and surface temperature $T_s$.  The gas phase response is computed using a runnning average of $T_s$ as it approaches the steady burning value.  A solid state response is obtained by computing a running average of $\beta$ as it approaches the steady burning value.  A slow relaxation time for $\beta$ and a fast relaxation time for $T_s$ models the overshoot or undershoot in burn rate.  Burning criteria for a cell is the same as Steady Burn.  For more information on Unsteady Burn see \cite{ref:wighteddings}.

The following table describes the input parameters for Unsteady Burn.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{Unsteady Burn Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source)\\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink)\\
\hline
  $<$IdealGasConst$>$ & double & Ideal gas constant ($R$)\\
\hline
  $<$PreExpCondPh$>$ & double & Condensed phase pre-exponential coefficient ($A_c$) \\
\hline
  $<$ActEnergyCondPh$>$ & double & Condensed phase activation energy ($E_c$)\\
\hline
  $<$PreExpGasPh$>$ & double & Gas phase frequency factor ($B_g$)\\
\hline
  $<$CondPhaseHeat$>$ & double & Condensed phase heat release per unit mass ($Q_c$)\\
\hline
  $<$GasPhaseHeat$>$ & double & Gas phase heat release per unit mass ($Q_g$)\\
\hline
  $<$HeatConductGasPh$>$ & double & Thermal conductivity of gas ($\kappa_g$)\\
\hline
  $<$HeatConductCondPh$>$ & double & Thermal conductivity of condensed phase ($\kappa_c$)\\
\hline
  $<$SpecificHeatBoth$>$ & double & Specific heat at constant pressure ($c_p$)\\
\hline
  $<$MoleWeightGasPh$>$ & double & Molecular weight of gas ($W$)\\
\hline
  $<$BoundaryParticles$>$ & int & Max \# of particles a cell can have and be burning\\
\hline
  $<$BurnrateModCoef$>$ & double & if $\neq$1.0, scale unsteady rate with steady rate as $\dot{m}_u=\dot{m}_s\left(\frac{\displaystyle\dot{m}_u}{\displaystyle\dot{m}_s}\right)^{B_m}$\\
\hline
  $<$CondUnsteadyCoef$>$ & double & Coefficient for condensed phase pressure response relaxation \\
\hline
  $<$GasUnsteadyCoef$>$ & double & Coefficient for gas phase pressure response relaxation \\
\hline
  $<$ThresholdPressure$>$ & double & Threshold pressure cell must be $\ge$ to burn mass\\
\hline
  $<$IgnitionTemp$>$ & double & Temperature cell must be at $\ge$ to be burning\\
\hline
\end{tabular}
\end{center}

\newpage
\subsection{Ignition \& Growth} \label {Sec:IandG}

The Ignition \& Growth model created by Lee and Tarver \cite{ref:Lee1980} to simulate shock-to-detonation
transitions in condensed explosives.  The rate equation takes the form:

\begin{equation}
\frac{dF}{dt}=I(1-F)^b\left(\frac{\rho}{\rho_0}-1-a\right)^x+G_1(1-F)^cF^dP^y+G_2(1-F)^eF^gP^z
\label{IandGEqn}
\end{equation}

where $F$ is the extent of reaction in a cell, $P$ is the pressure, $\rho$ and $\rho_0$ are the current and initial density of the
explosive and $I$, $G_1$, $G_2$, $a$, $b$, $c$, $d$, $e$, $g$, $x$, $y$ and $z$ are constant fit parameters.
The three terms are the ignition, growth and completion terms respectively. The ignition term is used to emulate
hot-spot formation and strengthening and runs over $0<F<F_{igmax}$ where $F_{igmax}$ is a constant.  The growth
term is used as a fast term for growth of the shock front and runs over $0<F<F_{G1max}$ where $F_{G1max}$ is a
constant.  The completion term is a slow term used to model the precipitation of solid carbon at the end
of reaction and runs over $F_{G2min}<F<1$ where $F_{G2min}$ is a constant. The model input parameters are detailed in the following table.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{Ignition \& Growth Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source)\\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink)\\
\hline
  $<$I$>$ & double & Ignition rate constant (hot-spot frequency) \\
\hline
  $<$G1$>$ & double & Growth rate constant \\
\hline
  $<$G2$>$ & double & Completion rate constant \\
\hline
  $<$a$>$ & double & Ignition constant \\
\hline
  $<$b$>$ & double & Ignition exponent \\
\hline
  $<$c$>$ & double & Growth exponent \\
\hline
  $<$d$>$ & double & Growth exponent \\
\hline
  $<$e$>$ & double & Completion exponent \\
\hline
  $<$g$>$ & double & Completion exponent \\
\hline
  $<$x$>$ & double & Ignition density exponent \\
\hline
  $<$y$>$ & double & Growth pressure exponent \\
\hline
  $<$z$>$ & double & Completion pressure exponent \\
\hline
  $<$Figmax$>$ & double & Maximum reaction extent for hot-spot (ignition) term \\
\hline
  $<$FG1max$>$ & double & Maximum reaction extent for fast (growth) term \\
\hline
  $<$FG2min$>$ & double & Minimum reaction extent for slow (completion) term \\
\hline
  $<$rho0$>$ & double & The initial density of the explosive \\
\hline
  $<$E0$>$ & double & The energy of detonation \\
\hline
  $<$ThresholdPressure$>$ & double & Reaction is allowed to occur above this pressure \\
\hline
\end{tabular}
\end{center}

\newpage
\subsection{JWL++} \label {Sec:JWLpp}

The JWL++ model by Souers et al. \cite{ref:JWL} is related to the Ignition and Growth model (see Section \ref{Sec:IandG}),
but much simplified in its form for ease of rate constant fit.  The rate is described by:

\begin{equation}
\frac{dF}{dt}=G(1-F)P^b
\label{JWLppEqn}
\end{equation}

where $F$ is the extent of reaction, $P$ is the pressure and $G$ and $b$ are fit constants.  Several other
forms of the JWL++ model have been formulated, however this is the only one that is currently supported in
Uintah.  Input paramters are shown in the follwoing table.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{Ignition \& Growth Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source)\\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink)\\
\hline
  $<$G$>$ & double & Growth rate constant \\
\hline
  $<$b$>$ & double & Completion rate constant \\
\hline
  $<$rho0$>$ & double & The initial density of the explosive \\
\hline
  $<$E0$>$ & double & The energy of detonation \\
\hline
  $<$ThresholdPressure$>$ & double & Reaction is allowed to occur above this pressure \\
\hline
  $<$ThresholdVolFrac$>$ & double & (Optional; default 0.01) Minimum volume of explosive in a cell for reaction \\
\hline
\end{tabular}
\end{center}

\newpage
\subsection{DDT0} \label {Sec:DDT0}

Deflagration-to-detonation model 0 (DDT0) was the first incarnation of a model
that contains two rate models to represent three different reaction modes. The
model is capable of surface burning, convective burning and detonation. Burning
is accomplished using the same model as Simple Burn (see Section \ref{Sec:SimpleBurn}).  Detonation
is accounted for by the JWL++ model (see Section \ref{Sec:JWLpp}) presented by P. Clark Souers  \cite{ref:JWL}.
The simple threshold pressure separates detonation and deflagration regimes.  In addition,
a crack-size dependent model may be optionally used to allow convective burning to
occur in the bulk material.  The crack-size threshold is computed via an expression fit by
Berghout et al. \cite{ref:Berghout2002}  The parameters are presented in the following table.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{DDT0 Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source)\\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink)\\
\hline
  $<$G$>$ & double & Rate constant for detonation (JWL++ model) \\
\hline
  $<$b$>$ & double & Pressure exponent for detonation (JWL++ model) \\
\hline
  $<$E0$>$ & double & Energy of reaction for detonation (JWL++ model) \\
\hline
  $<$ThresholdPressureJWL$>$ & double & Threshold pressure for onset of detonation \\
\hline
  $<$ThresholdVolFrac$>$ & double & (Optional; default 0.01) Minimum volume fraction of reactant for detonation to occur in a cell \\
\hline
  $<$Enthalpy$>$ & double & Energy of reaction for deflagration (Simple Burn model) \\
\hline
  $<$BurnCoeff$>$ & double & Rate constant for deflagration (Simple Burn model) \\
\hline
  $<$refPressure$>$ & double & Reference pressure for deflagration (Simple Burn model) \\
\hline
  $<$ThresholdTemp$>$ & double & Threshold temperature for combustion (Simple Burn model) \\
\hline
  $<$TresholdPressureSB$>$ & double & Threshold pressure required for combustion (Simple Burn model) \\
\hline
  $<$useCrackModel$>$ & boolean & (Optional; default false) Switch that allows convective burning \\
\hline
  $<$Gcrack$>$ & double & (Required for 'useCrackModel') Rate constant for convective deflagration \\
\hline
  $<$CrackVolThreshold$>$ & double & (Optional; default 1e-14) Volume fraction of reactant above temperature needed for convective deflagration \\
\hline
  $<$nCrack$>$ & double & (Required for 'useCrackModel') Pressure exponent for convective deflagration \\
\hline
\end{tabular}
\end{center}

\newpage
\subsection{DDT1} \label {Sec:DDT1}

Deflagration-to-detonation model 1 (DDT1) \cite{ref:Peterson2012} was the second incarnation of a model
that contains two rate models to represent three different reaction modes. The
model is capable of surface burning, convective burning and detonation. Burning
is accomplished using the same model as Steady Burn (see Section \ref{Sec:SteadyBurn}).  Detonation
is accounted for by the JWL++ model (see Section \ref{Sec:JWLpp}) presented by P. Clark Souers  \cite{ref:JWL}.
The simple threshold pressure separates detonation and deflagration regimes.  In addition,
a crack-size dependent model may be optionally used to allow convective burning to
occur in the bulk material.  The crack-size threshold is computed via an expression fit by
Berghout et al. \cite{ref:Berghout2002}  The parameters are presented in the following table.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{DDT1 Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$fromMaterial$>$ & String & `Name' of reactant material (mass source)\\
\hline
  $<$toMaterial$>$ & String & `Name' of product material (mass sink)\\
\hline
  $<$burnMaterial$>$ & String & (Optional; default `toMaterial') `Name' of product material for deflagration\\
\hline
  $<$G$>$ & double & Rate constant for detonation (JWL++ model) \\
\hline
  $<$b$>$ & double & Pressure exponent for detonation (JWL++ model) \\
\hline
  $<$E0$>$ & double & Energy of reaction for detonation (JWL++ model) \\
\hline
  $<$ThresholdPressureJWL$>$ & double & Threshold pressure for detonation \\
\hline
  $<$ThresholdVolFrac$>$ & double & (Optional; default 0.01) Minimum volume fraction of reactant for detonation to occur in a cell \\
\hline
  $<$IdealGasConst$>$ & double & Ideal gas constant ($R$) \\
\hline
  $<$PreExpCondPh$>$ & double & Condensed phase pre-exponential coefficient ($A_c$) \\
\hline
  $<$ActEnergyCondPh$>$ & double & Condensed phase activation energy ($E_c$)  \\
\hline
  $<$PreExpGasPh$>$ & double & Gas phase frequency factor ($B_g$)  \\
\hline
  $<$CondPhaseHeat$>$ & double & Condensed phase heat release per unit mass ($Q_c$)  \\
\hline
  $<$GasPhaseHeat$>$ & double & Gas phase heat release per unit mass ($Q_g$)  \\
\hline
  $<$HeatConductGasPh$>$ & double & Thermal conductivity of gas ($\kappa_g$) \\
\hline
  $<$HeatConductCondPh$>$ & double & Thermal conductivity of condensed phase ($\kappa_c$) \\
\hline
  $<$SpecificHeatBoth$>$ & double & Specific heat at constant pressure ($c_p$)  \\
\hline
  $<$MoleWeightGasPh$>$ & double & Molecular weight of gas ($W$)  \\
\hline
  $<$BoundaryParticles$>$ & int & Max \# of particles a cell can have and be burning  \\
\hline
  $<$ThresholdPressure$>$ & double & Threshold pressure cell must have $\ge$ to burn mass \\
\hline
  $<$IgnitionTemp$>$ & double & Temperature cell must have $\ge$ to be burning \\
\hline
  $<$TresholdPressureSB$>$ & double & Threshold pressure required for combustion \\
\hline
  $<$useCrackModel$>$ & boolean & (Optional; default false) Switch that allows convective burning \\
\hline
\end{tabular}
\end{center}

\newpage
\subsubsection{Dynamic Output Intervals} \label {Sec:DDT1}
The dynamic output intervals section is used to change how frequently the output interval and check point interval are saved. The intervals can be changed when the pressure is a cell with reactant is greater than the set pressure threshold and/or when detonation is detected. This only works when using the DDT1 reaction model.

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{Dynamic Output Intervals Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$PressureThreshold$>$ & double & Pressure threshold to switch output interval (Pa)\\
\hline
  $<$newOutputInterval$>$ & double & Output interval after switch is reached\\
\hline
  $<$newCheckPointInterval$>$ & double & Check point interval after switch is reached\\
\hline
  $<$remainingTimesteps$>$ & double & Number of timesteps after detonation when the simulation will shut down\\
\hline
\end{tabular}
\end{center}

The input file specification is as follows:
\begin{verbatim}
<Models>
....
<adjust_IO_intervals>
<PressureSwitch>
<PressureThreshold> 4.0e9 </PressureThreshold>
<newOutputInterval> 1e-7 </newOutputInterval>
<newCheckPointInterval> 1e-7 </newCheckPointInterval>
</PressureSwitch>

<DetonationDetected>
<remainingTimesteps> 20 </remainingTimesteps>
<newOutputInterval> 1e-6</newOutputInterval>
<newCheckPointInterval> 1e-6 </newCheckPointInterval>
</DetonationDetected>
</adjust_IO_intervals>
....
</Models>
\end{verbatim}

\newpage
\subsubsection{Induction Time} \label {Sec:Induction Time }
To accurately represent the propagation of deflagration an "induction" period, or wait time was introduced. This induction period is the time a cell must wait before reactant mass would be converted to product gas using the WSB burn model \cite{ref:wardsonbrewster}.   The induction time is dependent on the surrounding pressure and the size of the cell. The induction time model is based off experimentally determined flame propagation on a surface as seen in equation \ref{FlameSpread} \cite{flameProp}, where P is the dimensionless pressure (p/p$_0$) and S$_f$ is the flame propagation in $cm/s$. Equation \ref{FlameSpread} is used in determining the induction time as seen by equation \ref{inducTime} where x is the size of the cell and A is a constant used to speed up or slow down the propagation of convective deflagration. A varies depending on the length of the cell but should be used to give the correct propagation of convective deflagration only. The model determines which direction the flame is coming from in turn adjusting A according to the angle of penetration.
For instance if the flame is propagating along a surface but not into the solid A = 1 but if the flame is propagating directly into the surface A equals the value set in the input file.

\begin{equation}
S_f = 0.259{\displaystyle P^{0.538}}
\label{FlameSpread}
\end{equation}
\begin{equation}
\tau = \frac{\Delta x A}{S_f}
\label{inducTime}
\end{equation}

\begin{center}
\begin{tabular}{| l | c | p{7cm} |}
\hline
  \multicolumn{3}{|c|}{\textbf{Dynamic Output Intervals Input Parameters}} \\
\hline
\hline
  \textbf{Tag} & \textbf{Type} & \textbf{Description}\\
\hline
  $<$useIndcutionTime$>$ & boolean & (Optional; default false) Switch that slows down deflagration propagation\\
\hline
  $<$IgnitionConst$>$ & double & Constant used to speed up or slow down the convective deflagration propagation\\
\hline
  $<$PressureShift$>$ & double & Pressure used to make dimensionless pressure (p$_0$)\\
\hline
  $<$ExponentialConst$>$ & double & Exponential constant used in flame propagation equation\\
\hline
  $<$PreexopConst$>$ & double & Pre-exponential constant used in flame propagation equation\\
\hline
\end{tabular}
\end{center}

The input file specification is as follows:
\begin{verbatim}
<Models>
....
  <useInductionTime>  true </useInductionTime>
  <IgnitionConst> 0.00009 </IgnitionConst>
  <PressureShift> 1.0e5 </PressureShift>
  <ExponentialConst> 0.538 </ExponentialConst>
  <PreexpoConst> 0.00259 </PreexpoConst>
....
</Models>
\end{verbatim}

The pressure shift, exponential and pre-exponential constants presented above are given by Son et al. \cite{flameProp} for experimentally determined values for the explosive PBX9501.

\newpage

\section{Examples} \label {Sec:MPMICE_EXAMPLES}

\subsection*{\center Mach 2 Wedge}
\addcontentsline{toc}{subsection}{Mach 2 Wedge}
\subsubsection*{\underline{Problem Description}}
This is a simulation of a symmetric $20^o$ wedge traveling through initially
quiescent air at Mach 2.0.  A shock forms at the leading edge of the
wedge and an expansion fan over its top.  Consultation of oblique shock
tables, e.g.~\cite{ref:Saad} (pp.308-309) reveals that the angle of the leading
shock compares quite well with the expected value.  In addition, this
simulation demonstrates a few other useful features of the fluid-structure
interaction capability.  In this case, the structure is rigid, and as
such, essentially provides a boundary condition to the compressible flow
calculation.  Furthermore, the geometry of the wedge is described via a
triangulated surface, rather than the geometric primitives usually used.
This allows the user to study flow around arbitrarily complex objects,
without the difficulty of generating a body fitted mesh around that object.

\subsubsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill rmpmice (Rigid MPM-ICE)
\item [Input file name:] \hfill Mach2wedge.ups
\item [Command used to run input file:]\hfill sus inputs/UintahRelease/MPMICE/Mach2wedge.ups
(Note: The files wedge40.pts and wedge40.tri must also be copied to
the same directory as sus.)

\item [Simulation Domain:]\hfill    0.25 x 0.0375 x 0.001 m

\item [Cell Spacing:]\hfill \\
.0005 x .0005 x .001 m (Level 0)

\item [Example Runtimes:] \hfill \\
 20 minutes   (1 processor, 3.16 GHz Xeon)\\

\item [Physical time simulated:] \hfill 0.3 milliseconds

\item [Associated visit session:] \hfill M2wedge.session

\end{description}

\newpage

\subsubsection*{\underline{Results}}

Figure~\ref{figwedge} shows a snapshot of the simulation.  Contour
plot depicts pressure and reflects the presence of a leading shock
and an expansion fan.
\begin{figure}
  \center
  \includegraphics[scale=.4]{M2wedge.png}

  \caption{$20^o$ wedge moving at Mach 2.0 through initially stationary
air.  Contour plot depicts pressure.}
  \label{figwedge}
\end{figure}
\newpage
%
%__________________________________
\subsection*{\center Cylinder in a Crossflow}
\addcontentsline{toc}{subsection}{Cylinder in a Crossflow}
\subsubsection*{\underline{Problem Description}}
In this example the domain is initially filled with air moving at a uniform velocity of $0.03m/s$  A ridgid cylinder $O.D. = 0.02m$ is placed $0.1m$ from the inlet and a passive scalar is injected into the domain through a $0.002m$ hole on in the inlet boundary of the domain.  A velocity perturbation is placed upstream of the cylinder to produce an instablity that will help trigger the onset of the K\'arm\'an vortex street.
%
\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill rmpmice (Rigid MPM-ICE)
\item [Input file name:] \hfill \TT{cylinderCrossFlow.ups}
\item [Command used to run input file:]\hfill \\
\TT{mpirun -np 6  sus inputs/UintahRelease/MPMICE/cylinderCrossFlow.ups}

\item [Simulation Domain:]\hfill    0.3 x 0.15 x 0.001 m

\item [Cell Spacing:]\hfill \\
.00015 x .001 x .001 m (Level 0)

\item [Example Runtimes:] \hfill \\
 7ish hrs   (6 processor, 3.16 GHz Xeon)\\

\item [Physical time simulated:] \hfill 60 seconds

\item [Associated visit session:] \hfill cyl\_crossFlow.session

\end{description}

\section*{\underline{Results}}

Figure~\ref{fig:cylCrossFlow} shows a snapshot of the simulation at time $t=60sec$.  The contour
plot of the passive scalar shows the K\'arm\'an vortex street behind the cylinder at $Re=700$.
\begin{figure}
  \center
  \includegraphics[scale=.5]{cylCrossFlow.png}
  \caption{Flow over a stationary cylinder, $Re=700$, a passive scalar is used as a flow marker}
  \label{fig:cylCrossFlow}
\end{figure}
%
A movie of the results is located at
\begin{Verbatim}[fontsize=\footnotesize]
  movies/cyl_crossFlow.mpg
\end{Verbatim}
\newpage

%__________________________________
\subsection*{\center Copper Clad Rate Stick (aka ``Cylinder Test")}
\addcontentsline{toc}{subsection}{"Cylinder Test"}
\subsubsection*{\underline{Problem Description}}

This is a two-dimensional version of the ``cylinder test" which is used to
characterize equations of state for explosive products.  In those tests, a
copper tube is filled with a high explosive and a detonation is initiated
at one end.  Various means are used to measure the velocity of the tube as
the high pressure product gases expand inside of it.

Here, a cylinder ($r=2.54 cm$) of QM100 is jacketed with a copper cylinder
that has a wall thickness of $0.52 cm.$   Detonation is initiated by giving
a thin layer of the explosive a high initial velocity in the axial direction
which generates a pressure that is sufficiently high to reach trigger the
detonation model.  As the detonation proceeds, the copper is pushed out of
the domain by the expanding product gases.

Note that in this example, to make run times brief, the domain is very short
in the axial direction, and is probably not sufficient for the detonation to
reach steady state.  Additionally, the domain has been reduced to two
dimensions, as symmetry is assumed in the Z-plane.  Finally, the spatial
resolution of $1.0 mm$ is a bit coarse to achieve
convergent results.  The full three dimensional result can quickly be
obtained by commenting out the symmetry condition on the z+ plane and
uncommenting the Neumann conditions, as well as changing the spatial extents
and resolution in the Z direction to match those in the Y direction.

%
\subsubsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Input file name:] \hfill \TT{QM100CuRS.ups}
\item [Command used to run input file:]\hfill \\
\TT{sus inputs/UintahRelease/MPMICE/QM100CuRS.ups}

\item [Simulation Domain:]\hfill    0.055 x 0.032 x 0.0005 m

\item [Cell Spacing:]\hfill \\
1.0 mm x 1.0 mm x 1.0 mm (Level 0)

\item [Example Runtimes:] \hfill \\
 20 minutes   (1 processor, 3.16 GHz Xeon)\\

\item [Physical time simulated:] \hfill 30 $\mu$seconds

\item [Associated visit session:] \hfill QM100.session

\end{description}

\subsubsection*{\underline{Results}}

Figure~\ref{fig:QM100} shows a snapshot of the simulation at time $t=60sec$.
Particles are colored by velocity magnitude, contours reflect the density of
explosive, note the highly compressed region near the shock front.
\begin{figure}
  \center
  \includegraphics[scale=.45]{QM100.png}
  \caption{Detonation in a copper cylinder (2-D).  Particles are colored by
           velocity magnitude, contours indicate density of unreacted
           explosive.}
  \label{fig:QM100}
\end{figure}
%
\newpage

%________________
\section*{\center  Cylinder Pressurization Using Simple Burn}
\addcontentsline{toc}{subsection}{Cylinder Pressurization Using Simple Burn}
\subsection*{\underline{Problem Description}}
This example demonstrates use of the Simple Burn algorithm in an explosive scenario.
The exact situation consists of a cylinder of PBX encased in steel.  For simplicity it is set up
as a 2D simulation.  It demonstrates Symmetric boundaries as a useful construct for simplifying
the computational requirements of a problem.  The end result is the pressurization of a quarter
of a cylinder by combustion of PBX 9501.  Damage and failure models simulate cylinder failure
in a detonation scenario.  The simulation as it stands falls far short of the required physical time
simulated for actual detonation, but demonstrates how Simple Burn can be used to pressurize
a cylinder.  For description of Simple Burn see \ref{Sec:SimpleBurn}.

\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Input file name:] \hfill guni2dRT.ups
\item [Preprocessing on input file:]\hfill \\ 1) Comment out or remove $<$max\_Timesteps$>$ on line 21 \\
2) Comment out $<$outputTimestepInterval$>$ on line 96 \\
3) add $<$outputInterval$>$5e-5$<$outputInterval$>$ on line 97 \\
\item [Command used to run input file:]\hfill mpirun -np 4 sus inputs/UintahRelease/MPMICE/guni2dRT.ups

\item [Simulation Domain:]\hfill    8.636 x 8.636 x 0.16933 cm

\item [Example Runtimes:] \hfill \\
2 minutes   (1 processor, 2.8 GHz Xeon)\\

\item [Physical time simulated:] \hfill 8 microseconds \\

\item [Associated visit session:] \hfill SimpleBurn.session

\end{description}

\newpage

\section*{\underline{Results}}
With the recession of mass comes a pressure increase that causes the
case to expand outward.  A snapshot of pressure after the 0.4
milliseconds can be seen in Figure~\ref{figsimburn1}.  At this time
pressure has increased to three-fold its initial value.  A later
snapshot Figure~\ref{figsimburn2} shows the response of the steel
cylinder to increased pressure.  Note that mass flux will scale
according to \ref{simburneqn}.  Another interesting view of the
simulation can be seen in Figure~\ref{figsimburn3}.  On the left is
the normal particle and pseudocolor map representing solid mass and
pressure respectively.  On the top right, change in pressure during
the timestep can be seen (delP\_Dilatate).  The bottom shows change in
pressure due to mass exchange (del\_MassX).  See table
\ref{table:iceLabels} for description of these variables.

% \begin{figure}
%   \center
%   \includegraphics[scale=.3]{SimpleBurn0000.png}

%   \caption{Receding PBX9501 leads to pressure increase in cylindrical steel shell.}
%   \label{figsimburn1}
% \end{figure}

% \begin{figure}
%   \center
%   \includegraphics[scale=.3]{SimpleBurn0001.png}

%   \caption{Pressure increase causes cylinder to respond.}
%   \label{figsimburn2}
% \end{figure}

% \begin{figure}
%   \center
%   \includegraphics[scale=.3]{SimpleBurn0002.png}

%   \caption{The left half of the image represents particles as spheres colored according to mass and pressure as background color.  Top-right shows delP\_Dilatate and bottom-right shows delP\_MassX.}
%   \label{figsimburn3}
% \end{figure}

\begin{figure}
  \centering
  \vspace{-60pt}
  \subfloat[Receding PBX9501 leads to pressure increase in cylindrical steel shell]{\label{figsimburn1}
    \includegraphics[width=.4\textwidth]{SimpleBurn0000.png}}
  \hspace{10pt}
  \subfloat[Pressure increase causes cylinder to respond]{\label{figsimburn2}
    \includegraphics[width=.4\textwidth]{SimpleBurn0001.png}}
  \hspace{10pt}
  \subfloat[The left half of the image represents particles as spheres colored according to mass and pressure as background color.  Top-right shows delP\_Dilatate and bottom-right shows delP\_MassX]{\label{figsimburn3}
    \includegraphics[width=.4\textwidth]{SimpleBurn0002.png}}
  \caption{}
  \label{}
  \vspace{-20pt}
\end{figure}

\newpage

%
\section*{\center Exploding Cylinder Using Steady Burn}
\addcontentsline{toc}{subsection}{Exploding Cylinder Using Steady Burn}
\subsection*{\underline{Problem Description}}
This problem consistes of a cylinder initially at 600 K causing burning.  Steady Burn acts as the model for burning of HE material.  More information on Steady Burn can be found in \ref{Sec:SteadyBurn}.  The cylinder is build from an outer shell of steel covering a hollow bored cylinder of PBX9501.  The simulation demonstrates the violence of explosions when large voids allow rapid expansion of surface area due to collapse of explosive material into the bore.  Information on the violence of explosions with solid and hollow cores can be attained in \cite{ref:wighteddings}.

\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Input file name:] \hfill SteadyBurn\_2dRT.ups
\item [Preprocessing on input file:]\hfill \\ 1) Comment out or remove $<$max\_Timesteps$>$ \\ 2) Comment out $<$outputTimestepInterval$>$ and uncomment $<$outputInterval$>$ around line 101 \\
\item [Command used to run input file:]\hfill mpirun -np 4 sus inputs/UintahRelease/MPMICE/SteadyBurn\_2dRT.ups

\item [Simulation Domain:]\hfill    9 x 9 x 0.1 cm

\item [Example Runtimes:] \hfill \\
 5 hours   (1 processor, 2.8 GHz Xeon)

\item [Physical time simulated:] \hfill 3 milliseconds \\

\item [Associated visit session:] \hfill SteadyBurn.session

\end{description}

\newpage

\section*{\underline{Results}}

Figure~\ref{figsteadyburn1} shows a nice view of the cylinder as the
PBX particles within is collapsing into the void, creating more
burnable surface area resulting in more violent explosion.  Figure
~\ref{figsteadyburn2} shows a view of the cylinder as the steel
container begins to expand outward.  Arrows represent the speed at
which the particles in the steel case are expanding outward.
Figure~\ref{figsteadyburn3} shows cell flagged as burning by Steady
Burn.

% \begin{figure}
%   \center
%   \includegraphics[scale=.3]{SteadyBurn0000.png}

%   \caption{Collapse of PBX into hollow bore of explosive device.}
%   \label{figsteadyburn1}
% \end{figure}

% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{SteadyBurn0001.png}

%   \caption{Expansion of steel casing as explosion occurs--response to pressure build-up.}
%   \label{figsteadyburn2}
% \end{figure}

% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{SteadyBurn0002.png}

%   \caption{Burning Cells denoted by red squares.}
%   \label{figsteadyburn3}
% \end{figure}

\begin{figure}
  \centering
  \vspace{-40pt}
  \subfloat[Collapse of PBX into hollow bore of explosive device]{\label{figsteadyburn1}
    \includegraphics[width=.4\textwidth]{SteadyBurn0000.png}}
  \hspace{10pt}
  \subfloat[Expansion of steel casing as explosion occurs--response to pressure build-up]{\label{figsteadyburn2}
    \includegraphics[width=.4\textwidth]{SteadyBurn0001.png}}
  \hspace{10pt}

  \subfloat[Burning Cells denoted by red squares]{\label{figsteadyburn3}
    \includegraphics[width=.4\textwidth]{SteadyBurn0002.png}}
  \caption{}
  \label{}

\end{figure}

\newpage
%
\newpage
\section*{\center  T-Burner Example Using Unsteady Burn}
\addcontentsline{toc}{subsection}{T-Burner Example Using Unsteady Burn}
\subsection*{\underline{Problem Description}}
The T-Burner problem was inspired by  an article by Jerry Finlinson, Richard Stalnaker and Fred Blomshield in which a T-Burner apparatus was pressurized to a given pressure and ignited \cite{ref:finlinson1}.  The T-Burner composed of a cylinder with HMX on each circular ends, and a pressure inlet halfway between the HMX caps pumps pressure into the vessel parallel to those walls.  Finlinson, et. al. measured pressure oscillations in the chamber and this simulation mimics the behavior found of Finlinson's 500 psi experiment.  For simplicity and resource minimization, the simulation is set up as a 2D T-Burner.  The graphs below shows the pressure oscillations over time compared with that from \cite{ref:finlinson1}.  This simulation demonstrates the utility of Unsteady Burn in simulations where pressure oscillations occur in small places.  For more information on Unsteady Burn see \ref{Sec:UnsteadyBurn}.

\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Input file name:] \hfill \TT{TBurner\_2dRT.ups}
\item [Command used to run input file:]\hfill mpirun -np 4 sus TBurner\_2dRT.ups

\item [Simulation Domain:]\hfill    0.822 x 0.138 x 0.003 m

\item [Example Runtimes:] \hfill \\
 25 minutes   (1 processor, 2.8 GHz Xeon)\\

\item [Physical time simulated:] \hfill 0.46 milliseconds \\
0.46 milliseconds of simulation equates flag $<$max\_Timesteps$>$410$</$max\_Timesteps$>$ \\ \\
Notes: \\
1)Remove line from input file to allow simulation to run full 0.25 seconds \\
2)Comment out $<$outputTimestepInterval$>$ and uncomment $<$outputInterval$>$ to make output $\Delta t$ constant \\

\item [Associated visit session:] \hfill TBurner.session

\end{description}

\newpage

\section*{\underline{Results}}

Figure~\ref{figtburn1}, ~\ref{figtburn2} and ~\ref{figtburn3} show successive snapshots of the simulation.  Contour plot depicts pressure and represents the wave front as it oscillates between two sheets of burning PBX 9501.  Figure ~\ref{figtburnVel} shows velocities of gas cells.
% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{TBurner0000.png}

%   \caption{Time 1: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure.}
%   \label{figtburn1}
% \end{figure}

% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{TBurner0001.png}

%   \caption{Time 2: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure.}
%   \label{figtburn2}
% \end{figure}
% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{TBurner0002.png}

%   \caption{Time 3: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure.}
%   \label{figtburn3}
% \end{figure}

\begin{figure}[H]
  \centering
  \vspace{-80pt}
  \subfloat[Time 1: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure]{\label{figtburn1}
  \includegraphics[scale=.4]{TBurner0000.png}}

   \subfloat[Time 2: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure]{\label{figtburn2}
     \includegraphics[scale=.4]{TBurner0001.png}}

   \subfloat[Time 3: Oscillatory behavior in the form of a pressure wave in a T-Burner.  Contour plot depicts pressure]{\label{figtburn3}
     \includegraphics[scale=.4]{TBurner0002.png}}

   \subfloat[Velocity vectors of cell material.  Shows how the pressure causes gas to move]{\label{figtburnVel}
  \includegraphics[scale=.4]{TBurnerVel0000.png}}

  \caption{}
  \label{}
  \vspace{-30pt}
\end{figure}

Figure~\ref{figtburnVel} shows a snapshot of the simulation at the same instant as the
previous figure.  The contour plot depicts pressure.  The arrows are vectors depicting
the importance
% \begin{figure}
%   \center
%   \includegraphics[scale=.4]{TBurnerVel0000.png}

%   \caption{Velocity vectors of cell material.  Shows how the pressure causes gas to move.}
%   \label{figtburnVel}
% \end{figure}

%
\iffalse
%The pinwheel example was never commited.
%__________________________________
\newpage
\section*{\center  Pinwheel}
\addcontentsline{toc}{subsection}{Pinwheel}
\subsection*{\underline{Problem Description}}
This simulation provides an example of fluid-solid interaction through driving a pinwheel via a supersonic jet of air. A 500 m/s jet of air is directed at the face of one of four fins attached to a hollowed cylinder surrounding a pin. This continuous jet of air spins the wheel around the stationary pin creating an easily visually verifiable fluid-solid interaction model.

\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Input file name:] \hfill \TT{pinWheel.ups}
\item [Command used to run input file:]\hfill
mpirun -np 6 sus inputs/UintahRelease/MPMICE/pinWheel.ups

\item [Simulation Domain:]\hfill    4.5 x 3.0 x 4.5 m

\item [Example Runtimes:] \hfill \\
 10 hours   (6 processors, 2.66 GHz Xeon)\\

\item [Physical time simulated:] \hfill 1 second \\

\item [Associated visit session:] \hfill pinWheel.session

\end{description}

\newpage

\section*{\underline{Results}}

\begin{figure}
  \centering
  \vspace{-40pt}
  \subfloat[Pinwheel driven by a jet of air]{\label{pinwheel1}
    \includegraphics[width=.8\textwidth]{pinWheel.png}}
  \hspace{10pt}
  \caption{}
  \label{}

\end{figure}

Figure~\ref{pinwheel1} shows a visualization of the pinwheel alongside the air jet represented by the velocity vectors. The air jet contacts a fin on the wheel causing it to continuously rotate counterclockwise as seen by the colored velocity of the boxes.

\fi

%__________________________________
\newpage
\section*{\center  Lizard Lung}
\addcontentsline{toc}{subsection}{Lizard Lung}
\subsection*{\underline{Problem Description}}
This simulation provides an example of fluid-solid interaction using both a
compliant MPM material, as well as a rigid material that is given a prescribed
time-velocity profile.  The latter acts as a piston that pushes or pulls air
though a pair of valves, one of which opens and the other of which closes,
depending on the direction of the flow.  In addition to the input file, a
second file, ``breathe.txt", describes the velocity of the piston.

A post-processing script has been added, massFlowRateLL.m.  This allows one to
compute the mass flow rate through each of the valves.  The script runs through
matlab, and requires minor editing to modify the uda name, and whether output is
wanted regarding the top or bottom valve.

\subsection*{\underline{Simulation Specifics}}
\begin{description}
\item [Component used:] \hfill mpmice (MPM-ICE)
\item [Code modification required:]

Because symmetry boundary conditions are used on the z- and z+ faces, without
modification, the center section of the solid geometry, shown in
Figure~\ref{lizard}, would rotate into a more favorable aerodynamic position,
as there is nothing stopping it, other than its inertia.  Therefore,
SerialMPM.cc was modified to keep a block within that section fixed in space.
The particles to hold fixed are identified by their ``color":

\begin{verbatim}
        // Update the particle's position and velocity
        if(pColor[idx] < 1.0){
          pxnew[idx]           = px[idx]    + vel*delT*move_particles;
          pdispnew[idx]        = pdisp[idx] + vel*delT;
          pvelocitynew[idx]    = pvelocity[idx]    + acc*delT;
          // pxx is only useful if we're not in normal grid resetting mode.
          pxx[idx]             = px[idx]    + pdispnew[idx];
          pTempNew[idx]        = pTemperature[idx] + tempRate*delT;
          pTempPreNew[idx]     = pTemperature[idx]; // for thermal stress
        } else {
          pxnew[idx]           = px[idx];
          pdispnew[idx]        = pdisp[idx];
          pvelocitynew[idx]    = pvelocity[idx];
          // pxx is only useful if we're not in normal grid resetting mode.
          pxx[idx]             = px[idx];
          pTempNew[idx]        = pTemperature[idx];
          pTempPreNew[idx]     = pTemperature[idx]; // for thermal stress
        }
\end{verbatim}

This modification occurs in interpolateToParticlesAndUpdate, around line 3450
in this file.

\item [Input file name:] \hfill \TT{lizardLung4.ups}
\item [Instruction to run input file:] \hfill \newline Copy breathe.txt to the same directory as sus.
\item [Command used to run input file:]\hfill
mpirun -np 16 sus inputs/UintahRelease/MPMICE/lizardLung4.ups

\item [Simulation Domain:]\hfill    0.6 x 0.3 x 0.002 m

\item [Example Runtimes:] \hfill \\
 18 hours   (16 processors, 2.40 GHz Xeon) (Much less time is needed to
see the behavior, 18 hours is enough for many piston oscillations.)\\

\item [Physical time simulated:] \hfill 10 seconds \\

\end{description}

\section*{\underline{Results}}

\begin{figure}
  \centering
  \vspace{-40pt}
  \subfloat[Air pushed and pulled by a piston through two check valves.]{\label{lizard}
    \includegraphics[width=1.1\textwidth]{LizardLung.png}}
  \hspace{10pt}
  \caption{}
  \label{}

\end{figure}

Figure~\ref{lizard} shows a visualization of the geometry having been deformed by the movement of air caused by the motion of the piston at about x=0.18.  The
piston moves sinusoidally according to the velocity table prescribed in ``breathe.txt".

\bibliographystyle{plain}
\bibliography{ice}