00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBCELLFAB_H_
00014 #define _EBCELLFAB_H_
00015
00016 #include <cmath>
00017 #include <cstdlib>
00018 #include "SPACE.H"
00019 #include "BaseEBCellFAB.H"
00020 #include "FArrayBox.H"
00021 #include "EBISBox.H"
00022 #include "Box.H"
00023 #include "NamespaceHeader.H"
00025
00029 class EBCellFAB: public BaseEBCellFAB<Real>
00030 {
00031 public:
00033 EBCellFAB();
00034
00036
00040 EBCellFAB(const EBISBox& a_ebisBox,
00041 const Box& a_region, int a_nVar);
00042
00044 void setInvalidData(const Real& a_val,
00045 const int& a_comp);
00046
00048 virtual ~EBCellFAB();
00049
00051 const FArrayBox& getFArrayBox() const;
00052
00054
00058 FArrayBox& getFArrayBox();
00059
00061
00064 EBCellFAB& negate(void);
00065
00067
00071 EBCellFAB& operator+=(const EBCellFAB& a_ebfab);
00072
00073
00075
00078 EBCellFAB& plus(const EBCellFAB& a_ebfab,
00079 int a_srccomp,
00080 int a_destcomp,
00081 int a_numcomp);
00083
00086 EBCellFAB& plus(const EBCellFAB& a_ebfab,
00087 const Box& a_region,
00088 int a_srccomp,
00089 int a_destcomp,
00090 int a_numcomp);
00091
00092
00094
00098 EBCellFAB& operator-=(const EBCellFAB& a_ebfab);
00099
00101
00104 EBCellFAB& minus(const EBCellFAB& a_ebfab,
00105 int a_srccomp,
00106 int a_destcomp,
00107 int a_numcomp);
00108
00110
00114 EBCellFAB& operator*=(const EBCellFAB& a_ebfab);
00115
00117
00120 EBCellFAB& mult(const EBCellFAB& a_ebfab,
00121 int a_srccomp,
00122 int a_destcomp,
00123 int a_numcomp);
00124
00125
00126
00128
00132 EBCellFAB& operator/=(const EBCellFAB& a_ebfab);
00133
00134
00136
00139 EBCellFAB& divide(const EBCellFAB& a_ebfab,
00140 int a_srccomp,
00141 int a_destcomp,
00142 int a_numcomp);
00143
00145
00147 EBCellFAB& operator+=(const Real& a_scalar);
00148
00150
00152 EBCellFAB& operator-=(const Real& a_scalar);
00153
00155
00157 EBCellFAB& operator*=(const Real& a_scalar);
00158
00160
00162 EBCellFAB& mult(Real a_scalar);
00163
00165
00167 EBCellFAB& operator/=(const Real& a_scalar);
00168
00170
00174 EBCellFAB& plus(const EBCellFAB& a_src,
00175 Real a_scalar);
00176
00178
00181 EBCellFAB& axby(const EBCellFAB& a_X, const EBCellFAB& a_Y,
00182 const Real& a_A, const Real& a_B);
00183
00185
00188 EBCellFAB& axby(const EBCellFAB& a_X, const EBCellFAB& a_Y,
00189 const Real& a_A, const Real& a_B,
00190 const int& a_destComp,const int& a_xComp,const int& a_yComp);
00191
00193
00200 virtual Real norm(int a_power,
00201 int a_comp,
00202 int a_numComp) const;
00203
00205
00213 virtual Real norm(const Box& a_subbox,
00214 int a_power,
00215 int a_comp,
00216 int a_numComp) const;
00217
00219
00225 virtual Real sumPow(const Box& a_subbox,
00226 int a_power,
00227 int a_comp,
00228 int a_numComp) const;
00229
00231
00235 Real dotProduct(const EBCellFAB& ebfab2) const;
00236
00237
00238
00239 EBCellFAB(const Box& a_region, int a_nComp)
00240 {
00241 MayDay::Error("ebcelfab 1 invalid operator");
00242 }
00243
00245 void clone(const EBCellFAB& a_arg);
00246
00247 private:
00248
00249 EBCellFAB(const EBCellFAB& ebcin)
00250 {
00251 MayDay::Error("ebcellfab 2 invalid operator");
00252 }
00253 void operator=(const EBCellFAB& fabin)
00254 {
00255 MayDay::Error("ebcellfab 3 invalid operator");
00256 }
00257
00258 };
00259
00260 void writeVectorLevelName(const Vector<LevelData<EBCellFAB>*>*, Vector<int>* ref, const char*);
00261
00262 #include "NamespaceFooter.H"
00263 #endif