3dmatrix.h

Go to the documentation of this file.
00001 
00006 #ifndef _psi_bin_intder_3dmatrix_h_
00007 #define _psi_bin_intder_3dmatrix_h_
00008 
00009 #include <libciomr/libciomr.h>
00010 
00011 namespace psi { namespace intder {
00012 
00013 class C3DMatrix
00014 {
00015   int nx, ny, nz;
00016   int size;
00017 
00018 public:
00019   double *array;
00020 
00021   C3DMatrix();
00022   C3DMatrix(int, int, int);
00023   ~C3DMatrix();
00024 
00025   void Create(int, int, int);
00026 
00027   inline double Get(int x, int y, int z)
00028     { return array[Position(x, y, z)]; }
00029   inline int Size(int x, int y, int z) 
00030     { return size = Position(x, y, z); }
00031   inline void Set(int x, int y, int z, double value)
00032     { array[Position(x, y, z)] = value; }
00033         inline void PlusEq(int x, int y, int z, double value)
00034                 { array[Position(x, y, z)] += value; }
00035   inline int Position(int x, int y, int z)
00036     { return (nz*ny*x + nz*y + z); }
00037   inline void Init(int x, int y, int z)
00038   { array = init_array(size); }
00039 };
00040 
00041 class C4DMatrix
00042 {
00043   int nw, nx, ny, nz;
00044   int size;
00045 
00046 public:
00047   double *array;
00048                                                                                             
00049   C4DMatrix();
00050   C4DMatrix(int, int, int, int);
00051   ~C4DMatrix();
00052                                                                                                 
00053   void Create(int, int, int, int);
00054 
00055   inline int Size(int w,int x, int y, int z) 
00056     { return size = Position(w, x, y, z); }
00057   inline double Get(int w, int x, int y, int z)
00058     { return array[Position(w, x, y, z)]; }
00059   inline void Set(int w, int x, int y, int z, double value)
00060     { array[Position(w, x, y, z)] = value; }
00061   inline int Position(int w, int x, int y, int z)
00062     { return (nz*ny*nx*w + nz*ny*x + nz*y + z); }
00063   inline void Init(int w,int x, int y, int z)
00064   { array = init_array(size); }
00065 };
00066 
00067 class C5DMatrix
00068 {
00069   int nv, nw, nx, ny, nz;
00070   int size;
00071 
00072 public:
00073   double *array;
00074                                                                                              
00075   C5DMatrix();
00076   C5DMatrix(int, int, int, int, int);
00077   ~C5DMatrix();
00078                                                                                                 
00079   void Create(int, int, int, int, int);
00080 
00081   inline int Size(int v, int w,int x, int y, int z) 
00082     { return size = Position(v, w, x, y, z); }
00083   inline double Get(int v, int w, int x, int y, int z)
00084     { return array[Position(v, w, x, y, z)]; }
00085   inline void Set(int v, int w, int x, int y, int z, double value)
00086     { array[Position(v, w, x, y, z)] = value; }
00087   inline int Position(int v, int w, int x, int y, int z)
00088     { return (nz*ny*nx*nw*v + nz*ny*nx*w + nz*ny*x + nz*y + z); }
00089   inline void Init(int v, int w, int x, int y, int z)
00090   { array = init_array(size); }
00091 };
00092 
00093 }} // namespace psi::intder
00094 
00095 #endif // heaer guard

Generated on Wed Feb 13 16:35:39 2008 for PSI by  doxygen 1.5.4