Epetra_SerialSpdDenseSolver.h

Go to the documentation of this file.
00001 
00002 //@HEADER
00003 /*
00004 ************************************************************************
00005 
00006               Epetra: Linear Algebra Services Package 
00007                 Copyright (2001) Sandia Corporation
00008 
00009 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00010 license for use of this work by or on behalf of the U.S. Government.
00011 
00012 This library is free software; you can redistribute it and/or modify
00013 it under the terms of the GNU Lesser General Public License as
00014 published by the Free Software Foundation; either version 2.1 of the
00015 License, or (at your option) any later version.
00016  
00017 This library is distributed in the hope that it will be useful, but
00018 WITHOUT ANY WARRANTY; without even the implied warranty of
00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020 Lesser General Public License for more details.
00021  
00022 You should have received a copy of the GNU Lesser General Public
00023 License along with this library; if not, write to the Free Software
00024 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00025 USA
00026 Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00027 
00028 ************************************************************************
00029 */
00030 //@HEADER
00031 
00032 #ifndef EPETRA_SERIALSPDDENSESOLVER_H
00033 #define EPETRA_SERIALSPDDENSESOLVER_H
00034 #include "Epetra_SerialDenseSolver.h"
00035 class Epetra_SerialSymDenseMatrix;
00036 
00038 
00134 //=========================================================================
00135 class Epetra_SerialSpdDenseSolver : public Epetra_SerialDenseSolver {
00136 
00137  public:
00139 
00140 
00141   Epetra_SerialSpdDenseSolver();
00142   
00143 
00145   virtual ~Epetra_SerialSpdDenseSolver();
00147 
00149 
00150 
00151   //Let the compiler know we intend to overload the SetMatrix function,
00152   //rather than hide it.
00153   using Epetra_SerialDenseSolver::SetMatrix;
00154 
00156   int SetMatrix(Epetra_SerialSymDenseMatrix & A);
00158   
00160 
00161 
00163 
00166   int Factor(void);
00167 
00169 
00172   int Solve(void);
00173 
00175 
00180   int Invert(void);
00181 
00183 
00186   int ComputeEquilibrateScaling(void);
00187 
00189 
00192   int EquilibrateMatrix(void);
00193 
00195 
00198   int EquilibrateRHS(void);
00199 
00200 
00202 
00205   int ApplyRefinement(void);
00206 
00208 
00211   int UnequilibrateLHS(void);
00212 
00214 
00220   int ReciprocalConditionEstimate(double & Value);
00222 
00224 
00225 
00226 
00228   bool ShouldEquilibrate() {ComputeEquilibrateScaling(); return(ShouldEquilibrate_);};
00230 
00232 
00233     
00235   Epetra_SerialSymDenseMatrix * SymMatrix()  const {return(SymMatrix_);};
00236        
00238   Epetra_SerialSymDenseMatrix * SymFactoredMatrix()  const {return(SymFactor_);};
00239 
00241 
00243   double SCOND() {return(SCOND_);};
00244 
00245   //Let the compiler know we intend to overload the AMAX function,
00246   //rather than hide it.
00247   using Epetra_SerialDenseSolver::AMAX;
00248 
00250   double AMAX() {return(AMAX_);};  
00252 
00253  private:
00254 
00255   double SCOND_;
00256   Epetra_SerialSymDenseMatrix * SymMatrix_; // Need pointer to symmetric matrix for Spd-specific methods
00257   Epetra_SerialSymDenseMatrix * SymFactor_; // Need pointer to symmetric matrix for Spd-specific methods
00258 
00259   // Epetra_SerialSpdDenseSolver copy constructor (put here because we don't want user access)
00260   
00261   Epetra_SerialSpdDenseSolver(const Epetra_SerialSpdDenseSolver& Source);
00262   Epetra_SerialSpdDenseSolver & operator=(const Epetra_SerialSpdDenseSolver& Source);
00263 };
00264 
00265 #endif /* EPETRA_SERIALSPDDENSESOLVER_H */

Generated on Thu Sep 18 12:37:58 2008 for Epetra Package Browser (Single Doxygen Collection) by doxygen 1.3.9.1