Diffpack Documentation


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

PrecAlgebraic.h

Go to the documentation of this file.
00001 
00005 class PrecAlgebraic : public Precond
00006 
00007 {
00008 protected:
00009 
00010   Handle(LinEqMatrix) C;
00011 
00012   PrecAlgebraic (const Precond_prm& p);
00013 
00014       
00015   virtual bool allocate (const LinEqMatrix& mat);
00016 
00017 public:
00018 
00019   virtual ~PrecAlgebraic () {}
00020 
00021       
00022 
00023   virtual void init (PrecBasis& Apb);
00024 
00025   virtual bool ok () const { return C.ok(); }
00026 
00027   virtual void apply
00028   (const LinEqVector& /*c*/,
00029            LinEqVector& /*d*/,
00030            TransposeMode /*tpmode*/ = NOT_TRANSPOSED) {
00031     errorFP("PrecAlebraic ::apply",
00032             "Can not apply, this is a nonactive base class");
00033   }
00034 
00035   virtual real getStorage () const;
00036 
00037   virtual void get (LinEqMatrix& precmat, String& precname) const;
00038   void get (Precond_prm& precprm_) const { Precond ::get (precprm_); }
00039 
00040   CLASS_INFO
00041 };
00042 
00043 
00066 class PrecUserDefLU : public PrecAlgebraic
00067 
00068 {
00069 public:
00070 
00071   PrecUserDefLU (const Precond_prm& p);
00072   virtual ~PrecUserDefLU () { }
00073 
00074       
00075 
00076   virtual void init (PrecBasis& Apb);
00077 
00078   virtual void apply
00079     (
00080      const LinEqVector& c,
00081            LinEqVector& d,
00082            TransposeMode tpmode = NOT_TRANSPOSED
00083    );
00084 
00085   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00086 
00087   virtual String description () const;
00088 
00089   CLASS_INFO
00090 };
00091 
00092 
00115 class PrecUserDefInv : public PrecAlgebraic
00116 
00117 {
00118 public:
00119 
00120   PrecUserDefInv (const Precond_prm& p);
00121   virtual ~PrecUserDefInv () { }
00122 
00123       
00124 
00125   virtual void apply
00126     (
00127      const LinEqVector& c,
00128            LinEqVector& d,
00129            TransposeMode tpmode = NOT_TRANSPOSED
00130     );
00131 
00132   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00133 
00134   virtual String description () const;
00135 
00136   CLASS_INFO
00137 };
00138 
00139 
00163 class PrecUserDefMat : public PrecAlgebraic
00164 
00165 {
00166 public:
00167 
00168   PrecUserDefMat (const Precond_prm& p);
00169   virtual ~PrecUserDefMat () { }
00170 
00171       
00172 
00173   virtual bool ok () const { return getbool( (PrecAlgebraic :: ok())); }
00174 
00175   virtual void apply
00176     (
00177      const LinEqVector& c,
00178            LinEqVector& d,
00179            TransposeMode tpmode = NOT_TRANSPOSED
00180     );
00181 
00182   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00183 
00184   virtual String description () const;
00185 
00186   CLASS_INFO
00187 };
00188 
00189 
00213 class PrecRILU : public PrecAlgebraic
00214 
00215 {
00216   FactStrategy fstrategy;
00217 
00218 public:
00219 
00220   PrecRILU (const Precond_prm& p);
00221   virtual ~PrecRILU () {}
00222 
00223       
00224 
00225   virtual void init (PrecBasis& Apb);
00226   virtual void apply
00227     (
00228      const LinEqVector& c,
00229            LinEqVector& d,
00230            TransposeMode tpmode = NOT_TRANSPOSED
00231     );
00232 
00233   virtual int  getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00234   virtual real getStorage () const;
00235 
00236   virtual void performance (PrecondStatistics& precStat);
00237 
00238   virtual String description () const;
00239 
00240   CLASS_INFO
00241 };
00242 
00243 
00267 class PrecJacobi : public PrecAlgebraic
00268 
00269 {
00270 public:
00271 
00272   PrecJacobi (const Precond_prm& p);
00273   virtual ~PrecJacobi () {}
00274 
00275       
00276 
00277   virtual void apply
00278     (
00279      const LinEqVector& c,
00280            LinEqVector& d,
00281            TransposeMode tpmode = NOT_TRANSPOSED
00282     );
00283 
00284 
00285   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00286 
00287   virtual String description () const;
00288 
00289   CLASS_INFO
00290 };
00291 
00292 
00314 class PrecSOR : public PrecAlgebraic
00315 
00316 {
00317   real omega; 
00318 
00319 public:
00320 
00321   PrecSOR (const Precond_prm& p);
00322   virtual ~PrecSOR () {}
00323 
00324       
00325 
00326   virtual void apply
00327     (
00328      const LinEqVector& c,
00329            LinEqVector& d,
00330            TransposeMode tpmode = NOT_TRANSPOSED
00331     );
00332 
00333   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00334 
00335   virtual void performance (PrecondStatistics& precStat);
00336 
00337   virtual String description () const;
00338 
00339   CLASS_INFO
00340 };
00341 
00342 
00364 class PrecSSOR : public PrecAlgebraic
00365 
00366 {
00367   real omega; 
00368 
00369 public:
00370 
00371   PrecSSOR (const Precond_prm& p);
00372   virtual ~PrecSSOR () {}
00373 
00374       
00375 
00376   virtual void apply
00377     (
00378      const LinEqVector& c,
00379            LinEqVector& d,
00380            TransposeMode tpmode = NOT_TRANSPOSED
00381     );
00382 
00383   virtual int getWork (const PrecondWork work_tp = APPLY_PREC_WORK) const;
00384 
00385   virtual void performance (PrecondStatistics& precStat);
00386 
00387   virtual String description () const;
00388 
00389   CLASS_INFO
00390 };
00391 
00392 

Copyright © 2003 inuTech GmbH. All rights reserved.