00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _FLUXBOX_H_
00012 #define _FLUXBOX_H_
00013
00014 #include "Box.H"
00015 #include "Vector.H"
00016 #include "FArrayBox.H"
00017 #include "NamespaceHeader.H"
00018
00020
00022 class FluxBox
00023 {
00024
00025 public:
00027 FluxBox();
00028
00030 FluxBox(const Box& bx, int n=1);
00031
00033 ~FluxBox();
00034
00036 void resize(const Box& bx, int n=1);
00037
00039 void define(const Box& bx, int n=1);
00040
00042 void clear();
00043
00044
00045
00047 int nComp() const;
00048
00050 const Box& box() const;
00051
00053 FArrayBox& getFlux(const int dir);
00054
00056 const FArrayBox& getFlux(const int dir) const;
00057
00059 FArrayBox& operator[] (const int dir);
00060
00062 const FArrayBox& operator[] (const int dir) const;
00063
00064
00065
00067 void setVal(const Real val);
00068
00070 void setVal(const Real val, const int dir);
00071
00073 void setVal(const Real val, const int dir, const int startComp,
00074 const int nComp);
00075
00077 void setVal(const Real val, const Box& bx);
00078
00080
00083 void setVal(const Real val, const Box& bx, const int dir,
00084 const int startComp, const int nComp);
00085
00087 void copy(const FluxBox& src);
00088
00090 void copy(const FluxBox& src, const int srcComp,
00091 const int destComp, const int numComp);
00092
00094 void copy(const FluxBox& src, const int dir, const int srcComp,
00095 const int destComp, const int numComp);
00096
00103 void copy(const FluxBox& a_src,
00104 const Box& a_destbox);
00105
00106
00108
00113 void copy(const Box& R, const Interval& Cdest, const FluxBox& src,
00114 const Interval& Csrc);
00115
00117
00133 void copy (const Box& srcbox,
00134 const Interval& destcomps,
00135 const Box& destbox,
00136 const FluxBox& src,
00137 const Interval& srccomps);
00138
00140
00145 FluxBox& negate (const Box& subbox,
00146 int comp=0,
00147 int numcomp=1);
00148
00150
00155 FluxBox& negate (int comp,
00156 int numcomp=1);
00157
00159
00164 FluxBox& negate ();
00165
00166
00168
00178 FluxBox& plus(const FluxBox& a_src,
00179 const Box& a_subbox,
00180 int a_srccomp,
00181 int a_destcomp,
00182 int a_numcomp = 1);
00183
00184
00186
00196 FluxBox& minus(const FluxBox& a_src,
00197 const Box& a_subbox,
00198 int a_srccomp,
00199 int a_destcomp,
00200 int a_numcomp = 1);
00201
00202
00204
00215 FluxBox& mult(const FluxBox& a_src,
00216 const Box& a_subbox,
00217 int a_srccomp,
00218 int a_destcomp,
00219 int a_numcomp = 1);
00220
00221
00223
00233 FluxBox& divide(const FluxBox& a_src,
00234 const Box& a_subbox,
00235 int a_srccomp,
00236 int a_destcomp,
00237 int a_numcomp = 1);
00238
00240 FluxBox& operator+= (Real r);
00241
00243
00248 FluxBox& operator+= (const FluxBox& f);
00249
00251 FluxBox& operator-= (Real r);
00252
00254
00259 FluxBox& operator-= (const FluxBox& f);
00260
00262 FluxBox& operator*= (Real r);
00263
00265
00270 FluxBox& operator*= (const FluxBox& f);
00271
00273 FluxBox& shift (const IntVect& v);
00274
00275
00276
00278
00283 int size(const Box& bx, const Interval& comps) const;
00284
00286
00291 void linearOut(void*buf, const Box& R, const Interval& comps) const;
00292
00294
00297 void linearIn(void*buf, const Box& R, const Interval& comps);
00298
00300 static int preAllocatable() {return 0;}
00301
00302
00303 protected:
00307 Box m_bx;
00308
00312 int m_nvar;
00313
00317 Vector<FArrayBox*> m_fluxes;
00318
00319
00320 private:
00321
00322
00324 FluxBox (const FluxBox&);
00326 FluxBox& operator = (const FluxBox&);
00327
00328 };
00329
00330 #include "NamespaceFooter.H"
00331 #endif