00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _EDGEDATABOX_H_
00012 #define _EDGEDATABOX_H_
00013
00014 #include "Box.H"
00015 #include "Vector.H"
00016 #include "FArrayBox.H"
00017
00018 #include "NamespaceHeader.H"
00019
00020
00021 class EdgeDataBox
00022
00023
00024 {
00025
00026 public:
00027
00028 EdgeDataBox();
00029
00030
00031 EdgeDataBox(const Box& bx, int n=1);
00032
00033
00034 ~EdgeDataBox();
00035
00036
00037
00038
00039
00040 void define(const Box& bx, int n=1);
00041
00042
00043 void clear();
00044
00045
00046
00047
00048 int nComp() const;
00049
00050
00051 const Box& box() const;
00052
00053
00054 FArrayBox& getData(const int dir);
00055
00056
00057 const FArrayBox& getData(const int dir) const;
00058
00059
00060 FArrayBox& operator[] (const int dir);
00061
00062
00063 const FArrayBox& operator[] (const int dir) const;
00064
00065
00066
00067 void setVal(const Real val);
00068
00069
00070 void setVal(const Real val, const int dir);
00071
00072
00073 void setVal(const Real val, const int dir, const int startComp,
00074 const int nComp);
00075
00076
00077 void setVal(const Real val, const Box& bx);
00078
00079
00080
00081 void setVal(const Real val, const Box& bx, const int dir,
00082 const int startComp, const int nComp);
00083
00084
00085 void copy(const EdgeDataBox& src);
00086
00087
00088 void copy(const EdgeDataBox& src, const int srcComp,
00089 const int destComp, const int numComp);
00090
00091
00092 void copy(const EdgeDataBox& src, const int dir, const int srcComp,
00093 const int destComp, const int numComp);
00094
00095
00096
00097
00098
00099 void copy(const Box& RegionFrom,
00100 const Interval& Cdest,
00101 const Box& RegionTo,
00102 const EdgeDataBox& src,
00103 const Interval& Csrc);
00104
00105
00106
00107
00108
00109
00110 size_t size(const Box& bx, const Interval& comps) const;
00111
00112
00113
00114
00115 void linearOut(void*buf, const Box& R, const Interval& comps) const;
00116
00117
00118 void linearIn(void* buf);
00119
00120
00121 void linearIn(void*buf, const Box& R, const Interval& comps);
00122
00123
00124 static bool preAllocatable()
00125 {
00126 return true;
00127 }
00128
00129
00130 protected:
00131
00132 Box m_bx;
00133
00134
00135 int m_nvar;
00136
00137
00138 Vector<FArrayBox*> m_data;
00139
00140
00141 private:
00142
00143
00144 EdgeDataBox (const EdgeDataBox&);
00145 EdgeDataBox& operator = (const EdgeDataBox&);
00146
00147 };
00148
00149 #include "NamespaceFooter.H"
00150
00151 #endif