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
00029
00030
00031
00032 #ifndef _FluxBox_H_
00033 #define _FluxBox_H_
00034
00035 #include "Box.H"
00036 #include "Vector.H"
00037 #include "FArrayBox.H"
00038
00040
00042 class FluxBox
00043 {
00044
00045 public:
00047 FluxBox();
00048
00050 FluxBox(const Box& bx, int n=1);
00051
00053 ~FluxBox();
00054
00056 void resize(const Box& bx, int n=1);
00057
00059 void define(const Box& bx, int n=1);
00060
00062 void clear();
00063
00064
00065
00067 int nComp() const;
00068
00070 const Box& box() const;
00071
00073 FArrayBox& getFlux(const int dir);
00074
00076 const FArrayBox& getFlux(const int dir) const;
00077
00079 FArrayBox& operator[] (const int dir);
00080
00082 const FArrayBox& operator[] (const int dir) const;
00083
00084
00085
00086
00088 void setVal(const Real val);
00089
00091 void setVal(const Real val, const int dir);
00092
00094 void setVal(const Real val, const int dir, const int startComp,
00095 const int nComp);
00096
00098 void setVal(const Real val, const Box& bx);
00099
00101
00104 void setVal(const Real val, const Box& bx, const int dir,
00105 const int startComp, const int nComp);
00106
00108 void copy(const FluxBox& src);
00109
00111 void copy(const FluxBox& src, const int srcComp,
00112 const int destComp, const int numComp);
00113
00115 void copy(const FluxBox& src, const int dir, const int srcComp,
00116 const int destComp, const int numComp);
00117
00119
00124 void copy(const Box& R, const Interval& Cdest, const FluxBox& src,
00125 const Interval& Csrc);
00126
00128
00144 void copy (const Box& srcbox,
00145 const Interval& srccomps,
00146 const Box& destbox,
00147 const FluxBox& src,
00148 const Interval& destcomps);
00149
00150
00151
00153 FluxBox& shift (const IntVect& v);
00154
00155
00156
00157
00159
00164 int size(const Box& bx, const Interval& comps) const;
00165
00166
00168
00173 void linearOut(void*buf, const Box& R, const Interval& comps) const;
00174
00176
00179 void linearIn(void*buf, const Box& R, const Interval& comps);
00180
00182 static int preAllocatable() {return 0;}
00183
00184
00185
00186 protected:
00190 Box m_bx;
00191
00195 int m_nvar;
00196
00200 Vector<FArrayBox*> m_fluxes;
00201
00202
00203 private:
00204
00205
00207 FluxBox (const FluxBox&);
00209 FluxBox& operator = (const FluxBox&);
00210
00211 };
00212
00213
00214
00215 #endif
00216
00217