ARTS  2.4.0(git:4fb77825)
Tensor4View Class Reference

The Tensor4View class. More...

#include <matpackIV.h>

Inheritance diagram for Tensor4View:
ConstTensor4View Tensor4

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...
 
Numericoperator() (Index b, Index p, Index r, Index c)
 Plain non-const index operator. More...
 
Numericget (Index b, Index p, Index r, Index c)
 Get element implementation without assertions. More...
 
const Numericget_c_array () const
 Conversion to plain C-array. More...
 
Numericget_c_array ()
 Conversion to plain C-array. More...
 
Iterator4D begin ()
 Return iterator to first book. More...
 
Iterator4D end ()
 Return iterator behind last book. More...
 
Tensor4Viewoperator= (const ConstTensor4View &v)
 Assignment operator. More...
 
Tensor4Viewoperator= (const Tensor4View &v)
 Assignment from Tensor4View to Tensor4View. More...
 
Tensor4Viewoperator= (const Tensor4 &v)
 Assignment from a Tensor4. More...
 
Tensor4Viewoperator= (Numeric x)
 Assigning a scalar to a Tensor4View will set all elements to this value. More...
 
Tensor4Viewoperator*= (Numeric x)
 Multiplication by scalar. More...
 
Tensor4Viewoperator/= (Numeric x)
 Division by scalar. More...
 
Tensor4Viewoperator+= (Numeric x)
 Addition of scalar. More...
 
Tensor4Viewoperator-= (Numeric x)
 Subtraction of scalar. More...
 
Tensor4Viewoperator*= (const ConstTensor4View &x)
 Element-vise multiplication by another Tensor4. More...
 
Tensor4Viewoperator/= (const ConstTensor4View &x)
 Element-vise division by another Tensor4. More...
 
Tensor4Viewoperator+= (const ConstTensor4View &x)
 Element-vise addition of another Tensor4. More...
 
Tensor4Viewoperator-= (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
 
ConstTensor4Viewoperator= (const ConstTensor4View &)=default
 
ConstTensor4Viewoperator= (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...
 
Numericmdata {nullptr}
 Pointer to the plain C array that holds the data. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Tensor4View() [1/5]

constexpr Tensor4View::Tensor4View ( const Tensor4View )
constexprdefault

◆ ~Tensor4View()

virtual Tensor4View::~Tensor4View ( )
virtualdefault

Destructor.

◆ Tensor4View() [2/5]

Tensor4View::Tensor4View ( const Tensor3View a)

Special constructor to make a Tensor4 view of a Tensor3.

Definition at line 871 of file matpackIV.cc.

◆ Tensor4View() [3/5]

Tensor4View::Tensor4View ( )
protecteddefault

◆ Tensor4View() [4/5]

Tensor4View::Tensor4View ( Numeric data,
const Range br,
const Range pr,
const Range rr,
const Range cr 
)
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.

◆ Tensor4View() [5/5]

Tensor4View::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 
)
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.

Parameters
*dataThe actual data.
pbPrevious range.
ppPrevious range.
prPrevious range.
pcPrevious range.
nbNew Range.
npNew Range.
nrNew Range.
ncNew Range.

Definition at line 911 of file matpackIV.cc.

Member Function Documentation

◆ begin() [1/2]

◆ begin() [2/2]

ConstIterator4D ConstTensor4View::begin

Return const iterator to first book.

Definition at line 227 of file matpackIV.cc.

◆ end() [1/2]

◆ end() [2/2]

ConstIterator4D ConstTensor4View::end

Return const iterator behind last book.

Definition at line 228 of file matpackIV.cc.

◆ get() [1/2]

Numeric& Tensor4View::get ( Index  b,
Index  p,
Index  r,
Index  c 
)
inline

Get element implementation without assertions.

Definition at line 348 of file matpackIV.h.

◆ get() [2/2]

Numeric ConstTensor4View::get
inline

Get element implementation without assertions.

Definition at line 220 of file matpackIV.h.

◆ get_c_array() [1/2]

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.

◆ get_c_array() [2/2]

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().

◆ operator()() [1/16]

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.

◆ operator()() [2/16]

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.

◆ operator()() [3/16]

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.

◆ operator()() [4/16]

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.

◆ operator()() [5/16]

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.

◆ operator()() [6/16]

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.

◆ operator()() [7/16]

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.

◆ operator()() [8/16]

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.

◆ operator()() [9/16]

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.

◆ operator()() [10/16]

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.

◆ operator()() [11/16]

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.

◆ operator()() [12/16]

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.

◆ operator()() [13/16]

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.

◆ operator()() [14/16]

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.

◆ operator()() [15/16]

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.

◆ operator()() [16/16]

Numeric& Tensor4View::operator() ( Index  b,
Index  p,
Index  r,
Index  c 
)
inline

Plain non-const index operator.

Definition at line 331 of file matpackIV.h.

◆ operator*=() [1/2]

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().

◆ operator*=() [2/2]

Tensor4View & Tensor4View::operator*= ( Numeric  x)

Multiplication by scalar.

Definition at line 775 of file matpackIV.cc.

References begin(), eb, end(), and ARTS::Var::x().

◆ operator+=() [1/2]

Tensor4View & Tensor4View::operator+= ( const ConstTensor4View x)

◆ operator+=() [2/2]

Tensor4View & Tensor4View::operator+= ( Numeric  x)

Addition of scalar.

Definition at line 793 of file matpackIV.cc.

References begin(), eb, end(), and ARTS::Var::x().

◆ operator-=() [1/2]

Tensor4View & Tensor4View::operator-= ( const ConstTensor4View x)

◆ operator-=() [2/2]

Tensor4View & Tensor4View::operator-= ( Numeric  x)

Subtraction of scalar.

Definition at line 802 of file matpackIV.cc.

References begin(), eb, end(), and ARTS::Var::x().

◆ operator/=() [1/2]

Tensor4View & Tensor4View::operator/= ( const ConstTensor4View x)

◆ operator/=() [2/2]

Tensor4View & Tensor4View::operator/= ( Numeric  x)

Division by scalar.

Definition at line 784 of file matpackIV.cc.

References begin(), eb, end(), and ARTS::Var::x().

◆ operator=() [1/4]

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.

◆ operator=() [2/4]

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.

◆ operator=() [3/4]

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.

◆ operator=() [4/4]

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().

Friends And Related Function Documentation

◆ Iterator5D

friend class Iterator5D
friend

Definition at line 386 of file matpackIV.h.

◆ Tensor5View

friend class Tensor5View
friend

Definition at line 387 of file matpackIV.h.

◆ Tensor6View

friend class Tensor6View
friend

Definition at line 388 of file matpackIV.h.

◆ Tensor7View

friend class Tensor7View
friend

Definition at line 389 of file matpackIV.h.


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