00001 00005 class Proj : public virtual HandleId 00006 00007 { 00008 public: 00009 00010 String desc; 00011 00012 Proj (const char* description_="Projection operator"); 00013 Proj (const Proj_prm& prm, const char* description_="Projection operator"); 00014 virtual ~Proj (); 00015 00016 00017 virtual bool rebindDOF (DegFreeFE& coarse, DegFreeFE& fine); 00018 virtual bool rebindMatrix (LinEqMatrix& mat); 00019 virtual bool rebindMatSparse (MatSparse(NUMT)& m); 00020 virtual bool rebindMat (Mat(NUMT)& m); 00021 virtual bool rebindBoxRef 00022 (DegFreeFE& coarse, const Ptv(int)& refinement_factor); 00023 virtual void init (bool optimize=false); 00024 virtual bool ok () const ; 00025 00026 00027 virtual void apply 00028 ( 00029 const LinEqVector& c, 00030 LinEqVector& d, 00031 TransposeMode tpmode, 00032 bool add_to_d= false 00033 ) =0; 00034 00035 virtual void scale(const LinEqVector& s, TransposeMode tpmode) =0; 00036 virtual void scale(real s) =0; 00037 virtual int getWork () const =0; 00038 virtual real getStorage () const =0; 00039 virtual LinEqMatrix & A () =0; 00040 00041 virtual String description () const; 00042 virtual String prm2name() const; 00043 virtual void print (Os os, int output = 1) const; 00044 00045 CLASS_INFO 00046 }; 00047 00048