**Last modified Jan. 30, 2003**

IntegratorT is a C++ class for numerical integration. It was written by
Blake Ashby (bmashby@stanford.edu) based on the routines written in 
FORTRAN by: 

         E. Hairer and G. Wanner
         Universite de Geneve, Dept. de Mathematiques
         Ch-1211 Geneve 24, Switzerland
         E-mail:  ernst.hairer@math.unige.ch
                  gerhard.wanner@math.unige.ch
		  
The NonStiffIntegratorT class is also based upon code that was adapted 
for C by:
	 
	 J. Colinge (colinge@divsun.unige.ch)
		  
The following files should be included:

IntegratorT.h           (header file for parent class)
IntegratorT.cpp         (implementation file for parent class)
NonStiffIntegratorT.h   (header file for child class based on DOPRI5)
NonStiffIntegratorT.cpp (implementation file for child class based on DOPRI5)
StiffIntegratorT.h      (header file for child class based on RADAU5)
StiffIntegratorT.cpp    (implementation file for child class based on RADAU5)
decsol.h                (header file for linear algebra routines used by
                         StiffIntegratorT)
decsol.cpp              (implementation file for linear algebra routines 
                         used by StiffIntegratorT)
main.cpp                (driver file) 
makefile                (makefile for above files. Driver routine should be
                         named 'main.cpp' unless changed in this makefile.
			 g++ is the compiler and linker used.)
			 
After running 'make', the executable file is 'integrate'.

To use these integrators, the user must provide a driver file that includes
the following functions: Function (for both stiff and nonstiff) and Jacobian
(for stiff) and Mass (for stiff). 

The user may also wish to modify the SolutionOutput routine in the 
IntegratorT.cpp file for their own purposes. I made this function a member 
function for the IntegratorT parent class so that the user can have access 
to certain member variables and routines without having to pass them as 
parameters.

Other driver files have also been included in the TESTSETS subdirectory:

amplifier.cpp  
beam.cpp  
bruss.cpp  
cusp.cpp  
e5.cpp  
hires.cpp  
oregon.cpp  
rober.cpp  
vdpol.cpp

These driver files include calls to both the stiff and nonstiff integrator.
Many of these problems are very stiff though, so don't be surprised if the
NonStiffIntegratorT fails for these problems.

More information can be found in comments in the header files and throughout
the code.

Some name of variables and routines differ from that of the FORTRAN versions.
The greater naming flexibility of C++ was used to make the purpose of the 
variables and routines more readily apparent. For example:

FORTRAN:      C++:
FCN           Function
JAC           Jacobian
MAS           Mass
SOLOUT        IntegratorT::SolutionOutput (I have made this function a member 
                 function for the IntegratorT parent class so that the user 
		 can have access to certain member variables and routines 
		 without having to pass them as parameters)
RADCOR        StiffIntegratorT::CoreIntegrator
CONTR5        StiffIntegratorT::ContinuousOutput
DECOMR        StiffIntegratorT::DecompReal
DECOMC        StiffIntegratorT::DecompComplex
SLVRAD        StiffIntegratorT::LinearSolve
ESTRAD        StiffIntegratorT::ErrorEstimate
DOPCOR        NonStiffIntegratorT::CoreIntegrator
CONTD5        NonStiffIntegratorT::ContinuousOutput


