ARTS
2.4.0(git:4fb77825)
|
The Tensor4View class. More...
#include <matpackIV.h>
Public Member Functions | |
constexpr | Tensor4View (const Tensor4View &)=default |
Tensor4View | operator() (const Range &b, const Range &p, const Range &r, const Range &c) |
Index operator for subrange. More... | |
Tensor3View | operator() (const Range &b, const Range &p, const Range &r, Index c) |
Index operator returning an object of type Tensor3View. More... | |
Tensor3View | operator() (const Range &b, const Range &p, Index r, const Range &c) |
Index operator returning an object of type Tensor3View. More... | |
Tensor3View | operator() (const Range &b, Index p, const Range &r, const Range &c) |
Index operator returning an object of type Tensor3View. More... | |
Tensor3View | operator() (Index b, const Range &p, const Range &r, const Range &c) |
Index operator returning an object of type Tensor3View. More... | |
MatrixView | operator() (const Range &b, const Range &p, Index r, Index c) |
Index operator returning an object of type MatrixView. More... | |
MatrixView | operator() (const Range &b, Index p, const Range &r, Index c) |
Index operator returning an object of type MatrixView. More... | |
MatrixView | operator() (const Range &b, Index p, Index r, const Range &c) |
Index operator returning an object of type MatrixView. More... | |
MatrixView | operator() (Index b, const Range &p, Index r, const Range &c) |
Index operator returning an object of type MatrixView. More... | |
MatrixView | operator() (Index b, const Range &p, const Range &r, Index c) |
Index operator returning an object of type MatrixView. More... | |
MatrixView | operator() (Index b, Index p, const Range &r, const Range &c) |
Index operator returning an object of type MatrixView. More... | |
VectorView | operator() (const Range &b, Index p, Index r, Index c) |
Index operator returning an object of type VectorView. More... | |
VectorView | operator() (Index b, const Range &p, Index r, Index c) |
Index operator returning an object of type VectorView. More... | |
VectorView | operator() (Index b, Index p, const Range &r, Index c) |
Index operator returning an object of type VectorView. More... | |
VectorView | operator() (Index b, Index p, Index r, const Range &c) |
Index operator returning an object of type VectorView. More... | |
Numeric & | operator() (Index b, Index p, Index r, Index c) |
Plain non-const index operator. More... | |
Numeric & | get (Index b, Index p, Index r, Index c) |
Get element implementation without assertions. More... | |
const Numeric * | get_c_array () const |
Conversion to plain C-array. More... | |
Numeric * | get_c_array () |
Conversion to plain C-array. More... | |
Iterator4D | begin () |
Return iterator to first book. More... | |
Iterator4D | end () |
Return iterator behind last book. More... | |
Tensor4View & | operator= (const ConstTensor4View &v) |
Assignment operator. More... | |
Tensor4View & | operator= (const Tensor4View &v) |
Assignment from Tensor4View to Tensor4View. More... | |
Tensor4View & | operator= (const Tensor4 &v) |
Assignment from a Tensor4. More... | |
Tensor4View & | operator= (Numeric x) |
Assigning a scalar to a Tensor4View will set all elements to this value. More... | |
Tensor4View & | operator*= (Numeric x) |
Multiplication by scalar. More... | |
Tensor4View & | operator/= (Numeric x) |
Division by scalar. More... | |
Tensor4View & | operator+= (Numeric x) |
Addition of scalar. More... | |
Tensor4View & | operator-= (Numeric x) |
Subtraction of scalar. More... | |
Tensor4View & | operator*= (const ConstTensor4View &x) |
Element-vise multiplication by another Tensor4. More... | |
Tensor4View & | operator/= (const ConstTensor4View &x) |
Element-vise division by another Tensor4. More... | |
Tensor4View & | operator+= (const ConstTensor4View &x) |
Element-vise addition of another Tensor4. More... | |
Tensor4View & | operator-= (const ConstTensor4View &x) |
Element-vise subtraction of another Tensor4. More... | |
virtual | ~Tensor4View ()=default |
Destructor. More... | |
Tensor4View (const Tensor3View &a) | |
Special constructor to make a Tensor4 view of a Tensor3. More... | |
ConstIterator4D | begin () const |
Return const iterator to first book. More... | |
ConstIterator4D | end () const |
Return const iterator behind last book. More... | |
Numeric | get (Index b, Index p, Index r, Index c) const |
Get element implementation without assertions. More... | |
Public Member Functions inherited from ConstTensor4View | |
constexpr | ConstTensor4View (const ConstTensor4View &)=default |
constexpr | ConstTensor4View (ConstTensor4View &&)=default |
ConstTensor4View & | operator= (const ConstTensor4View &)=default |
ConstTensor4View & | operator= (ConstTensor4View &&)=default |
bool | empty () const |
Check if variable is empty. More... | |
Index | nbooks () const |
Returns the number of books. More... | |
Index | npages () const |
Returns the number of pages. More... | |
Index | nrows () const |
Returns the number of rows. More... | |
Index | ncols () const |
Returns the number of columns. More... | |
ConstTensor4View | operator() (const Range &b, const Range &p, const Range &r, const Range &c) const |
Const index operator for subrange. More... | |
ConstTensor3View | operator() (const Range &b, const Range &p, const Range &r, Index c) const |
Const index operator returning an object of type ConstTensor3View. More... | |
ConstTensor3View | operator() (const Range &b, const Range &p, Index r, const Range &c) const |
Const index operator returning an object of type ConstTensor3View. More... | |
ConstTensor3View | operator() (const Range &b, Index p, const Range &r, const Range &c) const |
Const index operator returning an object of type ConstTensor3View. More... | |
ConstTensor3View | operator() (Index b, const Range &p, const Range &r, const Range &c) const |
Const index operator returning an object of type ConstTensor3View. More... | |
ConstMatrixView | operator() (const Range &b, const Range &p, Index r, Index c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstMatrixView | operator() (const Range &b, Index p, const Range &r, Index c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstMatrixView | operator() (const Range &b, Index p, Index r, const Range &c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstMatrixView | operator() (Index b, const Range &p, Index r, const Range &c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstMatrixView | operator() (Index b, const Range &p, const Range &r, Index c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstMatrixView | operator() (Index b, Index p, const Range &r, const Range &c) const |
Const index operator returning an object of type ConstMatrixView. More... | |
ConstVectorView | operator() (const Range &b, Index p, Index r, Index c) const |
Const index operator returning an object of type ConstVectorView. More... | |
ConstVectorView | operator() (Index b, const Range &p, Index r, Index c) const |
Const index operator returning an object of type ConstVectorView. More... | |
ConstVectorView | operator() (Index b, Index p, const Range &r, Index c) const |
Const index operator returning an object of type ConstVectorView. More... | |
ConstVectorView | operator() (Index b, Index p, Index r, const Range &c) const |
Const index operator returning an object of type ConstVectorView. More... | |
Numeric | operator() (Index b, Index p, Index r, Index c) const |
Plain const index operator. More... | |
Numeric | get (Index b, Index p, Index r, Index c) const |
Get element implementation without assertions. More... | |
ConstIterator4D | begin () const |
Return const iterator to first book. More... | |
ConstIterator4D | end () const |
Return const iterator behind last book. More... | |
virtual | ~ConstTensor4View ()=default |
Destructor. More... | |
ConstTensor4View (const ConstTensor3View &a) | |
Special constructor to make a Tensor4 view of a Tensor3. More... | |
Protected Member Functions | |
Tensor4View ()=default | |
Tensor4View (Numeric *data, const Range &b, const Range &p, const Range &r, const Range &c) | |
Explicit constructor. More... | |
Tensor4View (Numeric *data, const Range &pb, const Range &pp, const Range &pr, const Range &pc, const Range &nb, const Range &np, const Range &nr, const Range &nc) | |
Recursive constructor. More... | |
Protected Member Functions inherited from ConstTensor4View | |
ConstTensor4View ()=default | |
ConstTensor4View (Numeric *data, const Range &b, const Range &p, const Range &r, const Range &c) | |
Explicit constructor. More... | |
ConstTensor4View (Numeric *data, const Range &pb, const Range &pp, const Range &pr, const Range &pc, const Range &nb, const Range &np, const Range &nr, const Range &nc) | |
Recursive constructor. More... | |
Friends | |
class | Iterator5D |
class | Tensor5View |
class | Tensor6View |
class | Tensor7View |
Additional Inherited Members | |
Protected Attributes inherited from ConstTensor4View | |
Range | mbr {0, 0, 1} |
The book range of mdata that is actually used. More... | |
Range | mpr {0, 0, 1} |
The page range of mdata that is actually used. More... | |
Range | mrr {0, 0, 1} |
The row range of mdata that is actually used. More... | |
Range | mcr {0, 0, 1} |
The column range of mdata that is actually used. More... | |
Numeric * | mdata {nullptr} |
Pointer to the plain C array that holds the data. More... | |
The Tensor4View class.
This contains the main implementation of a Tensor4. It defines the concepts of Tensor4View. Plus additionally the recursive subrange operator, which makes it possible to create a Tensor4View from a subrange of a Tensor4View.
The class Tensor4 is just a special case of a Tensor4View which also allocates storage.
Definition at line 284 of file matpackIV.h.
|
constexprdefault |
|
virtualdefault |
Destructor.
Tensor4View::Tensor4View | ( | const Tensor3View & | a | ) |
Special constructor to make a Tensor4 view of a Tensor3.
Definition at line 871 of file matpackIV.cc.
|
protecteddefault |
|
protected |
Explicit constructor.
This one is used by Tensor4 to initialize its own Tensor4View part. The row range rr must have a stride to account for the length of one row.
Definition at line 884 of file matpackIV.cc.
|
protected |
Recursive constructor.
This is used to construct SubMatrices from SubMatrices. That means that the new ranges have to be interpreted relative to the original ranges.
The new ranges may contain -1 for the extent which acts as a joker. However, the used Range constructor converts this to an explicit range, consistent with the original Range.
*data | The actual data. |
pb | Previous range. |
pp | Previous range. |
pr | Previous range. |
pc | Previous range. |
nb | New Range. |
np | New Range. |
nr | New Range. |
nc | New Range. |
Definition at line 911 of file matpackIV.cc.
Iterator4D Tensor4View::begin | ( | ) |
Return iterator to first book.
Definition at line 706 of file matpackIV.cc.
References ConstTensor4View::mbr, ConstTensor4View::mcr, ConstTensor4View::mdata, ConstTensor4View::mpr, ConstTensor4View::mrr, Range::mstart, and Range::mstride.
Referenced by copy(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), and Tensor4::Tensor4().
ConstIterator4D ConstTensor4View::begin |
Return const iterator to first book.
Definition at line 227 of file matpackIV.cc.
Iterator4D Tensor4View::end | ( | ) |
Return iterator behind last book.
Definition at line 712 of file matpackIV.cc.
References ConstTensor4View::mbr, ConstTensor4View::mcr, ConstTensor4View::mdata, Range::mextent, ConstTensor4View::mpr, ConstTensor4View::mrr, Range::mstart, and Range::mstride.
Referenced by copy(), operator*=(), operator+=(), operator-=(), operator/=(), and operator=().
ConstIterator4D ConstTensor4View::end |
Return const iterator behind last book.
Definition at line 228 of file matpackIV.cc.
Get element implementation without assertions.
Definition at line 348 of file matpackIV.h.
|
inline |
Get element implementation without assertions.
Definition at line 220 of file matpackIV.h.
Numeric * Tensor4View::get_c_array | ( | ) |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the Tensor4View is not pointing to the beginning of a Tensor4 or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 340 of file matpackIV.cc.
References ConstTensor4View::mbr, ConstTensor4View::mcr, ConstTensor4View::mdata, Range::mextent, ConstTensor4View::mpr, ConstTensor4View::mrr, Range::mstart, and Range::mstride.
const Numeric * Tensor4View::get_c_array | ( | ) | const |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the Tensor4View is not pointing to the beginning of a Tensor4 or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 358 of file matpackIV.cc.
References ConstTensor4View::mbr, ConstTensor4View::mcr, ConstTensor4View::mdata, Range::mextent, ConstTensor4View::mpr, ConstTensor4View::mrr, Range::mstart, and Range::mstride.
Referenced by get_variable_value(), nca_get_data_Tensor4(), nca_put_var_Tensor4(), nca_read_from_file(), nca_write_to_file(), and Reduce().
Tensor4View Tensor4View::operator() | ( | const Range & | b, |
const Range & | p, | ||
const Range & | r, | ||
const Range & | c | ||
) |
Index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Tensor4. This allows correct recursive behavior.
Definition at line 454 of file matpackIV.cc.
Tensor3View Tensor4View::operator() | ( | const Range & | b, |
const Range & | p, | ||
const Range & | r, | ||
Index | c | ||
) |
Index operator returning an object of type Tensor3View.
(Reducing the dimension by one.)
Definition at line 463 of file matpackIV.cc.
Tensor3View Tensor4View::operator() | ( | const Range & | b, |
const Range & | p, | ||
Index | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type Tensor3View.
(Reducing the dimension by one.)
Definition at line 477 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | const Range & | b, |
const Range & | p, | ||
Index | r, | ||
Index | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 519 of file matpackIV.cc.
Tensor3View Tensor4View::operator() | ( | const Range & | b, |
Index | p, | ||
const Range & | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type Tensor3View.
(Reducing the dimension by one.)
Definition at line 491 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | const Range & | b, |
Index | p, | ||
const Range & | r, | ||
Index | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 539 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | const Range & | b, |
Index | p, | ||
Index | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 559 of file matpackIV.cc.
VectorView Tensor4View::operator() | ( | const Range & | b, |
Index | p, | ||
Index | r, | ||
Index | c | ||
) |
Index operator returning an object of type VectorView.
(Reducing the dimension by three.)
Definition at line 639 of file matpackIV.cc.
Tensor3View Tensor4View::operator() | ( | Index | b, |
const Range & | p, | ||
const Range & | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type Tensor3View.
(Reducing the dimension by one.)
Definition at line 505 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | Index | b, |
const Range & | p, | ||
const Range & | r, | ||
Index | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 599 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | Index | b, |
const Range & | p, | ||
Index | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 579 of file matpackIV.cc.
VectorView Tensor4View::operator() | ( | Index | b, |
const Range & | p, | ||
Index | r, | ||
Index | c | ||
) |
Index operator returning an object of type VectorView.
(Reducing the dimension by three.)
Definition at line 656 of file matpackIV.cc.
MatrixView Tensor4View::operator() | ( | Index | b, |
Index | p, | ||
const Range & | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type MatrixView.
(Reducing the dimension by two.)
Definition at line 619 of file matpackIV.cc.
VectorView Tensor4View::operator() | ( | Index | b, |
Index | p, | ||
const Range & | r, | ||
Index | c | ||
) |
Index operator returning an object of type VectorView.
(Reducing the dimension by three.)
Definition at line 673 of file matpackIV.cc.
VectorView Tensor4View::operator() | ( | Index | b, |
Index | p, | ||
Index | r, | ||
const Range & | c | ||
) |
Index operator returning an object of type VectorView.
Reducing the dimension by three.)
Definition at line 690 of file matpackIV.cc.
Plain non-const index operator.
Definition at line 331 of file matpackIV.h.
Tensor4View & Tensor4View::operator*= | ( | const ConstTensor4View & | x | ) |
Element-vise multiplication by another Tensor4.
Definition at line 811 of file matpackIV.cc.
References begin(), eb, end(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator*= | ( | Numeric | x | ) |
Multiplication by scalar.
Definition at line 775 of file matpackIV.cc.
References begin(), eb, end(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator+= | ( | const ConstTensor4View & | x | ) |
Element-vise addition of another Tensor4.
Definition at line 841 of file matpackIV.cc.
References begin(), eb, end(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator+= | ( | Numeric | x | ) |
Addition of scalar.
Definition at line 793 of file matpackIV.cc.
References begin(), eb, end(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator-= | ( | const ConstTensor4View & | x | ) |
Element-vise subtraction of another Tensor4.
Definition at line 856 of file matpackIV.cc.
References begin(), eb, end(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator-= | ( | Numeric | x | ) |
Subtraction of scalar.
Definition at line 802 of file matpackIV.cc.
References begin(), eb, end(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator/= | ( | const ConstTensor4View & | x | ) |
Element-vise division by another Tensor4.
Definition at line 826 of file matpackIV.cc.
References begin(), eb, end(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator/= | ( | Numeric | x | ) |
Division by scalar.
Definition at line 784 of file matpackIV.cc.
References begin(), eb, end(), and ARTS::Var::x().
Tensor4View & Tensor4View::operator= | ( | const ConstTensor4View & | m | ) |
Assignment operator.
This copies the data from another Tensor4View to this Tensor4View. Dimensions must agree! Resizing would destroy the selection that we might have done in this Tensor4View by setting its range.
Definition at line 723 of file matpackIV.cc.
References begin(), ConstTensor4View::begin(), copy(), ConstTensor4View::end(), ConstTensor4View::mbr, ConstTensor4View::mcr, Range::mextent, ConstTensor4View::mpr, and ConstTensor4View::mrr.
Tensor4View & Tensor4View::operator= | ( | const Tensor4 & | m | ) |
Assignment from a Tensor4.
This must exist to overide the automatically generated assignment operators, which don't copy the contents!
Definition at line 753 of file matpackIV.cc.
References begin(), copy(), end(), ConstTensor4View::mbr, ConstTensor4View::mcr, Range::mextent, ConstTensor4View::mpr, and ConstTensor4View::mrr.
Tensor4View & Tensor4View::operator= | ( | const Tensor4View & | m | ) |
Assignment from Tensor4View to Tensor4View.
This is a tricky one. The problem is that since Tensor4View is derived from ConstTensor4View, a default = operator is generated by the compiler, which does not do what we want. So we need this one to override the default.
Definition at line 739 of file matpackIV.cc.
References begin(), copy(), end(), ConstTensor4View::mbr, ConstTensor4View::mcr, Range::mextent, ConstTensor4View::mpr, and ConstTensor4View::mrr.
Tensor4View & Tensor4View::operator= | ( | Numeric | x | ) |
Assigning a scalar to a Tensor4View will set all elements to this value.
Definition at line 766 of file matpackIV.cc.
References begin(), copy(), end(), and ARTS::Var::x().
|
friend |
Definition at line 386 of file matpackIV.h.
|
friend |
Definition at line 387 of file matpackIV.h.
|
friend |
Definition at line 388 of file matpackIV.h.
|
friend |
Definition at line 389 of file matpackIV.h.