00001 00005 class Stencil : public HandleId 00006 00007 { 00008 friend class StencilUnion; 00009 00010 protected: 00011 00012 int nsd; 00013 int maxoffset; 00014 int node_dof; 00015 bool iteration_flag; 00016 00017 ArrayGenSimple(StencilWeight) pd; 00018 00019 StencilWeight* wptr; 00020 StencilWeight dummy_weight; 00021 00022 Ptv(int) itidx; 00023 Handle(IndexSet) offset_idxset; 00024 00025 00026 String info; 00027 00028 00029 Handle(FieldLattice) apply_field; 00030 00031 virtual void specialStartIterator (); 00032 virtual void specialIterate (); 00033 00034 public: 00035 00036 00037 Stencil (); 00038 Stencil (int nsd, int maxoffset); 00039 Stencil (const Stencil& p); 00040 ~Stencil () {} 00041 00042 00043 bool redim (int nsd, int maxoffset); 00044 00045 int getNoSpaceDim () const { return nsd; } 00046 virtual int size (); 00047 virtual int maxoff () const { return maxoffset; } 00048 00049 00050 Stencil& operator = (const Stencil & p); 00051 00052 virtual void fill (NUMT val); 00053 virtual void fill (StencilWeightFunc&); 00054 virtual void fillAll (NUMT val); 00055 virtual void fillAll (StencilWeightFunc&); 00056 00057 StencilWeight& operator () (int r); 00058 StencilWeight& operator () (int r, int s); 00059 StencilWeight& operator () (int r, int s, int t); 00060 StencilWeight& operator () (const Ptv(int)& i); 00061 00062 const StencilWeight& operator () (int r) const; 00063 const StencilWeight& operator () (int r, int s) const; 00064 const StencilWeight& operator () (int r, int s, int t) const; 00065 const StencilWeight& operator () (const Ptv(int)& i) const; 00066 00067 00068 00069 00070 void startIterator (const StencilWeight& allocation); 00071 00072 void stopIterator (); 00073 virtual bool iterate (); 00074 bool isIterating () { return iteration_flag; } 00075 00076 00077 00078 00079 virtual void setNodeDof (int d) {node_dof = d;} 00080 virtual void setDefaultNodeDof (int d); 00081 virtual int getNodeDof () const; 00082 00083 void attach (const FieldLattice& f) { apply_field.rebind(f); } 00084 virtual NUMT apply (const Ptv(int)& index); 00085 00086 void setDescription (const String& info_); 00087 String getDescription () const; 00088 00089 virtual IndexSet& getOffset(); 00090 00091 00092 bool ok () const; 00093 virtual void print (Os os) const; 00094 00095 CLASS_INFO 00096 VIRTUAL_CAST(Stencil) 00097 00098 DEF_VIRTUAL_CAST(StencilUnion) 00099 00100 }; 00101 00102