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"
00024
00025
00026
00027
00028
00029 class EBCellFAB: public BaseEBCellFAB<Real>
00030 {
00031 public:
00032 static bool s_verbose;
00033
00034 EBCellFAB();
00035
00036
00037
00038
00039
00040
00041 EBCellFAB(const EBISBox& a_ebisBox,
00042 const Box& a_region, int a_nVar);
00043
00044
00045 EBCellFAB(const Interval& a_comps,
00046 EBCellFAB& a_original):BaseEBCellFAB<Real>(a_comps, a_original){ ;}
00047
00048
00049
00050 void define(const EBISBox& a_ebisBox,
00051 const Box& a_region, int a_nVar);
00052
00053
00054
00055 virtual ~EBCellFAB();
00056
00057
00058 const FArrayBox& getFArrayBox() const;
00059
00060
00061
00062
00063
00064
00065
00066 FArrayBox& getFArrayBox();
00067
00068
00069 MiniIVFAB<Real>& getMultiValuedFAB()
00070 {
00071 return m_irrFAB;
00072 }
00073
00074
00075 const MiniIVFAB<Real>& getMultiValuedFAB() const
00076 {
00077 return m_irrFAB;
00078 }
00079
00080
00081
00082
00083 EBCellFAB& negate(void);
00084
00085
00086
00087
00088
00089
00090 EBCellFAB& operator+=(const EBCellFAB& a_ebfab);
00091
00092
00093
00094
00095
00096
00097 EBCellFAB& plus(const EBCellFAB& a_ebfab,
00098 int a_srccomp,
00099 int a_destcomp,
00100 int a_numcomp);
00101
00102
00103
00104
00105 EBCellFAB& plus(const EBCellFAB& a_ebfab,
00106 const Box& a_region,
00107 int a_srccomp,
00108 int a_destcomp,
00109 int a_numcomp);
00110
00111
00112
00113
00114
00115
00116
00117 EBCellFAB& operator-=(const EBCellFAB& a_ebfab);
00118
00119
00120
00121
00122
00123 EBCellFAB& minus(const EBCellFAB& a_ebfab,
00124 int a_srccomp,
00125 int a_destcomp,
00126 int a_numcomp);
00127
00128
00129
00130
00131
00132
00133 EBCellFAB& operator*=(const EBCellFAB& a_ebfab);
00134
00135
00136
00137
00138
00139 EBCellFAB& mult(Real a_value,
00140 int a_srccomp,
00141 int a_numcomp);
00142
00143
00144
00145 EBCellFAB& mult(const EBCellFAB& a_src,
00146 int a_srccomp,
00147 int a_destcomp,
00148 int a_numcomp);
00149
00150
00151
00152
00153
00154 EBCellFAB& operator/=(const EBCellFAB& a_ebfab);
00155
00156
00157
00158
00159
00160
00161 EBCellFAB& divide(const EBCellFAB& a_ebfab,
00162 int a_srccomp,
00163 int a_destcomp,
00164 int a_numcomp);
00165
00166
00167
00168
00169 EBCellFAB& operator+=(const Real& a_scalar);
00170
00171
00172
00173
00174 EBCellFAB& operator-=(const Real& a_scalar);
00175
00176
00177
00178
00179 EBCellFAB& operator*=(const Real& a_scalar);
00180
00181
00182
00183
00184 EBCellFAB& mult(Real a_scalar);
00185
00186
00187
00188
00189 EBCellFAB& operator/=(const Real& a_scalar);
00190
00191
00192
00193
00194
00195
00196 EBCellFAB& plus(const EBCellFAB& a_src,
00197 Real a_scalar);
00198
00199
00200
00201
00202
00203 EBCellFAB& axby(const EBCellFAB& a_X, const EBCellFAB& a_Y,
00204 const Real& a_A, const Real& a_B);
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215 Real max(int a_comp = 0) const;
00216
00217
00218 Real min(int a_comp = 0) const;
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228 virtual Real norm(int a_power,
00229 int a_comp,
00230 int a_numComp) const;
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241 virtual Real norm(const Box& a_subbox,
00242 int a_power,
00243 int a_comp,
00244 int a_numComp) const;
00245
00246
00247
00248
00249
00250
00251
00252
00253 virtual Real sumPow(const Box& a_subbox,
00254 int a_power,
00255 int a_comp,
00256 int a_numComp) const;
00257
00258
00259
00260
00261
00262
00263 Real dotProduct(const EBCellFAB& ebfab2) const;
00264
00265
00266
00267 EBCellFAB(const Box& a_region, int a_nComp)
00268 {
00269 MayDay::Error("ebcelfab 1 invalid operator");
00270 }
00271
00272
00273 void clone(const EBCellFAB& a_arg);
00274
00275 virtual void setCoveredCellVal(const Real& a_val,
00276 const int& a_comp,
00277 const bool& a_doMulti=true);
00278 private:
00279
00280 EBCellFAB(const EBCellFAB& ebcin)
00281 {
00282 MayDay::Error("ebcellfab 2 invalid operator");
00283 }
00284 void operator=(const EBCellFAB& fabin)
00285 {
00286 MayDay::Error("ebcellfab 3 invalid operator");
00287 }
00288
00289 };
00290
00291 void writeVectorLevelName(const Vector<LevelData<EBCellFAB>*>*, Vector<int>* ref, const char*);
00292
00293 #include "NamespaceFooter.H"
00294 #endif