Tensor3View Class Reference

The Tensor3View class. More...

#include <matpackIII.h>

Inheritance diagram for Tensor3View:

Inheritance graph
[legend]
Collaboration diagram for Tensor3View:

Collaboration graph
[legend]

List of all members.

Public Member Functions

ConstTensor3View operator() (const Range &p, const Range &r, const Range &c) const
 Const index operator for subrange.
ConstMatrixView operator() (const Range &p, const Range &r, Index c) const
 Const index operator returning an object of type ConstMatrixView.
ConstMatrixView operator() (const Range &p, Index r, const Range &c) const
 Const index operator returning an object of type ConstMatrixView.
ConstMatrixView operator() (Index p, const Range &r, const Range &c) const
 Const index operator returning an object of type ConstMatrixView.
ConstVectorView operator() (Index p, Index r, const Range &c) const
 Const index operator returning an object of type ConstVectorView.
ConstVectorView operator() (Index p, const Range &r, Index c) const
 Const index operator returning an object of type ConstVectorView.
ConstVectorView operator() (const Range &p, Index r, Index c) const
 Const index operator returning an object of type ConstVectorView.
Numeric operator() (Index p, Index r, Index c) const
 Plain const index operator.
Tensor3View operator() (const Range &p, const Range &r, const Range &c)
 Index operator for subrange.
MatrixView operator() (const Range &p, const Range &r, Index c)
 Index operator returning an object of type MatrixView.
MatrixView operator() (const Range &p, Index r, const Range &c)
 Index operator returning an object of type MatrixView.
MatrixView operator() (Index p, const Range &r, const Range &c)
 Index operator returning an object of type MatrixView.
VectorView operator() (Index p, Index r, const Range &c)
 Index operator returning an object of type VectorView.
VectorView operator() (Index p, const Range &r, Index c)
 Index operator returning an object of type VectorView.
VectorView operator() (const Range &p, Index r, Index c)
 Index operator returning an object of type VectorView.
Numericoperator() (Index p, Index r, Index c)
 Plain non-const index operator.
const Numericget_c_array () const
 Conversion to plain C-array.
Numericget_c_array ()
 Conversion to plain C-array.
ConstIterator3D begin () const
 Return const iterator to first row.
ConstIterator3D end () const
 Return const iterator behind last row.
Iterator3D begin ()
 Return iterator to first page.
Iterator3D end ()
 Return iterator behind last page.
Tensor3Viewoperator= (const ConstTensor3View &v)
 Assignment operator.
Tensor3Viewoperator= (const Tensor3View &v)
 Assignment from Tensor3View to Tensor3View.
Tensor3Viewoperator= (const Tensor3 &v)
 Assignment from a Tensor3.
Tensor3Viewoperator= (Numeric x)
 Assigning a scalar to a Tensor3View will set all elements to this value.
Tensor3Viewoperator*= (Numeric x)
 Multiplication by scalar.
Tensor3Viewoperator/= (Numeric x)
 Division by scalar.
Tensor3Viewoperator+= (Numeric x)
 Addition of scalar.
Tensor3Viewoperator-= (Numeric x)
 Subtraction of scalar.
Tensor3Viewoperator*= (const ConstTensor3View &x)
 Element-vise multiplication by another Tensor3.
Tensor3Viewoperator/= (const ConstTensor3View &x)
 Element-vise division by another Tensor3.
Tensor3Viewoperator+= (const ConstTensor3View &x)
 Element-vise addition of another Tensor3.
Tensor3Viewoperator-= (const ConstTensor3View &x)
 Element-vise subtraction of another Tensor3.
virtual ~Tensor3View ()
 Destructor.
 Tensor3View (const MatrixView &a)
 Special constructor to make a Tensor3 view of a matrix.

Protected Member Functions

 Tensor3View ()
 Default constructor.
 Tensor3View (Numeric *data, const Range &p, const Range &r, const Range &c)
 Explicit constructor.
 Tensor3View (Numeric *data, const Range &pp, const Range &pr, const Range &pc, const Range &np, const Range &nr, const Range &nc)
 Recursive constructor.

Friends

class Iterator4D
class Tensor4View
class Tensor5View
class Tensor6View
class Tensor7View


Detailed Description

The Tensor3View class.

This contains the main implementation of a Tensor3. It defines the concepts of Tensor3View. Plus additionally the recursive subrange operator, which makes it possible to create a Tensor3View from a subrange of a Tensor3View.

The class Tensor3 is just a special case of a Tensor3View which also allocates storage.

Definition at line 234 of file matpackIII.h.


Constructor & Destructor Documentation

virtual Tensor3View::~Tensor3View (  )  [inline, virtual]

Destructor.

Definition at line 311 of file matpackIII.h.

Tensor3View::Tensor3View ( const MatrixView a  ) 

Special constructor to make a Tensor3 view of a matrix.

Definition at line 664 of file matpackIII.cc.

Tensor3View::Tensor3View (  )  [protected]

Default constructor.

This is necessary, so that we can have a default constructor for the derived class Tensor3.

Definition at line 675 of file matpackIII.cc.

Referenced by operator()().

Tensor3View::Tensor3View ( Numeric data,
const Range pr,
const Range rr,
const Range cr 
) [protected]

Explicit constructor.

This one is used by Tensor3 to initialize its own Tensor3View part. The row range rr must have a stride to account for the length of one row.

Definition at line 684 of file matpackIII.cc.

Tensor3View::Tensor3View ( Numeric data,
const Range pp,
const Range pr,
const Range pc,
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:
*data The actual data.
pp Previous range.
pr Previous range.
pc Previous range.
np New Range.
nr New Range.
nc New Range.

Definition at line 709 of file matpackIII.cc.


Member Function Documentation

ConstTensor3View Tensor3View::operator() ( const Range p,
const Range r,
const Range c 
) const

Const index operator for subrange.

We have to also account for the case, that *this is already a subrange of a Tensor3. This allows correct recursive behavior. Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 247 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstMatrixView Tensor3View::operator() ( const Range p,
const Range r,
Index  c 
) const

Const index operator returning an object of type ConstMatrixView.

(Reducing the dimension by one.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 258 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstMatrixView Tensor3View::operator() ( const Range p,
Index  r,
const Range c 
) const

Const index operator returning an object of type ConstMatrixView.

(Reducing the dimension by one.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 269 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstMatrixView Tensor3View::operator() ( Index  p,
const Range r,
const Range c 
) const

Const index operator returning an object of type ConstMatrixView.

(Reducing the dimension by one.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 280 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstVectorView Tensor3View::operator() ( Index  p,
Index  r,
const Range c 
) const

Const index operator returning an object of type ConstVectorView.

(Reducing the dimension by two.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 291 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstVectorView Tensor3View::operator() ( Index  p,
const Range r,
Index  c 
) const

Const index operator returning an object of type ConstVectorView.

(Reducing the dimension by two.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 302 of file matpackIII.cc.

References ConstTensor3View::operator()().

ConstVectorView Tensor3View::operator() ( const Range p,
Index  r,
Index  c 
) const

Const index operator returning an object of type ConstVectorView.

(Reducing the dimension by two.) Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 313 of file matpackIII.cc.

References ConstTensor3View::operator()().

Numeric Tensor3View::operator() ( Index  p,
Index  r,
Index  c 
) const [inline]

Plain const index operator.

Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 250 of file matpackIII.h.

References ConstTensor3View::operator()().

Tensor3View Tensor3View::operator() ( 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 Tensor3. This allows correct recursive behavior.

Definition at line 324 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, ConstTensor3View::mpr, ConstTensor3View::mrr, and Tensor3View().

MatrixView Tensor3View::operator() ( const Range p,
const Range r,
Index  c 
)

Index operator returning an object of type MatrixView.

(Reducing the dimension by one.)

Definition at line 333 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

MatrixView Tensor3View::operator() ( const Range p,
Index  r,
const Range c 
)

Index operator returning an object of type MatrixView.

(Reducing the dimension by one.)

Definition at line 348 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

MatrixView Tensor3View::operator() ( Index  p,
const Range r,
const Range c 
)

Index operator returning an object of type MatrixView.

(Reducing the dimension by one.)

Definition at line 363 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

VectorView Tensor3View::operator() ( Index  p,
Index  r,
const Range c 
)

Index operator returning an object of type VectorView.

(Reducing the dimension by two.)

Definition at line 378 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

VectorView Tensor3View::operator() ( Index  p,
const Range r,
Index  c 
)

Index operator returning an object of type VectorView.

(Reducing the dimension by two.)

Definition at line 396 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

VectorView Tensor3View::operator() ( const Range p,
Index  r,
Index  c 
)

Index operator returning an object of type VectorView.

(Reducing the dimension by two.)

Definition at line 414 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

Numeric& Tensor3View::operator() ( Index  p,
Index  r,
Index  c 
) [inline]

const Numeric * Tensor3View::get_c_array (  )  const

Conversion to plain C-array.

This function returns a pointer to the raw data. It fails if the Tensor3View is not pointing to the beginning of a Tensor3 or the stride is not 1 because the caller expects to get a C array with continuous data.

Definition at line 452 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

Referenced by nc_read_from_file(), nc_write_to_file(), and test38().

Numeric * Tensor3View::get_c_array (  ) 

Conversion to plain C-array.

This function returns a pointer to the raw data. It fails if the Tensor3View is not pointing to the beginning of a Tensor3 or the stride is not 1 because the caller expects to get a C array with continuous data.

Definition at line 436 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, Range::mextent, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

ConstIterator3D Tensor3View::begin (  )  const

Return const iterator to first row.

Has to be redefined here, since it is hiden by the non-const operator of the derived class.

Reimplemented from ConstTensor3View.

Definition at line 464 of file matpackIII.cc.

References ConstTensor3View::begin().

Referenced by operator*=(), operator+=(), operator-=(), operator/=(), Tensor3::operator=(), operator=(), Tensor3::Tensor3(), and transform().

ConstIterator3D Tensor3View::end (  )  const

Return const iterator behind last row.

Reimplemented from ConstTensor3View.

Definition at line 470 of file matpackIII.cc.

References ConstTensor3View::end().

Referenced by operator*=(), operator+=(), operator-=(), operator/=(), Tensor3::operator=(), operator=(), and Tensor3::Tensor3().

Iterator3D Tensor3View::begin (  ) 

Return iterator to first page.

Definition at line 476 of file matpackIII.cc.

References ConstTensor3View::mcr, ConstTensor3View::mdata, ConstTensor3View::mpr, ConstTensor3View::mrr, Range::mstart, and Range::mstride.

Iterator3D Tensor3View::end (  ) 

Tensor3View & Tensor3View::operator= ( const ConstTensor3View m  ) 

Assignment operator.

This copies the data from another Tensor3View to this Tensor3View. Dimensions must agree! Resizing would destroy the selection that we might have done in this Tensor3View by setting its range.

Definition at line 498 of file matpackIII.cc.

References begin(), ConstTensor3View::begin(), copy(), ConstTensor3View::end(), ConstTensor3View::mcr, Range::mextent, ConstTensor3View::mpr, and ConstTensor3View::mrr.

Tensor3View & Tensor3View::operator= ( const Tensor3View m  ) 

Assignment from Tensor3View to Tensor3View.

This is a tricky one. The problem is that since Tensor3View is derived from ConstTensor3View, 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 514 of file matpackIII.cc.

References begin(), copy(), end(), ConstTensor3View::mcr, Range::mextent, ConstTensor3View::mpr, and ConstTensor3View::mrr.

Tensor3View & Tensor3View::operator= ( const Tensor3 m  ) 

Assignment from a Tensor3.

This must exist to overide the automatically generated assignment operators, which don't copy the contents!

Reimplemented in Tensor3.

Definition at line 528 of file matpackIII.cc.

References begin(), copy(), end(), ConstTensor3View::mcr, Range::mextent, ConstTensor3View::mpr, and ConstTensor3View::mrr.

Tensor3View & Tensor3View::operator= ( Numeric  x  ) 

Assigning a scalar to a Tensor3View will set all elements to this value.

Reimplemented in GField3, and Tensor3.

Definition at line 541 of file matpackIII.cc.

References begin(), copy(), and end().

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

Multiplication by scalar.

Definition at line 556 of file matpackIII.cc.

References begin(), and end().

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

Division by scalar.

Definition at line 567 of file matpackIII.cc.

References begin(), and end().

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

Addition of scalar.

Definition at line 578 of file matpackIII.cc.

References begin(), and end().

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

Subtraction of scalar.

Definition at line 589 of file matpackIII.cc.

References begin(), and end().

Tensor3View & Tensor3View::operator*= ( const ConstTensor3View x  ) 

Element-vise multiplication by another Tensor3.

Definition at line 600 of file matpackIII.cc.

References begin(), ConstTensor3View::begin(), end(), ConstTensor3View::ncols(), ConstTensor3View::npages(), and ConstTensor3View::nrows().

Tensor3View & Tensor3View::operator/= ( const ConstTensor3View x  ) 

Element-vise division by another Tensor3.

Definition at line 616 of file matpackIII.cc.

References begin(), ConstTensor3View::begin(), end(), ConstTensor3View::ncols(), ConstTensor3View::npages(), and ConstTensor3View::nrows().

Tensor3View & Tensor3View::operator+= ( const ConstTensor3View x  ) 

Element-vise addition of another Tensor3.

Definition at line 632 of file matpackIII.cc.

References begin(), ConstTensor3View::begin(), end(), ConstTensor3View::ncols(), ConstTensor3View::npages(), and ConstTensor3View::nrows().

Tensor3View & Tensor3View::operator-= ( const ConstTensor3View x  ) 

Element-vise subtraction of another Tensor3.

Definition at line 648 of file matpackIII.cc.

References begin(), ConstTensor3View::begin(), end(), ConstTensor3View::ncols(), ConstTensor3View::npages(), and ConstTensor3View::nrows().


Friends And Related Function Documentation

friend class Iterator4D [friend]

Definition at line 311 of file matpackIII.h.

friend class Tensor4View [friend]

Definition at line 315 of file matpackIII.h.

friend class Tensor5View [friend]

Definition at line 316 of file matpackIII.h.

friend class Tensor6View [friend]

Definition at line 317 of file matpackIII.h.

friend class Tensor7View [friend]

Definition at line 318 of file matpackIII.h.


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

Generated on Mon Mar 23 14:07:03 2009 for ARTS by  doxygen 1.5.6