Although all rates should extrapolate correctly at low density, the level population calculation requires the inversion of large matrices of rates. In most cases, the largest elements of the matrix are the spontaneous decay rates (A values) for allowed transitions. For highly charged ions these can exceed 10 s. At low densities the smallest rates of interest are the collisional rates and recombination rates. XSTAR attempts to avoid inverting singular matrices by discarding rows and columns whose largest elements differ from the largest element in the matrix by more than the machine precision (and then assuming the populations in the associated levels are zero). This can have the effect of producing inaccurate solutions particularly at low densities since some physically important transitions (notably recombination) may be discarded. Unfortunately, there is no clear way of automatically informing the user when this is happening. A rough rule of thumb is that densities less than approximately 1000 should be avoided when iron may be ionized beyond Fe XVII.

An indication of possible numerical problems is given by the final integer on each line of the output log file. This is the number of iterations required in order to reach thermal equilibrium and charge neutrality. Models with good convergence will typically have values of 5 or less for this quantity, except for the first step and possibly near ionization fronts. Otherwise, if this integer is large (i.e. greater than, say, 20), and if the value of heating - cooling (`h-c') is greater than 1 - 2, then it is possible that the density is lower than can be treated accurately by XSTAR.