%File: ~/OOP/system_of_eqn/linearSOE/bandSPD/BandSPDLinLapackSolver.tex
%What: "@(#) BandSPDLinLapackSolver.tex, revA"

\noindent {\bf Files}   \\
\indent \#include $<\tilde{ }$/system\_of\_eqn/linearSOE/bandSPD/BandSPDLinLapackSolver.h$>$  \\

\noindent {\bf Class Declaration}  \\
\indent class BandSPDLinLapackSolver: public BandSPDLinSolver  \\

\noindent {\bf Class Hierarchy} \\
\indent MovableObject \\
\indent\indent  Solver \\
\indent\indent\indent LinearSOESolver \\
\indent\indent\indent\indent BandSPDLinSolver \\
\indent\indent\indent\indent\indent {\bf BandSPDLinLapackSolver} \\

\noindent {\bf Description}  \\
\indent A BandSPDLinLapackSolver object can be constructed to solve
a BandSPDLinSOE object. It obtains the solution by making calls on the
the LAPACK library. The class is defined to be a friend of the 
BandSPDLinSOE class (see $<$BandSPDLinSOE.h$>$). \\


\noindent {\bf Interface}  \\
\indent\indent // Constructor \\
\indent\indent {\em BandSPDLinLapackSolver();}  \\ \\
\indent\indent // Destructor \\
\indent\indent {\em $\tilde{ }$BandSPDLinLapackSolver();}\\  \\
\indent\indent // Public Methods \\
\indent\indent {\em int solve(void);} \\
\indent\indent {\em int setSize(void);} \\
\indent\indent {\em int sendSelf(int commitTag, Channel \&theChannel);}\\ 
\indent\indent {\em int recvSelf(int commitTag, Channel \&theChannel,
FEM\_ObjectBroker \&theBroker);}\\ 


\noindent {\bf Constructor}  \\
\indent {\em BandSPDLinLapackSolver();}  \\
A unique class tag (defined in $<$classTags.h$>$) is passed to the
BandSPDLinSolver constructor. \\


\noindent {\bf Destructor} \\
\indent {\em  $\tilde{ }$BandSPDLinLapackSolver();}\\ 
Does nothing. \\

\noindent {\bf Public Member Functions }  \\
\indent {\em virtual int solve(void);} \\
The solver first copies the B vector into X and then solves the
BandSPDLinSOE system by calling the LAPACK routines {\em 
dpbsv()}, if the system is marked as not having been factored,
and {\em dpbtrs()} if system is marked as having been factored. 
If the solution is successfully obtained, i.e. the LAPACK routines
return $0$ in the INFO argument, it marks the system has having been 
factored and returns $0$, otherwise it prints a warning message and
returns INFO. The solve process changes $A$ and $X$. \\   


\indent {\em int setSize(void);} \\
Does nothing but return $0$. \\

\indent {\em  int sendSelf(int commitTag, Channel \&theChannel);} \\ 
Does nothing but return $0$. \\

\indent {\em  int recvSelf(int commitTag, Channel \&theChannel, FEM\_ObjectBroker
\&theBroker);} \\ 
Does nothing but return $0$. \\



