%
% PSI Programmer's Manual
%
% Introduction
%
% Daniel Crawford, 24 January, 1996
% Revised by TDC July 2002
%

The purpose of this manual is to provide a reasonably detailed
overview of the source code and programming philosophy of \PSIthree,
such that programmers interested in contributing to the code will have
an easier task.  Section \ref{cvs} gives a succint explanation of the
steps required to obtain the source code from the main repository at
Virginia Tech.  (Installation instructions are given separately in the
installation manual or in \$PSI3/INSTALL.)  Section
\ref{Fundamental_PSI} discusses the essential elements of a C-language
\PSIthree\ program, with emphasis on the input parsing and I/O
functions.  Section \ref{Other_Libs} provides documentation of a
number of other important libraries, including the library of
functions for reading from the checkpoint file, \library{libchkpt.a},
the Quantum Trio miscellaneous function library, \library{libqt.a},
the \library{libiwl.a} for reading and writing one- and two-electron
integrals in the ``integrals with labels'' format.  Section
\ref{Style} offers advice on appropriate programming style for
\PSIthree\ code, and section \ref{Makefiles} describes the structure
of the package's \file{Makefile}s.  Section \ref{New_Code} gives a
brief overview of the necessary steps to adding a new module to
\PSIthree, section \ref{Debugging} gives some suggestions on debugging
it, and section \ref{Documentation} explains conventions for
documenting it.  The appendices provide important reference material,
including the currently accepted \PSIthree\ citation and format
information for some of the most important text files used by
\PSIthree\ modules.
