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

#include <lib-array.h>

Public Member Functions

 Array3D_cmplx (size_t x, size_t y, size_t z)
 
 Array3D_cmplx (const Array3D_cmplx &other)
 
 ~Array3D_cmplx ()
 
size_t dim () const
 
size_t dim1 () const
 
size_t dim2 () const
 
size_t dim3 () const
 
valarray< T > & array () const
 
T & operator[] (size_t i)
 
operator[] (size_t i) const
 
T & real (size_t i, size_t j, size_t k)
 
real (size_t i, size_t j, size_t k) const
 
T & imag (size_t i, size_t j, size_t k)
 
imag (size_t i, size_t j, size_t k) 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 > SubArray3D (size_t st, size_t nx, size_t ny, size_t nz)
 
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 > SubArray3D (size_t st, size_t nx, size_t ny, size_t nz) const
 
Array3D_cmplxoperator= (const T &d)
 
Array3D_cmplxoperator= (const complex< T > &c)
 
Array3D_cmplxoperator= (const Array3D< T > &other)
 
Array3D_cmplxoperator= (const Array3D_cmplx &other)
 
Array3D_cmplxoperator*= (const T &d)
 
Array3D_cmplxoperator*= (const complex< T > &c)
 
Array3D_cmplxoperator*= (const Array3D< T > &vmulti)
 
Array3D_cmplxoperator*= (const Array3D_cmplx &vmulti)
 
Array3D_cmplxoperator+= (const T &d)
 
Array3D_cmplxoperator+= (const complex< T > &c)
 
Array3D_cmplxoperator+= (const Array3D< T > &vadd)
 
Array3D_cmplxoperator+= (const Array3D_cmplx &vadd)
 
Array3D_cmplxoperator-= (const T &d)
 
Array3D_cmplxoperator-= (const complex< T > &c)
 
Array3D_cmplxoperator-= (const Array3D< T > &vmin)
 
Array3D_cmplxoperator-= (const Array3D_cmplx &vmin)
 
Array3D_cmplxmultid1 (const valarray< T > &vmulti)
 
Array3D_cmplxmultid1 (const valarray< complex< T > > &vmulti)
 
Array3D_cmplxmultid2 (const valarray< T > &vmulti)
 
Array3D_cmplxmultid2 (const valarray< complex< T > > &vmulti)
 
Array3D_cmplxmultid3 (const valarray< T > &vmulti)
 
Array3D_cmplxmultid3 (const valarray< complex< T > > &vmulti)
 
Array3D_cmplxmultid2d3 (const Array2D< T > &vd2d3)
 
Array3D_cmplxmultid2d3 (const Array2D_cmplx< T > &vd2d3)
 
Array3D_cmplxDd1 ()
 
Array3D_cmplxDd2 ()
 
Array3D_cmplxDd3 ()
 
Array3D_cmplxFilterd1 (size_t N)
 

Private Attributes

valarray< T > * v
 
size_t d1
 
size_t d2
 
size_t d3
 
size_t td1
 
size_t td1d2
 

Detailed Description

template<class T>
class Array3D_cmplx< T >

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

Constructor & Destructor Documentation

◆ Array3D_cmplx() [1/2]

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

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

References Array3D_cmplx< T >::d1, Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1469  : d1(x), d2(y), d3(z) {
1470  v = new valarray<T>(2*d1*d2*d3);
1471  td1 = 2*d1;
1472  td1d2 = 2*d1*d2;
1473 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ Array3D_cmplx() [2/2]

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

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

References Array3D_cmplx< T >::array(), Array3D_cmplx< T >::d1, Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::dim1(), Array3D_cmplx< T >::dim2(), Array3D_cmplx< T >::dim3(), Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1475  {
1476  d1 = other.dim1();
1477  d2 = other.dim2();
1478  d3 = other.dim3();
1479  td1 = 2*d1;
1480  td1d2 = 2*d1*d2;
1481  v = new valarray<T>(2*d1*d2*d3);
1482  (*v) = other.array();
1483 }
valarray< T > * v
Definition: lib-array.h:1384
valarray< T > & array() const
Definition: lib-array.h:1400
size_t dim2() const
Definition: lib-array.h:1398
size_t td1d2
Definition: lib-array.h:1387
size_t dim1() const
Definition: lib-array.h:1397
size_t dim3() const
Definition: lib-array.h:1399
Here is the call graph for this function:

◆ ~Array3D_cmplx()

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

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

References Array3D_cmplx< T >::v.

1485  {
1486  delete v;
1487 }
valarray< T > * v
Definition: lib-array.h:1384

Member Function Documentation

◆ array()

◆ d1c() [1/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

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

1521  {
1522  valarray<size_t> sz(4), str(4);
1523  str[3] = 1, str[2] = td1; str[1] = td1d2; str[0] = 2;
1524  sz[3] = 2, sz[2] = d2; sz[1] = d3; sz[0] = e-b+1;
1525  return GSlice_iter<T>(v,gslice(2*b,sz,str));
1526 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ d1c() [2/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1529  {
1530  valarray<size_t> sz(4), str(4);
1531  str[3] = 1, str[2] = td1; str[1] = td1d2; str[0] = 2;
1532  sz[3] = 2, sz[2] = d2; sz[1] = d3; sz[0] = e-b+1;
1533  return CGSlice_iter<T>(v,gslice(2*b,sz,str));
1534 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ d2c() [1/2]

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

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

References Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

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

1537  {
1538  valarray<size_t> sz(3), str(3);
1539  str[2] = 1; str[1] = td1d2; str[0] = td1;
1540  sz[2] = td1; sz[1] = d3; sz[0] = e-b+1;
1541  return GSlice_iter<T>(v,gslice(td1*b,sz,str));
1542 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ d2c() [2/2]

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

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

References Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1545  {
1546  valarray<size_t> sz(3), str(3);
1547  str[2] = 1; str[1] = td1d2; str[0] = td1;
1548  sz[2] = td1; sz[1] = d3; sz[0] = e-b+1;
1549  return CGSlice_iter<T>(v,gslice(td1*b,sz,str));
1550 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ d3c() [1/2]

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

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

References Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

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

1553  {
1554  valarray<size_t> sz(2), str(2);
1555  str[1] = 1; str[0] = td1d2;
1556  sz[1] = td1d2; sz[0] = e-b+1;
1557  return GSlice_iter<T>(v,gslice(td1d2*b,sz,str));
1558 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ d3c() [2/2]

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

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

References Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1561  {
1562  valarray<size_t> sz(2), str(2);
1563  str[1] = 1; str[0] = td1d2;
1564  sz[1] = td1d2; sz[0] = e-b+1;
1565  return CGSlice_iter<T>(v,gslice(td1d2*b,sz,str));
1566 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ Dd1()

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1823  {
1824  for(long i(0); i< td1*d2*d3-4; ++i) {
1825  (*v)[i] -= (*v)[i+4];
1826  }
1827  for(long i(td1*d2*d3-5); i>-1; --i) {
1828  (*v)[i+2] = (*v)[i];
1829  }
1830  return *this;
1831 }
Here is the caller graph for this function:

◆ Dd2()

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1834  {
1835  long twotd1 = 2*td1;
1836  for(long i(0); i< td1*d2*d3-twotd1; ++i) {
1837  (*v)[i] -= (*v)[i+twotd1];
1838  }
1839  for(long i(td1*d2*d3-twotd1-1); i>-1; --i) {
1840  (*v)[i+td1] = (*v)[i];
1841  }
1842  return *this;
1843 }
Here is the caller graph for this function:

◆ Dd3()

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::td1d2.

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

1846  {
1847  long twotd1d2 = 2*td1d2;
1848  for(long i(0); i< long(td1*d2*d3)-twotd1d2; ++i) {
1849  (*v)[i] -= (*v)[i+twotd1d2];
1850  }
1851  for(long i(td1*d2*d3-twotd1d2-1); i>-1; --i) {
1852  (*v)[i+td1d2] = (*v)[i];
1853  }
1854  return *this;
1855 }
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ dim()

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

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

References Array3D< T >::d3.

1396 {return d1*d2*d3;}

◆ dim1()

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

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

References Array3D< T >::d1.

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

1397 {return d1;}
Here is the caller graph for this function:

◆ dim2()

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

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

References Array3D< T >::d2.

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

1398 {return d2;}
Here is the caller graph for this function:

◆ dim3()

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

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

References Array3D< T >::d3.

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

1399 {return d3;}
Here is the caller graph for this function:

◆ Filterd1()

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1859  {
1860  for (size_t j(0); j < d2*d3; ++j ){
1861  for (size_t i(j*td1); i< j*td1+2*N; ++i ){
1862  (*v)[i] = 0.0;
1863  }
1864  }
1865  return *this;
1866 }
Here is the caller graph for this function:

◆ imag() [1/2]

template<class T >
T & Array3D_cmplx< T >::imag ( size_t  i,
size_t  j,
size_t  k 
)
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

Referenced by Array3D_cmplx< T >::multid1(), Array3D_cmplx< T >::multid2(), and Array3D_cmplx< T >::multid3().

1509  {
1510  return (*v)[2*i+1+j*td1+k*td1d2];
1511 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ imag() [2/2]

template<class T >
T Array3D_cmplx< T >::imag ( size_t  i,
size_t  j,
size_t  k 
) const
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1513  {
1514  return (*v)[2*i+1+j*td1+k*td1d2];
1515 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ multid1() [1/2]

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

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

References Array3D_cmplx< T >::d1, Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1718  {
1719  for (size_t j(0); j< td1*d2*d3; j+=td1 ){
1720  for (size_t i(0); i< d1; ++i ){
1721  (*v)[2*i+j] *= vmulti[i];
1722  (*v)[2*i+1+j] *= vmulti[i];
1723  }
1724  }
1725  return *this;
1726 }
Here is the caller graph for this function:

◆ multid1() [2/2]

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

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

References Array3D_cmplx< T >::d1, Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::imag(), Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1729  {
1730  for (size_t j(0); j< td1*d2*d3; j+=td1 ){
1731  for (size_t i(0); i< d1; ++i ){
1732  T vi((*v)[2*i+j]*vmulti[i].imag());
1733  (*v)[2*i+j] *= vmulti[i].real(); // v[i] = Aa
1734  (*v)[2*i+j] -= (*v)[2*i+1+j] * vmulti[i].imag(); // v[i] = Aa - Bb
1735  (*v)[2*i+1+j] *= vmulti[i].real(); // v[i+1] = Ba
1736  (*v)[2*i+1+j] += vi; // v[i+1] = Ba + Ab
1737  }
1738  }
1739  return *this;
1740 }
valarray< T > * v
Definition: lib-array.h:1384
T & imag(size_t i, size_t j, size_t k)
Definition: lib-array.h:1509
Here is the call graph for this function:

◆ multid2() [1/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1743  {
1744  for (size_t k(0); k< d3*d2*td1; k+=td1*d2 ) {
1745  for (size_t j(0); j< d2; ++j ) {
1746  for (size_t i(j*td1); i< (j+1)*td1; ++i ){
1747  (*v)[i+k] *= vmulti[j];
1748  }
1749  }
1750  }
1751  return *this;
1752 }
Here is the caller graph for this function:

◆ multid2() [2/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::imag(), Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1755  {
1756  for (size_t k(0); k< d3*d2*td1; k+=td1*d2 ) {
1757  for (size_t j(0); j< d2; ++j ) {
1758  for (size_t i(j*td1); i< (j+1)*td1; i+=2 ){
1759  T vi((*v)[i+k]* vmulti[j].imag());
1760  (*v)[i+k] *= vmulti[j].real(); // v[i] = Aa
1761  (*v)[i+k] -= (*v)[i+k+1] * vmulti[j].imag(); // v[i] = Aa - Bb
1762  (*v)[i+k+1] *= vmulti[j].real(); // v[i+1] = Ba
1763  (*v)[i+k+1] += vi; // v[i+1] = Ba + Ab
1764  }
1765  }
1766  }
1767  return *this;
1768 }
valarray< T > * v
Definition: lib-array.h:1384
T & imag(size_t i, size_t j, size_t k)
Definition: lib-array.h:1509
Here is the call graph for this function:

◆ multid2d3() [1/2]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::multid2d3 ( const Array2D< T > &  vd2d3)

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

References Array2D< T >::array(), Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

1796  {
1797  for (size_t j(0); j < d2*d3; ++j ){
1798  for (size_t i(j*td1); i< (j+1)*td1; ++i ){
1799  (*v)[i] *= vd2d3.array()[j];
1800  }
1801  }
1802  return *this;
1803 }
valarray< T > & array() const
Definition: lib-array.h:291
Here is the call graph for this function:

◆ multid2d3() [2/2]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::multid2d3 ( const Array2D_cmplx< T > &  vd2d3)

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

References Array2D_cmplx< T >::array(), Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1807  {
1808  for (size_t j(0); j < d2*d3; ++j ){
1809  for (size_t i(j*td1); i< (j+1)*td1; i+=2 ){
1810  T vi((*v)[i]*vd2d3.array()[2*j+1]);
1811  (*v)[i] *= vd2d3.array()[2*j]; // v[i] = Aa
1812  (*v)[i] -= (*v)[i+1]*vd2d3.array()[2*j+1]; // v[i] = Aa - Bb
1813  (*v)[i+1] *= vd2d3.array()[2*j]; // v[i+1] = Ba
1814  (*v)[i+1] += vi; // v[i+1] = Ba + Ab
1815  }
1816  }
1817  return *this;
1818 }
valarray< T > * v
Definition: lib-array.h:1384
valarray< T > & array() const
Definition: lib-array.h:643
Here is the call graph for this function:

◆ multid3() [1/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1771  {
1772  for (size_t k(0); k< d3; ++k) {
1773  for (size_t i(k*td1*d2); i< (k+1)*td1*d2; ++i ){
1774  (*v)[i] *= vmulti[k];
1775  }
1776  }
1777  return *this;
1778 }
Here is the caller graph for this function:

◆ multid3() [2/2]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::imag(), Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1781  {
1782  for (size_t k(0); k< d3; ++k) {
1783  for (size_t i(k*td1*d2); i< (k+1)*td1*d2; i+=2 ){
1784  T vi((*v)[i]* vmulti[k].imag());
1785  (*v)[i] *= vmulti[k].real(); // v[i] = Aa
1786  (*v)[i] -= (*v)[i+1] * vmulti[k].imag(); // v[i] = Aa - Bb
1787  (*v)[i+1] *= vmulti[k].real(); // v[i+1] = Ba
1788  (*v)[i+1] += vi; // v[i+1] = Ba + Ab
1789  }
1790  }
1791  return *this;
1792 }
valarray< T > * v
Definition: lib-array.h:1384
T & imag(size_t i, size_t j, size_t k)
Definition: lib-array.h:1509
Here is the call graph for this function:

◆ operator*=() [1/4]

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

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

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

1621  {
1622  (*v) *=d;
1623  return *this;
1624 }
Here is the caller graph for this function:

◆ operator*=() [2/4]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::operator*= ( const complex< T > &  c)

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::real(), Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1626  {
1627  for (size_t i(0); i< td1*d2*d3; i+=2) { // suppose v[i]+iv[i+1]=A+iB, c=a+ib
1628  T vi((*v)[i]*c.imag());
1629  (*v)[i] *= c.real(); // v[i] = Aa
1630  (*v)[i] -= (*v)[i+1]*c.imag(); // v[i] = Aa - Bb
1631  (*v)[i+1] *= c.real(); // v[i+1] = Ba
1632  (*v)[i+1] += vi; // v[i+1] = Ba + Ab
1633  }
1634  return *this;
1635 }
valarray< T > * v
Definition: lib-array.h:1384
Here is the call graph for this function:

◆ operator*=() [3/4]

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

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

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

1637  {
1638  for (size_t i(0); i< d1*d2*d3; ++i) {
1639  (*v)[2*i] *= vmulti.array()[i];
1640  (*v)[2*i+1] *= vmulti.array()[i];
1641  }
1642  return *this;
1643 }
valarray< T > & array() const
Definition: lib-array.h:1056
Here is the call graph for this function:

◆ operator*=() [4/4]

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

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

References Array3D_cmplx< T >::array(), Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::td1, and Array3D_cmplx< T >::v.

1645  {
1646  for (size_t i(0); i< td1*d2*d3; i+=2) { // suppose v[i]+iv[i+1]=A+iB, vmulti[i] + ivmulti[i+1] = a+ib
1647  T vi((*v)[i] * vmulti.array()[i+1]);
1648  (*v)[i] *= vmulti.array()[i]; // v[i] = Aa
1649  (*v)[i] -= (*v)[i+1]*vmulti.array()[i+1]; // v[i] = Aa - Bb
1650  (*v)[i+1] *= vmulti.array()[i]; // v[i+1] = Ba
1651  (*v)[i+1] += vi; // v[i+1] = Ba + Ab
1652  }
1653  return *this;
1654 }
valarray< T > * v
Definition: lib-array.h:1384
valarray< T > & array() const
Definition: lib-array.h:1400
Here is the call graph for this function:

◆ operator+=() [1/4]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1658  {
1659  for (size_t i(0); i< td1*d2*d3; i+=2) {
1660  (*v)[i] +=d;
1661  }
1662  return *this;
1663 }
Here is the caller graph for this function:

◆ operator+=() [2/4]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::operator+= ( const complex< T > &  c)

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::real(), and Array3D_cmplx< T >::td1.

1665  {
1666  for (size_t i(0); i< td1*d2*d3; i+=2) {
1667  (*v)[i] +=c.real();
1668  (*v)[i+1] +=c.imag();
1669  }
1670  return *this;
1671 }
Here is the call graph for this function:

◆ operator+=() [3/4]

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

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

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

1673  {
1674  for (size_t i(0); i< d1*d2*d3; ++i) {
1675  (*v)[2*i] += vadd.array()[i];
1676  }
1677  return *this;
1678 }
valarray< T > & array() const
Definition: lib-array.h:1056
Here is the call graph for this function:

◆ operator+=() [4/4]

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

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

References Array3D_cmplx< T >::array().

1680  {
1681  (*v) += vadd.array();
1682  return *this;
1683 }
valarray< T > & array() const
Definition: lib-array.h:1400
Here is the call graph for this function:

◆ operator-=() [1/4]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1687  {
1688  for (size_t i(0); i< td1*d2*d3; i+=2) {
1689  (*v)[i] -=d;
1690  }
1691  return *this;
1692 }
Here is the caller graph for this function:

◆ operator-=() [2/4]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::operator-= ( const complex< T > &  c)

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::real(), and Array3D_cmplx< T >::td1.

1694  {
1695  for (size_t i(0); i< td1*d2*d3; i+=2) {
1696  (*v)[i] -=c.real();
1697  (*v)[i+1] -=c.imag();
1698  }
1699  return *this;
1700 }
Here is the call graph for this function:

◆ operator-=() [3/4]

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

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

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

1702  {
1703  for (size_t i(0); i< d1*d2*d3; ++i) {
1704  (*v)[2*i] -= vmin.array()[i];
1705  }
1706  return *this;
1707 }
valarray< T > & array() const
Definition: lib-array.h:1056
Here is the call graph for this function:

◆ operator-=() [4/4]

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

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

References Array3D_cmplx< T >::array().

1709  {
1710  (*v) -= vmin.array();
1711  return *this;
1712 }
valarray< T > & array() const
Definition: lib-array.h:1400
Here is the call graph for this function:

◆ operator=() [1/4]

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

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, and Array3D_cmplx< T >::td1.

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

1591  {
1592  for (size_t i(0); i< td1*d2*d3; i+=2) {
1593  (*v)[i] = d;
1594  (*v)[i+1] = 0.0;
1595  }
1596  return *this;
1597 }
Here is the caller graph for this function:

◆ operator=() [2/4]

template<class T >
Array3D_cmplx< T > & Array3D_cmplx< T >::operator= ( const complex< T > &  c)

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

References Array3D_cmplx< T >::d2, Array3D_cmplx< T >::d3, Array3D_cmplx< T >::real(), and Array3D_cmplx< T >::td1.

1598  {
1599  for (size_t i(0); i< td1*d2*d3; i+=2) {
1600  (*v)[i] =c.real();
1601  (*v)[i+1] =c.imag();
1602  }
1603  return *this;
1604 }
Here is the call graph for this function:

◆ operator=() [3/4]

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

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

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

1605  {
1606  for (size_t i(0); i< d1*d2*d3; ++i) {
1607  (*v)[2*i] = other.array()[i];
1608  (*v)[2*i+1] = 0.0;
1609  }
1610  return *this;
1611 }
valarray< T > & array() const
Definition: lib-array.h:1056
Here is the call graph for this function:

◆ operator=() [4/4]

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

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

References Array3D_cmplx< T >::array().

1612  {
1613  if (this != &other) { //self-assignment
1614  (*v) = other.array();
1615  }
1616  return *this;
1617 }
valarray< T > & array() const
Definition: lib-array.h:1400
Here is the call graph for this function:

◆ operator[]() [1/2]

template<class T >
T & Array3D_cmplx< T >::operator[] ( size_t  i)
inline

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

References Array3D_cmplx< T >::v.

1493  {
1494  return (*v)[i];
1495 }
valarray< T > * v
Definition: lib-array.h:1384

◆ operator[]() [2/2]

template<class T >
T Array3D_cmplx< T >::operator[] ( size_t  i) const
inline

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

References Array3D_cmplx< T >::v.

1497  {
1498  return (*v)[i];
1499 }
valarray< T > * v
Definition: lib-array.h:1384

◆ real() [1/2]

template<class T >
T & Array3D_cmplx< T >::real ( size_t  i,
size_t  j,
size_t  k 
)
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

Referenced by Array3D_cmplx< T >::operator*=(), Array3D_cmplx< T >::operator+=(), Array3D_cmplx< T >::operator-=(), and Array3D_cmplx< T >::operator=().

1501  {
1502  return (*v)[2*i+j*td1+k*td1d2];
1503 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387
Here is the caller graph for this function:

◆ real() [2/2]

template<class T >
T Array3D_cmplx< T >::real ( size_t  i,
size_t  j,
size_t  k 
) const
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1505  {
1506  return (*v)[2*i+j*td1+k*td1d2];
1507 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ SubArray3D() [1/2]

template<class T >
GSlice_iter< T > Array3D_cmplx< T >::SubArray3D ( size_t  st,
size_t  nx,
size_t  ny,
size_t  nz 
)
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1571  {
1572  valarray<size_t> sz(3), str(3);
1573  str[2] = 1; str[1] = td1; str[0] = td1d2;
1574  sz[2] = 2*nx; sz[1] = ny; sz[0] = nz;
1575  return GSlice_iter<T>(v,gslice(2*st,sz,str));
1576 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

◆ SubArray3D() [2/2]

template<class T >
CGSlice_iter< T > Array3D_cmplx< T >::SubArray3D ( size_t  st,
size_t  nx,
size_t  ny,
size_t  nz 
) const
inline

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

References Array3D_cmplx< T >::td1, Array3D_cmplx< T >::td1d2, and Array3D_cmplx< T >::v.

1580  {
1581  valarray<size_t> sz(3), str(3);
1582  str[2] = 1; str[1] = td1; str[0] = td1d2;
1583  sz[2] = 2*nx; sz[1] = ny; sz[0] = nz;
1584  return CGSlice_iter<T>(v,gslice(2*st,sz,str));
1585 }
valarray< T > * v
Definition: lib-array.h:1384
size_t td1d2
Definition: lib-array.h:1387

Field Documentation

◆ d1

◆ d2

◆ d3

◆ td1

◆ td1d2

◆ v


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