00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 #ifndef _DERIVSTENCIL_H_ 00012 #define _DERIVSTENCIL_H_ 00013 00014 #include <iostream> 00015 #include <math.h> 00016 #include "SPACE.H" 00017 #include <stdlib.h> 00018 #include "REAL.H" 00019 #include "IntVect.H" 00020 #include "Vector.H" 00021 #include "NamespaceHeader.H" 00022 00024 00035 class DerivStencil 00036 { 00037 public: 00039 void define(); 00040 00042 00044 bool isDefined() const 00045 { 00046 return isdefined; 00047 } 00048 00050 00053 DerivStencil(); 00054 00056 00059 DerivStencil(const DerivStencil& a_dsin); 00060 00062 ~DerivStencil(); 00063 00065 00068 void clear(); 00069 00071 00074 int size() const; 00075 00077 00080 const IntVect& getIndex(int a_ivec) const; 00081 00083 00086 const Real& getWeight(int a_ivec) const; 00087 00089 00094 void accumulate(const IntVect& a_iv, Real a_weight); 00095 00097 00100 const DerivStencil& operator=(const DerivStencil& a_dsin); 00101 00103 00107 const DerivStencil& operator*=(Real a_facin); 00108 00110 00117 const DerivStencil& operator/=(Real a_denom); 00118 00120 00124 const DerivStencil& operator+=(Real a_facin); 00125 00127 00131 const DerivStencil& operator-=(Real a_facin); 00132 00133 protected: 00135 Vector<IntVect> m_vectIV; 00137 Vector<Real> m_vectWgt; 00139 bool isdefined; 00140 }; 00141 00142 #include "NamespaceFooter.H" 00143 #endif