Programming Philosophy

XSTAR has been written and developed over a span of approximately 15 years, and much has changed during that time. Changes include advances in the fortran language, changes in the speed and memory capacity of the available computers, new insights into the flexibility required of XSTAR, and insight into which physical processes are likely to have the greatest effect on the model results.

XSTAR was written in standard fortran 77, and much of the code retains the programming style associated with the older versions of the fortran language. Hard experience with moving the code from one type of machine to another has led to an attempt to avoid any machine dependent extensions to the fortran language, any word length dependent numerical constructs or any use of extended precision arithmetic (with one or two exceptions).

The code is structured in an attempt to be modular, and to separate the calculation of the atomic rates from the calculation of level populations, ion fractions, temperature, etc. The goal is to make it relatively easy to add or change atomic data, requiring modification of just one subroutine if a new process is added or a fitting formula is changed. The data itself is all read in from an external file, so that it can be changed without any modification to the code itself if the existing fitting formulas are unchanged.

The remainder of this appendix is organized as follows. First we present a list of the subroutines and a short description of their function. This list is sorted by category: subroutines used in input, output, defining ionizing spectrum, primary driving subroutines, and rate calculation. Then we present a list of variable names and a description of their contents. Finally we present a schematic flow chart of the operation of XSTAR.