PlayaILUFactorizableOp.hpp
Go to the documentation of this file.
00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_ILUFACTORIZABLEOP_HPP
00006 #define PLAYA_ILUFACTORIZABLEOP_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 
00010 
00011 namespace Playa
00012 {
00013 template <class Scalar> class Preconditioner;
00014 
00015 /** */
00016 enum LeftOrRight {Left, Right};
00017 
00018 /** 
00019  * Base interface for operators for which incomplete LU factorizations
00020  * can be obtained. 
00021  */
00022 template <class Scalar>
00023 class ILUFactorizableOp
00024 {
00025 public:
00026   /** Virtual dtor */
00027   virtual ~ILUFactorizableOp(){;}
00028 
00029 
00030   /** \name incomplete factorization preconditioning interface */
00031   //@{
00032   /** create an incomplete factorization. 
00033    * @param fillLevels number of levels of fill on the local processor
00034    * @param overlapFill number of levels of fill on remote processors
00035    * @param relaxationValue fraction of dropped values to be added to the
00036    * diagonal
00037    * @param relativeThreshold relative diagonal perutrbation
00038    * @param absoluteThreshold absolute diagonal perturbation
00039    * @param leftOrRight whether this preconditioner is to be applied
00040    * from the left or right 
00041    * @param rtn newly created preconditioner, returned 
00042    * by reference argument.
00043    */
00044   virtual void getILUKPreconditioner(int fillLevels,
00045     int overlapFill,
00046     double relaxationValue,
00047     double relativeThreshold,
00048     double absoluteThreshold,
00049     LeftOrRight leftOrRight,
00050     Preconditioner<Scalar>& rtn) const=0;
00051   //@}
00052      
00053       
00054 private:
00055 };
00056 }
00057 
00058 
00059 #endif

Site Contact