00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _BaseIVFAB_H_
00029 #define _BaseIVFAB_H_
00030
00031 #include <cmath>
00032 #include <cstdlib>
00033 #include <cassert>
00034 #include "Vector.H"
00035 #include "IntVectSet.H"
00036 #include "VolIndex.H"
00037 #include "BaseFab.H"
00038 #include "EBGraph.H"
00039
00041
00045 template <class T>
00046 class BaseIVFAB
00047 {
00048 public:
00050
00054 BaseIVFAB();
00055
00057
00063 BaseIVFAB(const IntVectSet& a_region,
00064 const EBGraph& a_ebgraph,
00065 const int& a_nvarin);
00066
00068 ~BaseIVFAB();
00069
00071
00078 void define(const IntVectSet& a_region,
00079 const EBGraph& a_ebgraph,
00080 const int& a_nvarin);
00081
00083
00086 void setVal(const T& value);
00087
00089 void copy(const Box& a_fromBox,
00090 const Interval& a_destInterval,
00091 const Box& a_toBox,
00092 const BaseIVFAB<T>& a_src,
00093 const Interval& a_srcInterval);
00094
00096
00100 static int preAllocatable()
00101 {
00102 return 1;
00103 }
00104
00106 int size(const Box& R, const Interval& comps) const ;
00107
00109 void linearOut(void* buf, const Box& R, const Interval& comps) const;
00110
00112 void linearIn(void* buf, const Box& R, const Interval& comps);
00113
00115
00120 void clear();
00121
00123
00128 bool
00129 isDefined() const;
00130
00132
00135 int numVoFs() const;
00136
00138
00141 int nComp() const;
00142
00144
00147 const IntVectSet& getIVS() const;
00148
00150
00156 T& operator() (const VolIndex& a_vof,const int& varlocin);
00157 const T& operator() (const VolIndex& a_vof,const int& varlocin) const;
00158
00160
00163 const T* dataPtr(const int& a_comp) const;
00164
00166
00169 T* dataPtr(const int& a_comp) ;
00170
00172 BaseIVFAB(const Box& a_region, int a_nVar)
00173 {
00174 MayDay::Error("invalid constructor called for baseebcellfab");
00175 }
00176
00178
00181 const int* loVect() const;
00182
00184
00187 const int* hiVect() const;
00188
00190 const EBGraph& getEBGraph() const;
00191 private:
00192 void
00193 setDefaultValues();
00194
00195 protected:
00196
00197 int getIndex(const VolIndex& a_vof,const int& a_comp) const;
00198
00199
00200 T* m_dataPtr;
00201 int m_nComp;
00202 int m_nVoFs;
00203 IntVect m_loVect;
00204 IntVect m_hiVect;
00205 EBGraph m_ebgraph;
00206
00207
00208
00209
00210
00211
00212
00213 BaseFab<Vector<int> > m_ivmap;
00214 IntVectSet m_ivs;
00215 bool m_isDefined;
00216 private:
00217
00218 BaseIVFAB<T>& operator= (const BaseIVFAB<T>&);
00219 BaseIVFAB (const BaseIVFAB<T>&);
00220 };
00221
00222 #include "BaseIVFABI.H"
00223
00224 #endif
00225