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 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
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
00087 void setVal(const Real val);
00088
00090 void setVal(const Real val, const int dir);
00091
00093 void setVal(const Real val, const int dir, const int startComp,
00094 const int nComp);
00095
00097 void setVal(const Real val, const Box& bx);
00098
00099
00100
00101 void setVal(const Real val, const Box& bx, const int dir,
00102 const int startComp, const int nComp);
00103
00105 void copy(const FluxBox& src);
00106
00108 void copy(const FluxBox& src, const int srcComp,
00109 const int destComp, const int numComp);
00110
00112 void copy(const FluxBox& src, const int dir, const int srcComp,
00113 const int destComp, const int numComp);
00114
00115
00116
00117
00118
00119 void copy(const Box& R, const Interval& Cdest, const FluxBox& src,
00120 const Interval& Csrc);
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 void copy (const Box& srcbox,
00139 const Interval& srccomps,
00140 const Box& destbox,
00141 const FluxBox& src,
00142 const Interval& destcomps);
00143
00144
00145
00147
00148 FluxBox& shift (const IntVect& v);
00149
00150
00152
00153
00154
00155
00156 int size(const Box& bx, const Interval& comps) const;
00157
00158
00159
00160
00161
00162 void linearOut(void*buf, const Box& R, const Interval& comps) const;
00163
00165 void linearIn(void* buf);
00166
00168 void linearIn(void*buf, const Box& R, const Interval& comps);
00169
00171 static int preAllocatable() {return 0;}
00172
00173
00174
00175 protected:
00177 Box m_bx;
00178
00180 int m_nvar;
00181
00183 Vector<FArrayBox*> m_fluxes;
00184
00185
00186 private:
00188
00189 FluxBox (const FluxBox&);
00190 FluxBox& operator = (const FluxBox&);
00191
00192 };
00193
00194
00195
00196 #endif
00197
00198