/**
 * @defgroup phases Models of Phases of Matter
 *
 *  These classes are used to represent the composition and state of a
 *  single phase of matter.
 *  Together these classes form the basis for describing the species and
 *  element compositions of a phase as well as the stoichiometry
 *  of each species, and for describing the current state of the
 *  phase. They do not in themselves contain Thermodynamic equation of
 *  state information. However, they do comprise all of the necessary
 *  background functionality to support thermodynamic calculations, and the
 *  class ThermoPhase inherits from the class Phase (see \ref thermoprops).
 *
 *  Class Elements manages the elements that are part of a
 *  chemistry specification for a phase.  This class may support calculations
 *  employing Multiple phases. In this case, a single Elements object may
 *  be shared by more than one Constituents class. Reactions between
 *  the phases may then be described using stoichiometry base on the
 *  same Elements class object.
 *
 *  The member functions of class %Elements return information about
 *  the elements described in a particular instantiation of the
 *  class.
 *
 *  Class %Constituents is designed to provide information
 *  about the elements and species in a phase - names, index
 *  numbers (location in arrays), atomic or molecular weights,
 *  etc. No computations are performed by the methods of this
 *  class. The set of elements must include all those that compose
 *  the species, but may include additional elements.
 *
 *  %Constituents contains a pointer to the Elements object, and
 *  it contains wrapper functions for all of the functionality
 *  of the %Elements object, i.e., atomic weights, number and identity
 *  of the elements. %Elements may be added to a phase by using
 *  the function Constituents::addUniqueElement(). The %Elements
 *  object may be shared amongst different Phases.
 *
 *  %Constituents also contains utilities retrieving the index of
 *  a species in the phase given its name, Constituents::speciesIndex().
 *
 *  Class State manages the independent variables of temperature,
 *  mass density, and species mass/mole fraction that define the
 *  thermodynamic state.
 *
 *  Class %State stores just enough information about a
 *  multicomponent solution to specify its intensive thermodynamic
 *  state.  It stores values for the temperature, mass density, and
 *  an array of species mass fractions. It also stores an array of
 *  species molecular weights, which are used to convert between
 *  mole and mass representations of the composition. These are the
 *  \e only properties of the species that class %State knows about.
 *
 *  Class %State is not usually used directly in application
 *  programs. Its primary use is as a base class for class
 *  Phase. Class %State has no virtual methods, and none of its
 *  methods are meant to be overloaded. However, this is one
 *  exception.  If the phase is incompressible, then the density
 *  must be replaced by the pressure as the independent variable. In
 *  this case, functions such as State::setMassFractions() within
 *  the class %State must actually now calculate the density (at
 *  constant <I>T</I> and <I>P</I>) instead of leaving it alone as
 *  befits an independent variable. Therefore, these types of
 *  functions are virtual functions and need to be overloaded for
 *  incompressible phases. Note, for nearly incompressible phases
 *  (or phases which utilize standard states based on a <I>T</I> and
 *  <I>P</I>) this change in independent variables may be
 *  advantageous as well, and these functions in %State need to
 *  overload as well so that the stored density within State
 *  doesn't become out of date.
 *
 *  Class Phase derives from both clases
 *  Constituents and State. In addition to the methods of those two
 *  classes, it implements methods that allow referencing a species
 *  by name. And, it contains a lot of utility functions that will
 *  set the %State of the phase in its entirety, by first setting
 *  the composition, then the temperature and then the density.
 *  An example of this is the function,
 *    Phase::setState_TRY(doublereal t, doublereal dens, const doublereal* y).
 *
 *  Class Phase contains method for saving and restoring the
 *  full internal states of each phase. These are called Phase::saveState()
 *  and Phase::restoreState(). These functions operate on a state
 *  vector, which is in general of length (2 + nSpecies()). The first
 *  two entries of the state vector is temperature and density.
 *
 */
