\subsection{A Very Brief Description of {\TITAN} } We discretize the physical equations (1)-(5) with finite differences. The physical quantities are defined on a staggered mesh. This allows us to write down the spatial operators in a straightforward manner, although some attention must be paid to the advection terms. Here we have employed the second-order, upwind Van Leer advection scheme [8]. The temporal evolution is achieved with a simple formula to advance from the old to the new time level. As a consequence our variables are functions of the integer pair $(k,n)$, \ie~of zone number and time index. In the equations all quantities $x$, aside from the temporal operator, are defined in between the old and the new time step with the aid of the time centering parameter $\theta$, \begin{flushleft} $\hspace{60mm} x_k = \theta x_k^{n+1} + (1-\theta) x_k^n~. \hfill (24) $ \end{flushleft} The algorithm becomes fully implicit for $\theta =1$ and assumes backward-Euler differencing for $\theta = {1\over2}$. In general we adopt ${1\over2}< \theta\le 1$. The physical equations are formulated in conservation form using a discrete volume scheme. We provide the initial solution of the fundamental quantities for this set of algebraic equations. Their linearization results in a block pentadiagonal matrix. This system is inverted by the Henyey scheme~[5] and then the solution is advanced in time by Newton's method. The data on the new time level are said to be converged when the maximum of the relative change of the variables is less than a specified tolerance, typically $10^{-5}$, and the number of iterations lies within a specified range, say 3 and 15. The new time step is evaluated by a nonlinear control which incorporates accuracy considerations such that the temporal change of the variables is less than a given limit, typically 10\%. \subsection{The Adaptive Grid Equation} At the core of our code is the adaptive grid algorithm. This couples the physical equations with a grid equation nonlinearly in a twofold manner. One way is the transformation of the physical equations according to the adaptive mesh Reynolds transport theorem, \cf~Winkler, Norman, \& Mihalas~[13]. This changes the equations to an arbitrary frame of reference which can be quite different for each zone number. One discussion of how this transformation is carried out can be found in~[2]. The other way is the addition of the grid equation which has only numerical significance and which determines which frame of reference for each zone at every time index is chosen. It needs input from physical quantities in order to find the features one wishes to resolve. We adopted the grid equation according to Dorfi \& Drury~[3]. Their basic idea is to balance the grid concentration $$ {\cal C}_k^n = {{\cal X}(r_{k+1}^n,r_k^n)\over(r_{k+1}^n-r_k^n)} \eqno{(25)} $$ with the resolution function $$ {\cal R}_k^n = \sqrt{1 + \Bigl[{\cal C}_k^n\Bigr]^2 \sum_j {\Bigl[{f_{j\;k+1}^n-f_{j\;k}^n\over {\cal X}(f_{j\;k+1}^n,f_{j\;k}^n)}\Bigr]^2}} \eqno{(26)} $$ of the problem under consideration. The latter measures the arc length of various physical quantities $f_k^n$ which are typically the density, gas energy, radiative energy, or gas pressure. Demanding the grid equation $$ {\cal C}_k^n \propto {\cal R}_k^n \eqno{(27)} $$ under the constraint $$ {\alpha\over{\alpha+1}} \le {{\cal C}_{k+1}^n\over {\cal C}_k^n} \le {\alpha+1 \over\alpha} \eqno{(28)} $$ with $\alpha > 1$ one forces the grid to distribute in such a way that steep features in the fluid are resolved while maintaining approximately the same number of zones within the unit arc length over the whole domain. The detailed derivation and formulation of the grid equation can be found in~[3]. The function ${\cal X}$ renders the expressions in (14) \& (15) dimensionless and serves as a scaling factor. We define it in two different ways: linear scaling with ${\cal X}(x_{k+1}^n,x_k^n) = x_{\scriptscriptstyle scale}$ and logarithmic scaling with ${\cal X}(x_{k+1}^n,x_k^n) = (x_{k+1}^n+x_k^n)$. The grid equation itself contains further a time scale $\tau$ which sets the time step below which the distribution of the zones remains frozen in. In addition to the adaptive grid the user can choose a fixed grid in either the Lagrangean or the Eulerian frame of reference. \subsection{The Artificial Stress} An important computational tool in finite difference computations is the artificial stress. We apply a tensor formulation adapted from~[10] which is symmetric and trace free: $$ \PQ = - {4\over3} \rho \mq \left[{\p u\overp r} - {\mu\over2}{u\over r}\right]. \eqno{(29)} $$ The artificial viscosity is evaluated according to: $$ \mq = C_q^1 \ell \cs - C_q^2 \ell^2 \min\left[0,{\p(r^\mu u)\over r^\mu\p r}\right]. \eqno{(30)} $$ It incorporates a linear term in the shock width $\ell$ proportional to the local sound speed and a quadratic term in $\ell$ proportional to the divergence of the velocity field. The latter is turned on only in compression regions. The shock width is given either by a constant $\ell = \ell_0$ or set proportional to the radius $\ell = \ell_1\cdot r$. The artificial stress $\PQ$ appears in the momentum equation (3) in form of a shear force and in the energy equation (5) in form of stress work that dissipates some heat and functions as a source of entropy generation. In adaptive grid computation the artifical stress serves as a means to establish a well defined ceiling for the discretization errors of the finite difference scheme. For this reason the shock width $\ell$ can typically be taken considerably smaller than fixed grid algorithms demand. We often combine the constant scalings for the shock width, $\ell_0$, and the grid resolution, $R_{\scriptscriptstyle scale}$, and similarly choose the radius dependent expressions $\ell_1\cdot (r_k^n+r_{k+1}^n)$ and ${\cal X}(r_{k+1}^n,r_k^n) = (r_{k+1}^n+r_k^n)$ together. Because of this correspondence we can see that the shock width $\ell$ sets a scale for the concentration ${\cal C}$ that the adaptive grid must obtain to resolve the shock and hence defines the maximum resolution. This will be eluded further later on in the discussion of the test problems. \subsection{Principles of Coding} {\it Comprehensible}. Each subroutine of has been given a header which contains a brief description of the contents, a calling sequence for easier location within the code, and possibly some references. In the body we make good use of comment cards to break the computation into meaningful parts and to make references to corresponding sections in the code documentation for comparison purposes. {\it Versatile}. One general guideline during the development phase was to keep functionality of the code operators separate from its arguments wherever is was meaningful. This applies in particular to the linear solution precedure into which the Jacobian matrices of any set of equations can be fed. Hence they were formulated in a modular fashion so that they could be replaced with any other set. In this regard our code becomes a general PDE solver for the 1-D case. Similarly we provide for a general interface for the constitutive relations so that their specific evaluation is left to the user. The modular formulation of the physics part also enables the user to adapt or extend the code to his/her particular problem of interest. {\it Portable}. We have written {\TITAN} in standard FORTRAN 77. This allows for an immediate compilation and execution on a host of workstations and mainframes. \vfill .