OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
Array4D< T > Class Template Reference

#include <lib-array.h>

Public Member Functions

 Array4D (size_t x, size_t y, size_t z, size_t w)
 
 Array4D (const Array4D &other)
 
 ~Array4D ()
 
size_t dim () const
 
size_t dim1 () const
 
size_t dim2 () const
 
size_t dim3 () const
 
size_t dim4 () const
 
valarray< T > & array () const
 
T & operator() (size_t i, size_t j, size_t k, size_t l)
 
operator() (size_t i, size_t j, size_t k, size_t l) const
 
T & operator() (size_t i)
 
operator() (size_t i) const
 
GSlice_iter< T > d1c (size_t b, size_t e)
 
GSlice_iter< T > d2c (size_t b, size_t e)
 
GSlice_iter< T > d3c (size_t b, size_t e)
 
GSlice_iter< T > d4c (size_t b, size_t e)
 
GSlice_iter< T > SubArray4D (size_t st, size_t nx, size_t ny, size_t nz, size_t nw)
 
CGSlice_iter< T > d1c (size_t b, size_t e) const
 
CGSlice_iter< T > d2c (size_t b, size_t e) const
 
CGSlice_iter< T > d3c (size_t b, size_t e) const
 
CGSlice_iter< T > d4c (size_t b, size_t e) const
 
CGSlice_iter< T > SubArray4D (size_t st, size_t nx, size_t ny, size_t nz, size_t nw) const
 
Array4Doperator= (const T &d)
 
Array4Doperator= (const Array4D &other)
 
Array4Doperator*= (const T &d)
 
Array4Doperator*= (const Array4D &vmulti)
 
Array4Doperator+= (const T &d)
 
Array4Doperator+= (const Array4D &vadd)
 
Array4Doperator-= (const T &d)
 
Array4Doperator-= (const Array4D &vmin)
 
Array4Dmultid1 (const valarray< T > &vmulti)
 
Array4Dmultid2 (const valarray< T > &vmulti)
 
Array4Dmultid3 (const valarray< T > &vmulti)
 
Array4Dmultid4 (const valarray< T > &vmulti)
 
Array4Dmultid2d3d4 (const Array3D< T > &vd2d3d4)
 
Array4DDd1 ()
 
Array4DDd2 ()
 
Array4DDd3 ()
 
Array4DDd4 ()
 
Array4DFilterd1 (size_t N)
 

Private Attributes

valarray< T > * v
 
size_t d1
 
size_t d2
 
size_t d3
 
size_t d4
 
size_t d1d2
 
size_t d1d2d3
 

Detailed Description

template<class T>
class Array4D< T >

Definition at line 1879 of file lib-array.h.

Constructor & Destructor Documentation

◆ Array4D() [1/2]

template<class T >
Array4D< T >::Array4D ( size_t  x,
size_t  y,
size_t  z,
size_t  w 
)

Definition at line 1962 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d2, Array4D< T >::d3, Array4D< T >::d4, and Array4D< T >::v.

Referenced by Array4D< T >::array().

1962  : d1(x), d2(y), d3(z), d4(w) {
1963  v = new valarray<T>(d1*d2*d3*d4);
1964  d1d2 = d1*d2;
1965  d1d2d3 = d1*d2*d3;
1966 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887
Here is the caller graph for this function:

◆ Array4D() [2/2]

template<class T >
Array4D< T >::Array4D ( const Array4D< T > &  other)

Definition at line 1968 of file lib-array.h.

References Array4D< T >::array(), Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d2, Array4D< T >::d3, Array4D< T >::d4, Array4D< T >::dim1(), Array4D< T >::dim2(), Array4D< T >::dim3(), Array4D< T >::dim4(), and Array4D< T >::v.

1968  {
1969  d1 = other.dim1();
1970  d2 = other.dim2();
1971  d3 = other.dim3();
1972  d4 = other.dim4();
1973  d1d2 = d1*d2;
1974  d1d2d3 = d1*d2*d3;
1975  v = new valarray<T>(d1*d2*d3*d4);
1976  (*v) = other.array();
1977 }
size_t dim3() const
Definition: lib-array.h:1900
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t dim2() const
Definition: lib-array.h:1899
size_t d2
Definition: lib-array.h:1886
valarray< T > & array() const
Definition: lib-array.h:1902
size_t d3
Definition: lib-array.h:1886
size_t dim4() const
Definition: lib-array.h:1901
size_t dim1() const
Definition: lib-array.h:1898
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887
Here is the call graph for this function:

◆ ~Array4D()

template<class T >
Array4D< T >::~Array4D ( )

Definition at line 1979 of file lib-array.h.

References Array4D< T >::v.

1979  {
1980  delete v;
1981 }
valarray< T > * v
Definition: lib-array.h:1885

Member Function Documentation

◆ array()

◆ d1c() [1/2]

template<class T >
GSlice_iter< T > Array4D< T >::d1c ( size_t  b,
size_t  e 
)
inline

Definition at line 2014 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d2, Array4D< T >::d3, Array4D< T >::d4, and Array4D< T >::v.

Referenced by Array4D_cmplx< T >::array().

2014  {
2015  valarray<size_t> sz(4), str(4);
2016  str[3] = d1; str[2] = d1d2; str[1] = d1d2d3; str[0] = 1;
2017  sz[3] = d2; sz[2] = d3; sz[1] = d4; sz[0] = e-b+1;
2018  return GSlice_iter<T>(v,gslice(b,sz,str));
2019 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887
Here is the caller graph for this function:

◆ d1c() [2/2]

template<class T >
CGSlice_iter< T > Array4D< T >::d1c ( size_t  b,
size_t  e 
) const
inline

Definition at line 2022 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d2, Array4D< T >::d3, Array4D< T >::d4, and Array4D< T >::v.

2022  {
2023  valarray<size_t> sz(4), str(4);
2024  str[3] = d1; str[2] = d1d2; str[1] = d1d2d3; str[0] = 1;
2025  sz[3] = d2; sz[2] = d3; sz[1] = d4; sz[0] = e-b+1;
2026  return CGSlice_iter<T>(v,gslice(b,sz,str));
2027 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887

◆ d2c() [1/2]

template<class T >
GSlice_iter< T > Array4D< T >::d2c ( size_t  b,
size_t  e 
)
inline

Definition at line 2030 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d3, Array4D< T >::d4, and Array4D< T >::v.

Referenced by Array4D_cmplx< T >::array().

2030  {
2031  valarray<size_t> sz(4), str(4);
2032  str[3] = 1; str[2] = d1d2; str[1] = d1d2d3; str[0] = d1;
2033  sz[3] = d1; sz[2] = d3; sz[1] = d4; sz[0] = e-b+1;
2034  return GSlice_iter<T>(v,gslice(b*d1,sz,str));
2035 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887
Here is the caller graph for this function:

◆ d2c() [2/2]

template<class T >
CGSlice_iter< T > Array4D< T >::d2c ( size_t  b,
size_t  e 
) const
inline

Definition at line 2038 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d3, Array4D< T >::d4, and Array4D< T >::v.

2038  {
2039  valarray<size_t> sz(4), str(4);
2040  str[3] = 1; str[2] = d1d2; str[1] = d1d2d3; str[0] = d1;
2041  sz[3] = d1; sz[2] = d3; sz[1] = d4; sz[0] = e-b+1;
2042  return CGSlice_iter<T>(v,gslice(b*d1,sz,str));
2043 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887

◆ d3c() [1/2]

template<class T >
GSlice_iter< T > Array4D< T >::d3c ( size_t  b,
size_t  e 
)
inline

Definition at line 2046 of file lib-array.h.

References Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d4, and Array4D< T >::v.

Referenced by Array4D_cmplx< T >::array().

2046  {
2047  valarray<size_t> sz(3), str(3);
2048  str[2] = 1; str[1] = d1d2d3; str[0] = d1d2;
2049  sz[2] = d1d2; sz[1] = d4; sz[0] = e-b+1;
2050  return GSlice_iter<T>(v,gslice(b*d1d2,sz,str));
2051 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1d2d3
Definition: lib-array.h:1888
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887
Here is the caller graph for this function:

◆ d3c() [2/2]

template<class T >
CGSlice_iter< T > Array4D< T >::d3c ( size_t  b,
size_t  e 
) const
inline

Definition at line 2054 of file lib-array.h.

References Array4D< T >::d1d2, Array4D< T >::d1d2d3, Array4D< T >::d4, and Array4D< T >::v.

2054  {
2055  valarray<size_t> sz(3), str(3);
2056  str[2] = 1; str[1] = d1d2d3; str[0] = d1d2;
2057  sz[2] = d1d2; sz[1] = d4; sz[0] = e-b+1;
2058  return CGSlice_iter<T>(v,gslice(b*d1d2,sz,str));
2059 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1d2d3
Definition: lib-array.h:1888
size_t d4
Definition: lib-array.h:1886
size_t d1d2
Definition: lib-array.h:1887

◆ d4c() [1/2]

template<class T >
GSlice_iter< T > Array4D< T >::d4c ( size_t  b,
size_t  e 
)
inline

Definition at line 2062 of file lib-array.h.

References Array4D< T >::d1d2d3, and Array4D< T >::v.

Referenced by Array4D_cmplx< T >::array().

2062  {
2063  valarray<size_t> sz(2), str(2);
2064  str[1] = 1; str[0] = d1d2d3;
2065  sz[1] = d1d2d3; sz[0] = e-b+1;
2066  return GSlice_iter<T>(v,gslice(b*d1d2d3,sz,str));
2067 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1d2d3
Definition: lib-array.h:1888
Here is the caller graph for this function:

◆ d4c() [2/2]

template<class T >
CGSlice_iter< T > Array4D< T >::d4c ( size_t  b,
size_t  e 
) const
inline

Definition at line 2070 of file lib-array.h.

References Array4D< T >::d1d2d3, and Array4D< T >::v.

2070  {
2071  valarray<size_t> sz(2), str(2);
2072  str[1] = 1; str[0] = d1d2d3;
2073  sz[1] = d1d2d3; sz[0] = e-b+1;
2074  return CGSlice_iter<T>(v,gslice(b*d1d2d3,sz,str));
2075 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1d2d3
Definition: lib-array.h:1888

◆ Dd1()

template<class T >
Array4D< T > & Array4D< T >::Dd1 ( )

Definition at line 2218 of file lib-array.h.

References Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2218  {
2219  for(long i(0); i< dim()-2; ++i) {
2220  (*v)[i] -= (*v)[i+2];
2221  }
2222  for(long i(dim()-3); i>-1; --i) {
2223  (*v)[i+1] = (*v)[i];
2224  }
2225  return *this;
2226 }
size_t dim() const
Definition: lib-array.h:1897
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Dd2()

template<class T >
Array4D< T > & Array4D< T >::Dd2 ( )

Definition at line 2229 of file lib-array.h.

References Array4D< T >::d1, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2229  {
2230  long twod1 = 2*d1;
2231  for(long i(0); i< dim()-twod1; ++i) {
2232  (*v)[i] -= (*v)[i+twod1];
2233  }
2234  for(long i(dim()-twod1-1); i>-1; --i) {
2235  (*v)[i+d1] = (*v)[i];
2236  }
2237  return *this;
2238 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1
Definition: lib-array.h:1886
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Dd3()

template<class T >
Array4D< T > & Array4D< T >::Dd3 ( )

Definition at line 2241 of file lib-array.h.

References Array4D< T >::d1d2, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2241  {
2242  long twod1d2 = 2*d1d2;
2243  for(long i(0); i< dim()-twod1d2; ++i) {
2244  (*v)[i] -= (*v)[i+twod1d2];
2245  }
2246  for(long i(dim()-twod1d2-1); i>-1; --i) {
2247  (*v)[i+d1d2] = (*v)[i];
2248  }
2249  return *this;
2250 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1d2
Definition: lib-array.h:1887
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Dd4()

template<class T >
Array4D< T > & Array4D< T >::Dd4 ( )

Definition at line 2253 of file lib-array.h.

References Array4D< T >::d1d2d3, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2253  {
2254  long twod1d2d3 = 2*d1d2d3;
2255  for(long i(0); i< dim()-twod1d2d3; ++i) {
2256  (*v)[i] -= (*v)[i+twod1d2d3];
2257  }
2258  for(long i(dim()-twod1d2d3-1); i>-1; --i) {
2259  (*v)[i+d1d2d3] = (*v)[i];
2260  }
2261  return *this;
2262 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1d2d3
Definition: lib-array.h:1888
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dim()

template<class T>
size_t Array4D< T >::dim ( ) const
inline

Definition at line 1897 of file lib-array.h.

Referenced by Array4D< T >::Dd1(), Array4D< T >::Dd2(), Array4D< T >::Dd3(), Array4D< T >::Dd4(), Array4D< T >::multid1(), Array4D< T >::multid2(), and Array4D< T >::multid3().

1897 {return d1*d2*d3*d4;}
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ dim1()

template<class T>
size_t Array4D< T >::dim1 ( ) const
inline

Definition at line 1898 of file lib-array.h.

References Array3D_cmplx< T >::d1.

Referenced by Array4D< T >::Array4D().

1898 {return d1;}
size_t d1
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ dim2()

template<class T>
size_t Array4D< T >::dim2 ( ) const
inline

Definition at line 1899 of file lib-array.h.

References Array3D_cmplx< T >::d2.

Referenced by Array4D< T >::Array4D().

1899 {return d2;}
size_t d2
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ dim3()

template<class T>
size_t Array4D< T >::dim3 ( ) const
inline

Definition at line 1900 of file lib-array.h.

References Array3D_cmplx< T >::d3.

Referenced by Array4D< T >::Array4D().

1900 {return d3;}
size_t d3
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ dim4()

template<class T>
size_t Array4D< T >::dim4 ( ) const
inline

Definition at line 1901 of file lib-array.h.

Referenced by Array4D< T >::Array4D().

1901 {return d4;}
size_t d4
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ Filterd1()

template<class T >
Array4D< T > & Array4D< T >::Filterd1 ( size_t  N)

Definition at line 2266 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d2, Array4D< T >::d3, and Array4D< T >::d4.

Referenced by Array4D_cmplx< T >::array().

2266  {
2267  for (size_t j(0); j < d2*d3*d4; ++j ){
2268  for (size_t i(j*d1); i< j*d1+N; ++i ){
2269  (*v)[i] = 0.0;
2270  }
2271  }
2272  return *this;
2273 }
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ multid1()

template<class T >
Array4D< T > & Array4D< T >::multid1 ( const valarray< T > &  vmulti)

Definition at line 2148 of file lib-array.h.

References Array4D< T >::d1, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2148  {
2149  for (size_t j(0); j< dim(); j+=d1 ){
2150  for (size_t i(0); i< d1; ++i ){
2151  (*v)[i+j] *= vmulti[i];
2152  }
2153  }
2154  //for(size_t i(0); i< d1; ++i) {
2155  // for(GSlice_iter<T> it(d1c(i,i)); it!=it.end(); ++it) *it *= vmulti[i];
2156  // }
2157  return *this;
2158 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1
Definition: lib-array.h:1886
Here is the call graph for this function:
Here is the caller graph for this function:

◆ multid2()

template<class T >
Array4D< T > & Array4D< T >::multid2 ( const valarray< T > &  vmulti)

Definition at line 2161 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d2, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2161  {
2162  for (size_t k(0); k< dim(); k+=d1*d2 ) {
2163  for (size_t j(0); j< d2; ++j ) {
2164  for (size_t i(j*d1); i< (j+1)*d1; ++i ){
2165  (*v)[i+k] *= vmulti[j];
2166  }
2167  }
2168  }
2169  /*for(size_t j(0); j< d2; ++j) {
2170  for(GSlice_iter<T> it(d2c(j,j)); it!=it.end(); ++it) *it *= vmulti[j];
2171  }*/
2172  return *this;
2173 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
Here is the call graph for this function:
Here is the caller graph for this function:

◆ multid2d3d4()

template<class T >
Array4D< T > & Array4D< T >::multid2d3d4 ( const Array3D< T > &  vd2d3d4)

Definition at line 2205 of file lib-array.h.

References Array3D< T >::array(), Array4D< T >::d1, Array4D< T >::d2, Array4D< T >::d3, and Array4D< T >::d4.

Referenced by Array4D_cmplx< T >::array().

2205  {
2206  for (size_t j(0); j < d2*d3*d4; ++j ){
2207  for (size_t i(j*d1); i< (j+1)*d1; ++i ){
2208  (*v)[i] *= vd2d3d4.array()[j];
2209  }
2210  }
2211  return *this;
2212 }
valarray< T > & array() const
Definition: lib-array.h:1056
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
Here is the call graph for this function:
Here is the caller graph for this function:

◆ multid3()

template<class T >
Array4D< T > & Array4D< T >::multid3 ( const valarray< T > &  vmulti)

Definition at line 2176 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d2, Array4D< T >::d3, and Array4D< T >::dim().

Referenced by Array4D_cmplx< T >::array().

2176  {
2177  for (size_t l(0); l< dim(); l+=d1*d2*d3) {
2178  for (size_t k(0); k< d3; ++k) {
2179  for (size_t i(k*d1*d2); i< (k+1)*d1*d2; ++i ){
2180  (*v)[i+l] *= vmulti[k];
2181  }
2182  }
2183  }
2184  //for(size_t k(0); k< d3; ++k) {
2185  // for(GSlice_iter<T> it(d3c(k,k)); it!=it.end(); ++it) *it *= vmulti[k];
2186  //}
2187  return *this;
2188 }
size_t dim() const
Definition: lib-array.h:1897
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
Here is the call graph for this function:
Here is the caller graph for this function:

◆ multid4()

template<class T >
Array4D< T > & Array4D< T >::multid4 ( const valarray< T > &  vmulti)

Definition at line 2191 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d2, Array4D< T >::d3, and Array4D< T >::d4.

Referenced by Array4D_cmplx< T >::array().

2191  {
2192  for (size_t k(0); k< d4; ++k) {
2193  for (size_t i(k*d1*d2*d3); i< (k+1)*d1*d2*d3; ++i ){
2194  (*v)[i] *= vmulti[k];
2195  }
2196  }
2197  //for(size_t l(0); l< d4; ++l) {
2198  // for(GSlice_iter<T> it(d4c(l,l)); it!=it.end(); ++it) *it *= vmulti[l];
2199  //}
2200  return *this;
2201 }
size_t d1
Definition: lib-array.h:1886
size_t d2
Definition: lib-array.h:1886
size_t d3
Definition: lib-array.h:1886
size_t d4
Definition: lib-array.h:1886
Here is the caller graph for this function:

◆ operator()() [1/4]

template<class T >
T & Array4D< T >::operator() ( size_t  i,
size_t  j,
size_t  k,
size_t  l 
)
inline

Definition at line 1989 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, and Array4D< T >::v.

1989  {
1990  return (*v)[i+j*d1+k*d1d2+l*d1d2d3];
1991 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d1d2
Definition: lib-array.h:1887

◆ operator()() [2/4]

template<class T >
T Array4D< T >::operator() ( size_t  i,
size_t  j,
size_t  k,
size_t  l 
) const
inline

Definition at line 1995 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, and Array4D< T >::v.

1995  {
1996  return (*v)[i+j*d1+k*d1d2+l*d1d2d3];
1997 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d1d2
Definition: lib-array.h:1887

◆ operator()() [3/4]

template<class T >
T & Array4D< T >::operator() ( size_t  i)
inline

Definition at line 2001 of file lib-array.h.

References Array4D< T >::v.

2001  {
2002  return (*v)[i];
2003 }
valarray< T > * v
Definition: lib-array.h:1885

◆ operator()() [4/4]

template<class T >
T Array4D< T >::operator() ( size_t  i) const
inline

Definition at line 2007 of file lib-array.h.

References Array4D< T >::v.

2007  {
2008  return (*v)[i];
2009 }
valarray< T > * v
Definition: lib-array.h:1885

◆ operator*=() [1/2]

template<class T >
Array4D< T > & Array4D< T >::operator*= ( const T &  d)

Definition at line 2115 of file lib-array.h.

Referenced by Array4D_cmplx< T >::array().

2115  {
2116  (*v) *=d;
2117  return *this;
2118 }
Here is the caller graph for this function:

◆ operator*=() [2/2]

template<class T >
Array4D< T > & Array4D< T >::operator*= ( const Array4D< T > &  vmulti)

Definition at line 2119 of file lib-array.h.

References Array4D< T >::array().

2119  {
2120  (*v) *= vmulti.array();
2121  return *this;
2122 }
valarray< T > & array() const
Definition: lib-array.h:1902
Here is the call graph for this function:

◆ operator+=() [1/2]

template<class T >
Array4D< T > & Array4D< T >::operator+= ( const T &  d)

Definition at line 2125 of file lib-array.h.

Referenced by Array4D_cmplx< T >::array().

2125  {
2126  (*v) +=d;
2127  return *this;
2128 }
Here is the caller graph for this function:

◆ operator+=() [2/2]

template<class T >
Array4D< T > & Array4D< T >::operator+= ( const Array4D< T > &  vadd)

Definition at line 2129 of file lib-array.h.

References Array4D< T >::array().

2129  {
2130  (*v) += vadd.array();
2131  return *this;
2132 }
valarray< T > & array() const
Definition: lib-array.h:1902
Here is the call graph for this function:

◆ operator-=() [1/2]

template<class T >
Array4D< T > & Array4D< T >::operator-= ( const T &  d)

Definition at line 2135 of file lib-array.h.

Referenced by Array4D_cmplx< T >::array().

2135  {
2136  (*v) -=d;
2137  return *this;
2138 }
Here is the caller graph for this function:

◆ operator-=() [2/2]

template<class T >
Array4D< T > & Array4D< T >::operator-= ( const Array4D< T > &  vmin)

Definition at line 2139 of file lib-array.h.

References Array4D< T >::array().

2139  {
2140  (*v) -= vmin.array();
2141  return *this;
2142 }
valarray< T > & array() const
Definition: lib-array.h:1902
Here is the call graph for this function:

◆ operator=() [1/2]

template<class T >
Array4D< T > & Array4D< T >::operator= ( const T &  d)

Definition at line 2102 of file lib-array.h.

Referenced by Array4D_cmplx< T >::array().

2102  {
2103  (*v) = d;
2104  return *this;
2105 }
Here is the caller graph for this function:

◆ operator=() [2/2]

template<class T >
Array4D< T > & Array4D< T >::operator= ( const Array4D< T > &  other)

Definition at line 2107 of file lib-array.h.

References Array4D< T >::array().

2107  {
2108  if (this != &other) { //self-assignment
2109  (*v) = other.array();
2110  }
2111  return *this;
2112 }
valarray< T > & array() const
Definition: lib-array.h:1902
Here is the call graph for this function:

◆ SubArray4D() [1/2]

template<class T >
GSlice_iter< T > Array4D< T >::SubArray4D ( size_t  st,
size_t  nx,
size_t  ny,
size_t  nz,
size_t  nw 
)
inline

Definition at line 2081 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, and Array4D< T >::v.

Referenced by Array4D_cmplx< T >::array().

2081  {
2082  valarray<size_t> sz(4), str(4);
2083  str[3] = 1; str[2] = d1; str[1] = d1d2; str[0] = d1d2d3;
2084  sz[3] = nx; sz[2] = ny; sz[1] = nz; sz[0] = nw;
2085  return GSlice_iter<T>(v,gslice(st,sz,str));
2086 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d1d2
Definition: lib-array.h:1887
Here is the caller graph for this function:

◆ SubArray4D() [2/2]

template<class T >
CGSlice_iter< T > Array4D< T >::SubArray4D ( size_t  st,
size_t  nx,
size_t  ny,
size_t  nz,
size_t  nw 
) const
inline

Definition at line 2090 of file lib-array.h.

References Array4D< T >::d1, Array4D< T >::d1d2, Array4D< T >::d1d2d3, and Array4D< T >::v.

2090  {
2091  valarray<size_t> sz(3), str(3);
2092  str[3] = 1; str[2] = d1; str[1] = d1d2; str[0] = d1d2d3;
2093  sz[3] = nx; sz[2] = ny; sz[1] = nz; sz[0] = nw;
2094  return CGSlice_iter<T>(v,gslice(st,sz,str));
2095 }
valarray< T > * v
Definition: lib-array.h:1885
size_t d1
Definition: lib-array.h:1886
size_t d1d2d3
Definition: lib-array.h:1888
size_t d1d2
Definition: lib-array.h:1887

Field Documentation

◆ d1

◆ d1d2

◆ d1d2d3

◆ d2

◆ d3

◆ d4

◆ v


The documentation for this class was generated from the following file: