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 #ifndef CH_REALVECT_H
00029 #define CH_REALVECT_H
00030
00031
00032
00033
00034
00035 #include <cstddef>
00036 #include <cstdlib>
00037 #include <cstring>
00038 #include <iostream>
00039
00040
00041
00042
00043 #include "SPACE.H"
00044 #include "Misc.H"
00045 #include "REAL.H"
00046 #include <cassert>
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 class RealVect
00062 {
00063 public:
00064
00066
00068
00072 RealVect ();
00073
00075
00081 RealVect (D_DECL(Real i, Real j, Real k));
00082
00084
00088 RealVect (const RealVect& rhs);
00089
00091
00095 RealVect& operator= (const RealVect& rhs);
00096
00098
00103 Real& operator[] (int i);
00104
00106
00110 const Real& operator[] (int i) const;
00111
00112
00114
00116
00121 bool operator== (const RealVect& p) const;
00122
00124
00129 bool operator!= (const RealVect& p) const;
00130
00132
00136 RealVect& operator+= (Real s);
00137
00139
00143 RealVect& operator+= (const RealVect& p);
00144
00146
00151 RealVect& operator-= (Real s);
00152
00154
00158 RealVect& operator-= (const RealVect& p);
00159
00161
00164 RealVect operator- (const RealVect& p) const;
00165
00167
00172 RealVect operator- (Real s) const;
00173
00175
00180 RealVect& operator*= (Real s);
00181
00183
00187 RealVect& operator*= (const RealVect& p);
00188
00190
00194 RealVect operator* (const RealVect& p) const;
00195
00197
00202 RealVect operator* (Real s) const;
00203
00205
00209 RealVect& operator/= (Real s);
00210
00212
00217 RealVect& operator/= (const RealVect& p);
00218
00220
00224 RealVect operator/ (const RealVect& p) const;
00225
00227
00231 RealVect operator/ (Real s) const;
00232
00234
00237 const Real* dataPtr() const;
00238
00240
00246 friend RealVect BASISREALV(int dir);
00247
00249
00253 static const RealVect Zero;
00254
00256
00260 static const RealVect Unit;
00261
00263
00268 friend RealVect operator+ (Real s,
00269 const RealVect& p);
00270
00272
00276 friend RealVect operator- (Real s,
00277 const RealVect& p);
00278
00280
00285 friend RealVect operator* (Real s,
00286 const RealVect& p);
00288
00293 friend RealVect operator/ (Real s,
00294 const RealVect& p);
00295
00297
00302 friend RealVect operator+ (const RealVect& s,
00303 const RealVect& p);
00304
00306
00310 friend RealVect operator- (const RealVect& s,
00311 const RealVect& p);
00312
00314
00319 friend RealVect operator* (const RealVect& s,
00320 const RealVect& p);
00322
00327 friend RealVect operator/ (const RealVect& s,
00328 const RealVect& p);
00329
00330 friend class HDF5Handle;
00331
00332 static size_t io_offset;
00333 private:
00334
00335 Real vect[SpaceDim];
00336
00337 };
00338
00339 #include "HDF5.H"
00340
00341 template < >
00342 int linearSize(const RealVect& vindex);
00343
00344
00345 template < >
00346 void linearIn(RealVect& a_outputT, const void* const inBuf);
00347
00348
00349 template < >
00350 void linearOut(void* const a_outBuf, const RealVect& a_inputT);
00351
00352
00353 #endif
00354