00001
00005 class MxProj : public ProjInterpSparse
00006
00007 {
00008 protected:
00009
00010 real eps;
00011 int ndpn;
00012 int nde;
00013 bool all_elements_equal;
00014
00015 VecSimplest(int) add_number_of_basis;
00016
00017 bool compatible(DegFreeFE& coarse, DegFreeFE& fine);
00018 bool element_string_check(String elm_tp);
00019 bool precomp(DegFreeFE& coarse);
00020 virtual void init( bool optimize);
00021
00022 virtual void interpolate (DegFreeFE& coarse, DegFreeFE& fine);
00023 virtual void interpolate (GridFE& coarse, GridFE& fine)
00024 { ProjInterpSparse :: interpolate (coarse, fine); }
00025
00026 virtual void valuePt (DegFreeFE& coarse,
00027 int& element,
00028 Ptv(real)& loc_pt,
00029 const Ptv(real)& x,
00030 int field_no);
00031 virtual void valuePt (GridFE& coarse, int& element,
00032 Ptv(real)& loc_pt, const Ptv(real)& x)
00033 { ProjInterpSparse :: valuePt (coarse, element, loc_pt, x); }
00034
00035 virtual void valueElm (DegFreeFE& coarse, int elm_no,
00036 const Ptv(real)& local_pt, int field_no);
00037 virtual void valueElm (int elm_no, const Ptv(real)& local_pt)
00038 { ProjInterpSparse :: valueElm (elm_no, local_pt); }
00039
00040 MxFiniteElement mfe;
00041
00042 public:
00043
00044 MxProj (const char* description_ =
00045 "Projector operator for general numbering");
00046 MxProj (const Proj_prm& , const char* description_ =
00047 "Projector operator for general numbering");
00048 virtual ~MxProj ();
00049
00050
00051 virtual bool rebindDOF(DegFreeFE& coarse, DegFreeFE& fine);
00052
00053 virtual String description () const;
00054 virtual void print (Os os, int output =1 ) const;
00055
00056 CLASS_INFO
00057 };
00058
00059 , const char* description_ = "Projector operator for general numbering")
00090 See documentation of one of the overloaded constructor.
00091 */