SLIP  1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Friends | Related Functions | List of all members
slip::Volume< T > Class Template Reference

Numerical volume class This is a two-dimensional dynamic and generic container. This container statisfies the BidirectionnalContainer concepts of the STL. It is also an 3d extension of the RandomAccessContainer concept. That is to say the bracket element access is replaced by the triple bracket element access. Data are stored using a Matrix3d class. It extends the interface of Matrix3d adding image read/write operations. These operations are done using the ImageMagick library. More...

#include <Volume.hpp>

Public Types

typedef T value_type
 
typedef Volume< T > self
 
typedef value_typepointer
 
typedef const value_typeconst_pointer
 
typedef value_typereference
 
typedef const value_typeconst_reference
 
typedef ptrdiff_t difference_type
 
typedef std::size_t size_type
 
typedef pointer iterator
 
typedef const_pointer const_iterator
 
typedef std::reverse_iterator
< iterator
reverse_iterator
 
typedef std::reverse_iterator
< const_iterator
const_reverse_iterator
 
typedef slip::stride_iterator
< pointer
slice_iterator
 
typedef slip::stride_iterator
< const_pointer
const_slice_iterator
 
typedef pointer row_iterator
 
typedef const_pointer const_row_iterator
 
typedef slip::stride_iterator
< pointer
col_iterator
 
typedef slip::stride_iterator
< const_pointer
const_col_iterator
 
typedef slip::stride_iterator
< slice_iterator
slice_range_iterator
 
typedef slip::stride_iterator
< const_slice_iterator
const_slice_range_iterator
 
typedef slip::stride_iterator
< pointer
row_range_iterator
 
typedef slip::stride_iterator
< const_pointer
const_row_range_iterator
 
typedef slip::stride_iterator
< col_iterator
col_range_iterator
 
typedef slip::stride_iterator
< const_col_iterator
const_col_range_iterator
 
typedef std::reverse_iterator
< slice_range_iterator
reverse_slice_range_iterator
 
typedef std::reverse_iterator
< const_slice_range_iterator
const_reverse_slice_range_iterator
 
typedef std::reverse_iterator
< slice_iterator
reverse_slice_iterator
 
typedef std::reverse_iterator
< const_slice_iterator
const_reverse_slice_iterator
 
typedef std::reverse_iterator
< iterator
reverse_row_iterator
 
typedef std::reverse_iterator
< const_iterator
const_reverse_row_iterator
 
typedef std::reverse_iterator
< col_iterator
reverse_col_iterator
 
typedef std::reverse_iterator
< const_col_iterator
const_reverse_col_iterator
 
typedef std::reverse_iterator
< row_range_iterator
reverse_row_range_iterator
 
typedef std::reverse_iterator
< const_row_range_iterator
const_reverse_row_range_iterator
 
typedef std::reverse_iterator
< col_range_iterator
reverse_col_range_iterator
 
typedef std::reverse_iterator
< const_col_range_iterator
const_reverse_col_range_iterator
 
typedef slip::Array3d< T >
::iterator2d 
iterator2d
 
typedef slip::Array3d< T >
::const_iterator2d 
const_iterator2d
 
typedef std::reverse_iterator
< iterator2d
reverse_iterator2d
 
typedef std::reverse_iterator
< const_iterator2d
const_reverse_iterator2d
 
typedef slip::Array3d< T >
::iterator3d 
iterator3d
 
typedef slip::Array3d< T >
::const_iterator3d 
const_iterator3d
 
typedef slip::Array3d< T >
::iterator3d_range 
iterator3d_range
 
typedef slip::Array3d< T >
::const_iterator3d_range 
const_iterator3d_range
 
typedef std::reverse_iterator
< iterator3d
reverse_iterator3d
 
typedef std::reverse_iterator
< const_iterator3d
const_reverse_iterator3d
 
typedef std::reverse_iterator
< iterator3d_range
reverse_iterator3d_range
 
typedef std::reverse_iterator
< const_iterator3d_range
const_reverse_iterator3d_range
 
typedef iterator3d default_iterator
 
typedef const_iterator3d const_default_iterator
 

Public Member Functions

void resize (std::size_t d1, std::size_t d2, std::size_t d3, const T &val=T())
 Resizes a Volume. More...
 
std::string name () const
 Returns the name of the class. More...
 
size_type dim1 () const
 Returns the number of slices (first dimension size) in the Volume. More...
 
size_type slices () const
 Returns the number of slices (first dimension size) in the Volume. More...
 
size_type dim2 () const
 Returns the number of rows (second dimension size) in the Volume. More...
 
size_type rows () const
 Returns the number of rows (second dimension size) in the Volume. More...
 
size_type dim3 () const
 Returns the number of columns (third dimension size) in the Volume. More...
 
size_type cols () const
 Returns the number of columns (third dimension size) in the Volume. More...
 
size_type columns () const
 Returns the number of columns (third dimension size) in the Volume. More...
 
size_type size () const
 Returns the number of elements in the Volume. More...
 
size_type max_size () const
 Returns the maximal size (number of elements) in the Volume. More...
 
size_type slice_size () const
 Returns the number of elements in a slice of the Volume. More...
 
bool empty () const
 Returns true if the Volume is empty. (Thus size() == 0) More...
 
void swap (Volume &M)
 Swaps data with another Volume. More...
 
template<typename T>
 Volume (const typename Volume< T >::size_type d1, const typename Volume< T >::size_type d2, const typename Volume< T >::size_type d3)
 
template<typename T>
 Volume (const typename Volume< T >::size_type d1, const typename Volume< T >::size_type d2, const typename Volume< T >::size_type d3, const T &val)
 
template<typename T>
 Volume (const typename Volume< T >::size_type d1, const typename Volume< T >::size_type d2, const typename Volume< T >::size_type d3, const T *val)
 
Constructors & Destructors
 Volume ()
 Constructs a Volume. More...
 
 Volume (const std::size_t d1, const std::size_t d2, const std::size_t d3)
 Constructs a Volume. More...
 
 Volume (const std::size_t d1, const std::size_t d2, const std::size_t d3, const T &val)
 Constructs a Volume initialized by the scalar value val. More...
 
 Volume (const std::size_t d1, const std::size_t d2, const std::size_t d3, const T *val)
 Constructs a Volume initialized by an array val. More...
 
template<typename InputIterator >
 Volume (const size_type d1, const size_type d2, const size_type d3, InputIterator first, InputIterator last)
 Contructs a Volume from a range. More...
 
 Volume (const Volume< T > &rhs)
 Constructs a copy of the Volume rhs. More...
 
 ~Volume ()
 Destructor of the Volume. More...
 
One dimensional global iterators
const_iterator begin () const
 Returns a read-only (constant) iterator that points to the first element in the Volume. Iteration is done in ordinary element order. More...
 
iterator begin ()
 Returns a read/write iterator that points to the first element in the Volume. Iteration is done in ordinary element order. More...
 
iterator end ()
 Returns a read/write iterator that points one past the last element in the Volume. Iteration is done in ordinary element order. More...
 
const_iterator end () const
 Returns a read-only (constant) iterator that points one past the last element in the Volume. Iteration is done in ordinary element order. More...
 
reverse_iterator rbegin ()
 Returns a read/write reverse iterator that points to the last element in the Volume. Iteration is done in reverse element order. More...
 
const_reverse_iterator rbegin () const
 Returns a read-only (constant) reverse iterator that points to the last element in the Volume. Iteration is done in reverse element order. More...
 
reverse_iterator rend ()
 Returns a read/write reverse iterator that points to one before the first element in the Volume. Iteration is done in reverse element order. More...
 
const_reverse_iterator rend () const
 Returns a read-only (constant) reverse iterator that points to one before the first element in the Volume. Iteration is done in reverse element order. More...
 
One dimensional slice iterators
slice_iterator slice_begin (const size_type row, const size_type col)
 Returns a read/write iterator that points to the first element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number). More...
 
const_slice_iterator slice_begin (const size_type row, const size_type col) const
 Returns a read-only (constant) iterator that points to the first element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number). More...
 
slice_iterator slice_end (const size_type row, const size_type col)
 Returns a read/write iterator that points to the one past the end element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number). More...
 
const_slice_iterator slice_end (const size_type row, const size_type col) const
 Returns a read-only (constant) iterator that points to the one past the end element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number). More...
 
reverse_slice_iterator slice_rbegin (const size_type row, const size_type col)
 Returns a read/write iterator that points to the last element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number). More...
 
const_reverse_slice_iterator slice_rbegin (const size_type row, const size_type col) const
 Returns a read-only (constant) iterator that points to the last element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number). More...
 
reverse_slice_iterator slice_rend (const size_type row, const size_type col)
 Returns a read/write iterator that points to the one before the first element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number). More...
 
const_reverse_slice_iterator slice_rend (const size_type row, const size_type col) const
 Returns a read (constant) iterator that points to the one before the first element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number). More...
 
One dimensional row iterators
row_iterator row_begin (const size_type slice, const size_type row)
 Returns a read/write iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order. More...
 
const_row_iterator row_begin (const size_type slice, const size_type row) const
 Returns a read_only iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order. More...
 
row_iterator row_end (const size_type slice, const size_type row)
 Returns a read/write iterator that points to the past-the-end element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order. More...
 
const_row_iterator row_end (const size_type slice, const size_type row) const
 Returns a read_only iterator that points to the past-the-end element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order. More...
 
reverse_row_iterator row_rbegin (const size_type slice, const size_type row)
 Returns a read/write reverse iterator that points to the last element of the row row of the slice slice in the Volume. Iteration is done in reverse element order. More...
 
const_reverse_row_iterator row_rbegin (const size_type slice, const size_type row) const
 Returns a read_only reverse iterator that points to the last element of the row row of the slice slice in the Volume. Iteration is done in reverse element order. More...
 
reverse_row_iterator row_rend (const size_type slice, const size_type row)
 Returns a read/write reverse iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in reverse element order. More...
 
const_reverse_row_iterator row_rend (const size_type slice, const size_type row) const
 Returns a read_only reverse iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in reverse element order. More...
 
One dimensional col iterators
col_iterator col_begin (const size_type slice, const size_type col)
 Returns a read/write iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
const_col_iterator col_begin (const size_type slice, const size_type col) const
 Returns a read_only iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
col_iterator col_end (const size_type slice, const size_type col)
 Returns a read/write iterator that points to the past-the-end element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
const_col_iterator col_end (const size_type slice, const size_type col) const
 Returns a read_only iterator that points to the past-the-end element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
reverse_col_iterator col_rbegin (const size_type slice, const size_type col)
 Returns a read/write reverse iterator that points to the last element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
const_reverse_col_iterator col_rbegin (const size_type slice, const size_type col) const
 Returns a read_only reverse iterator that points to the last element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
reverse_col_iterator col_rend (const size_type slice, const size_type col)
 Returns a read/write reverse iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
const_reverse_col_iterator col_rend (const size_type slice, const size_type col) const
 Returns a read_only reverse iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns. More...
 
One dimensional slice range iterators
slice_range_iterator slice_begin (const size_type row, const size_type col, const slip::Range< int > &range)
 Returns a read/write iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
slice_range_iterator slice_end (const size_type row, const size_type col, const slip::Range< int > &range)
 Returns a read/write iterator that points one past the end element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_slice_range_iterator slice_begin (const size_type row, const size_type col, const slip::Range< int > &range) const
 Returns a read only (constant) iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_slice_range_iterator slice_end (const size_type row, const size_type col, const slip::Range< int > &range) const
 Returns a read_only iterator that points one past the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
reverse_slice_range_iterator slice_rbegin (const size_type row, const size_type col, const slip::Range< int > &range)
 Returns a read/write iterator that points to the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
reverse_slice_range_iterator slice_rend (const size_type row, const size_type col, const slip::Range< int > &range)
 Returns a read/write iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range. More...
 
const_reverse_slice_range_iterator slice_rbegin (const size_type row, const size_type col, const slip::Range< int > &range) const
 Returns a read only (constant) iterator that points to the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range. More...
 
const_reverse_slice_range_iterator slice_rend (const size_type row, const size_type col, const slip::Range< int > &range) const
 Returns a read_only iterator that points one past the lastto the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range. More...
 
One dimensional row range iterators
row_range_iterator row_begin (const size_type slice, const size_type row, const slip::Range< int > &range)
 Returns a read/write iterator that points to the first element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
row_range_iterator row_end (const size_type slice, const size_type row, const slip::Range< int > &range)
 Returns a read/write iterator that points one past the end element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_row_range_iterator row_begin (const size_type slice, const size_type row, const slip::Range< int > &range) const
 Returns a read-only iterator that points to the first element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_row_range_iterator row_end (const size_type slice, const size_type row, const slip::Range< int > &range) const
 Returns a read_only iterator that points one past the last element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
reverse_row_range_iterator row_rbegin (const size_type slice, const size_type row, const slip::Range< int > &range)
 Returns a read-write iterator that points to the last element of the Range range of the row of a slice row and slice in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
reverse_row_range_iterator row_rend (const size_type slice, const size_type row, const slip::Range< int > &range)
 Returns a read-write iterator that points one before the first element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
const_reverse_row_range_iterator row_rbegin (const size_type slice, const size_type row, const slip::Range< int > &range) const
 Returns a read-only iterator that points to the last element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
const_reverse_row_range_iterator row_rend (const size_type slice, const size_type row, const slip::Range< int > &range) const
 Returns a read-only iterator that points one before the first element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
One dimensional col range iterators
col_range_iterator col_begin (const size_type slice, const size_type col, const slip::Range< int > &range)
 Returns a read-write iterator that points to the first element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
col_range_iterator col_end (const size_type slice, const size_type col, const slip::Range< int > &range)
 Returns a read-write iterator that points to the past the end element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_col_range_iterator col_begin (const size_type slice, const size_type col, const slip::Range< int > &range) const
 Returns a read-only iterator that points to the first element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
const_col_range_iterator col_end (const size_type slice, const size_type col, const slip::Range< int > &range) const
 Returns a read-only iterator that points to the past the end element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range. More...
 
reverse_col_range_iterator col_rbegin (const size_type slice, const size_type col, const slip::Range< int > &range)
 Returns a read-write iterator that points to the last element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
reverse_col_range_iterator col_rend (const size_type slice, const size_type col, const slip::Range< int > &range)
 Returns a read-write iterator that points to one before the first element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
const_reverse_col_range_iterator col_rbegin (const size_type slice, const size_type col, const slip::Range< int > &range) const
 Returns a read_only iterator that points to the last element of the Range & range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
const_reverse_col_range_iterator col_rend (const size_type slice, const size_type col, const slip::Range< int > &range) const
 Returns a read-only iterator that points to the first element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range. More...
 
One dimensional global plane iterators
iterator plane_begin (const size_type slice)
 Returns a read/write iterator that points to the first element in the in the slice plane of the Volume. Iteration is done in ordinary element order. More...
 
const_iterator plane_begin (const size_type slice) const
 Returns a read-only (constant) iterator that points to the first element in the slice plane of the Volume. Iteration is done in ordinary element order. More...
 
iterator plane_end (const size_type slice)
 Returns a read/write iterator that points one past the last element in the slice plane of the Volume. Iteration is done in ordinary element order. More...
 
const_iterator plane_end (const size_type slice) const
 Returns a read-only (constant) iterator that points one past the last element in the slice plane of the Volume. Iteration is done in ordinary element order. More...
 
reverse_iterator plane_rbegin (const size_type slice)
 Returns a read/write reverse iterator that points to the last element in the slice plane of the Volume. Iteration is done in reverse element order. More...
 
const_reverse_iterator plane_rbegin (const size_type slice) const
 Returns a read-only (constant) reverse iterator that points to the last element in the slice plane k of the Volume. Iteration is done in reverse element order. More...
 
reverse_iterator plane_rend (const size_type slice)
 Returns a read/write reverse iterator that points to one before the first element in the slice plane of the Volume. Iteration is done in reverse element order. More...
 
const_reverse_iterator plane_rend (const size_type slice) const
 Returns a read-only (constant) reverse iterator that points to one before the first element in the slice plane of the Volume. Iteration is done in reverse element order. More...
 
two dimensionnal plane iterators : Global iterators
iterator2d plane_upper_left (PLANE_ORIENTATION P, const size_type plane_coordinate)
 Returns a read/write iterator that points to the first element of the plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order. More...
 
iterator2d plane_bottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate)
 Returns a read/write iterator that points to the last element of the plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order. More...
 
const_iterator2d plane_upper_left (PLANE_ORIENTATION P, const size_type plane_coordinate) const
 Returns a read/write const iterator that points to the first element of the plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order. More...
 
const_iterator2d plane_bottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate) const
 Returns a read/write const iterator that points to the last element of the plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order. More...
 
reverse_iterator2d plane_rupper_left (PLANE_ORIENTATION P, const size_type plane_coordinate)
 Returns a read/write reverse_iterator that points to the bottom right element of the plane in the Volume. Iteration is done in backward element order. More...
 
reverse_iterator2d plane_rbottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate)
 Returns a read/write reverse_iterator that points to the upper left element of the plane in the Volume. Iteration is done in backward element order. More...
 
const_reverse_iterator2d plane_rupper_left (PLANE_ORIENTATION P, const size_type plane_coordinate) const
 Returns a read/write const reverse iterator that points to the bottom right element of the plane in the Volume. Iteration is done in backward element order. More...
 
const_reverse_iterator2d plane_rbottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate) const
 Returns a read/write const reverse iterator that points to the upper left element of the plane in the Volume. Iteration is done in backward element order. More...
 
two dimensionnal plane iterators : box iterators
iterator2d plane_upper_left (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b)
 Returns a read/write iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the box Iteration is done in ordinary element order. More...
 
iterator2d plane_bottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b)
 Returns a read/write iterator that points to the last element of a box within a plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order. More...
 
const_iterator2d plane_upper_left (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b) const
 Returns a read/write const iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order. More...
 
const_iterator2d plane_bottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b) const
 Returns a read/write const iterator that points to the last element of a box within a plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order. More...
 
reverse_iterator2d plane_rupper_left (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b)
 Returns a read/write reverse iterator that points to the last element of a box within a plane in the Volume. It points to the bottom right element of the box Iteration is done in backward element order. More...
 
reverse_iterator2d plane_rbottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b)
 Returns a read/write reverse iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the plane Iteration is done in backward element order. More...
 
const_reverse_iterator2d plane_rupper_left (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b) const
 Returns a read/write const reverse iterator that points to the last element of a box within a plane in the Volume. It points to the bottom right element of the plane Iteration is done in backward element order. More...
 
const_reverse_iterator2d plane_rbottom_right (PLANE_ORIENTATION P, const size_type plane_coordinate, const Box2d< int > &b) const
 Returns a read/write const reverse iterator that points to the first element of a box within a plane in the Volume. It points to the bottom right element of the plane Iteration is done in backward element order. More...
 
three dimensionnal iterators : Global iterators
iterator3d front_upper_left ()
 Returns a read/write iterator3d that points to the first element of the Volume. It points to the front upper left element of the Volume. More...
 
iterator3d back_bottom_right ()
 Returns a read/write iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Volume. More...
 
const_iterator3d front_upper_left () const
 Returns a read-only iterator3d that points to the first element of the Volume. It points to the front upper left element of the Volume. More...
 
const_iterator3d back_bottom_right () const
 Returns a read-only iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Volume. More...
 
reverse_iterator3d rfront_upper_left ()
 Returns a read/write reverse iterator3d. It points to the back bottom right element of the Volume. Iteration is done within the Volume in the reverse order. More...
 
reverse_iterator3d rback_bottom_right ()
 Returns a read/write reverse iterator3d. It points to past the front upper left element of the Volume. Iteration is done in the reverse order. More...
 
const_reverse_iterator3d rfront_upper_left () const
 Returns a read only reverse iterator3d that points. It points to the back bottom right element of the Volume. Iteration is done within the Volume in the reverse order. More...
 
const_reverse_iterator3d rback_bottom_right () const
 Returns a read only reverse iterator3d. It points to past the front upper left element of the Volume. Iteration is done in the reverse order. More...
 
three dimensionnal iterators : Box iterators
iterator3d front_upper_left (const Box3d< int > &box)
 Returns a read/write iterator3d that points to the first element of the Volume. It points to the front upper left element of the Box3d associated to the Volume. More...
 
iterator3d back_bottom_right (const Box3d< int > &box)
 Returns a read/write iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Box3d associated to the Volume. More...
 
const_iterator3d front_upper_left (const Box3d< int > &box) const
 Returns a read only iterator3d that points to the first element of the Volume. It points to the front upper left element of the Box3d associated to the Volume. More...
 
const_iterator3d back_bottom_right (const Box3d< int > &box) const
 Returns a read only iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Box3d associated to the Volume. More...
 
reverse_iterator3d rfront_upper_left (const Box3d< int > &box)
 Returns a read/write reverse iterator3d. It points to the back bottom right element of the Box3d associated to the Volume. Iteration is done in the reverse order. More...
 
reverse_iterator3d rback_bottom_right (const Box3d< int > &box)
 Returns a read/write reverse iterator3d. It points to one before the front upper left element of the Box3d box associated to the Volume. More...
 
const_reverse_iterator3d rfront_upper_left (const Box3d< int > &box) const
 Returns a read only reverse iterator3d. It points to the back bottom right element of the Box3d box associated to the Volume. Iteration is done in the reverse order. More...
 
const_reverse_iterator3d rback_bottom_right (const Box3d< int > &box) const
 Returns a read-only reverse iterator3d. It points to one before the front element of the bottom right element of the Box3d box associated to the Volume. More...
 
three dimensionnal iterators : Range iterators
iterator3d_range front_upper_left (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range)
 Returns a read/write iterator3d_range that points to the front upper left element of the ranges slice_range, row_range and col_range associated to the Volume. More...
 
iterator3d_range back_bottom_right (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range)
 Returns a read/write iterator3d_range that points to the past the end back bottom right element of the ranges slice_range, row_range and col_range associated to the Volume. More...
 
const_iterator3d_range front_upper_left (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range) const
 Returns a read-only iterator3d_range that points to the to the front upper left element of the ranges slice_range, row_range and col_range associated to the Volume. More...
 
const_iterator3d_range back_bottom_right (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range) const
 Returns a read-only iterator3d_range that points to the past the end back bottom right element of the ranges slice_range, row_range and col_range associated to the Volume. More...
 
reverse_iterator3d_range rfront_upper_left (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range)
 Returns a read/write reverse_iterator3d_range that points to the past the back bottom right element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order. More...
 
reverse_iterator3d_range rback_bottom_right (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range)
 Returns a read/write reverse_iterator3d_range that points to one before the front upper left element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order. More...
 
const_reverse_iterator3d_range rfront_upper_left (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range) const
 Returns a read-only reverse_iterator3d_range that points to the past the back bottom right element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order. More...
 
const_reverse_iterator3d_range rback_bottom_right (const Range< int > &slice_range, const Range< int > &row_range, const Range< int > &col_range) const
 Returns a read-only reverse_iterator3d_range that points to one before the front upper left element of the ranges row_range and col_range associated to the Volume.Iteration is done in the reverse order. More...
 
Assignment operators and methods
selfoperator= (const Volume< T > &rhs)
 Assign a Volume. More...
 
selfoperator= (const T &value)
 Assign all the elments of the Volume by value. More...
 
void fill (const T &value)
 Fills the container range [begin(),begin()+size()) with copies of value. More...
 
void fill (const T *value)
 Fills the container range [begin(),begin()+size()) with a copy of the value array. More...
 
template<typename InputIterator >
void fill (InputIterator first, InputIterator last)
 Fills the container range [begin(),begin()+size()) with a copy of the range [first,last) More...
 
Element access operators
T ** operator[] (const size_type k)
 
const T *const * operator[] (const size_type k) const
 
reference operator() (const size_type k, const size_type i, const size_type j)
 Subscript access to the data contained in the Volume. More...
 
const_reference operator() (const size_type k, const size_type i, const size_type j) const
 Subscript access to the data contained in the Volume. More...
 
Arithmetic operators
selfoperator+= (const T &val)
 Add val to each element of the Volume. More...
 
selfoperator-= (const T &val)
 
selfoperator*= (const T &val)
 
selfoperator/= (const T &val)
 
self operator- () const
 
selfoperator+= (const self &rhs)
 
selfoperator-= (const self &rhs)
 
selfoperator*= (const self &rhs)
 
selfoperator/= (const self &rhs)
 
Mathematic operators
T & min () const
 Returns the min element of the Volume according to the operator <. More...
 
T & max () const
 Returns the max element of the Volume according to the operator <. More...
 
sum () const
 Returns the sum of the elements of the Volume. More...
 
Volume< T > & apply (T(*fun)(T))
 Applys the one-parameter C-function fun to each element of the Volume. More...
 
Volume< T > & apply (T(*fun)(const T &))
 Applys the one-parameter C-function fun to each element of the Volume. More...
 

Static Public Attributes

static const std::size_t DIM = 3
 

Friends

class boost::serialization::access
 
Comparison operators
bool operator== (const Volume< T > &x, const Volume< T > &y)
 Volume equality comparison More...
 
bool operator!= (const Volume< T > &x, const Volume< T > &y)
 Volume inequality comparison More...
 
bool operator< (const Volume< T > &x, const Volume< T > &y)
 Less than comparison operator (Volume ordering relation) More...
 
bool operator> (const Volume< T > &x, const Volume< T > &y)
 More than comparison operator. More...
 
bool operator<= (const Volume< T > &x, const Volume< T > &y)
 Less than equal comparison operator. More...
 
bool operator>= (const Volume< T > &x, const Volume< T > &y)
 More than equal comparison operator. More...
 

Related Functions

(Note that these are not member functions.)

template<typename T >
T & min (const Volume< T > &M1)
 Returns the min element of a Volume. More...
 
template<typename T >
T & max (const Volume< T > &M1)
 Returns the max element of a Volume. More...
 
template<typename T >
Volume< T > abs (const Volume< T > &V)
 Returns the abs value of each element of the Volume. More...
 
template<typename T >
Volume< T > sqrt (const Volume< T > &V)
 Returns the sqrt value of each element of the Volume. More...
 
template<typename T >
Volume< T > cos (const Volume< T > &V)
 Returns the cos value of each element of the Volume. More...
 
template<typename T >
Volume< T > acos (const Volume< T > &V)
 Returns the acos value of each element of the Volume. More...
 
template<typename T >
Volume< T > sin (const Volume< T > &V)
 Returns the sin value of each element of the Volume. More...
 
template<typename T >
Volume< T > asin (const Volume< T > &V)
 Returns the sin value of each element of the Volume. More...
 
template<typename T >
Volume< T > tan (const Volume< T > &V)
 Returns the tan value of each element of the Volume. More...
 
template<typename T >
Volume< T > atan (const Volume< T > &V)
 Returns the atan value of each element of the Volume. More...
 
template<typename T >
Volume< T > exp (const Volume< T > &V)
 Returns the exp value of each element of the Volume. More...
 
template<typename T >
Volume< T > log (const Volume< T > &V)
 Returns the log value of each element of the Volume. More...
 
template<typename T >
Volume< T > cosh (const Volume< T > &V)
 Returns the cosh value of each element of the Volume. More...
 
template<typename T >
Volume< T > sinh (const Volume< T > &V)
 Returns the sinh value of each element of the Volume. More...
 
template<typename T >
Volume< T > tanh (const Volume< T > &V)
 Returns the tanh value of each element of the Volume. More...
 
template<typename T >
Volume< T > log10 (const Volume< T > &V)
 Returns the log10 value of each element of the Volume. More...
 

i/o operators

std::ostream & operator<< (std::ostream &out, const self &a)
 Write the Volume to the ouput stream. More...
 
void read_raw (const std::string &file_path_name, const std::size_t slices, const std::size_t rows, const std::size_t cols)
 Reads a Volume from a file path name. More...
 
void write_raw (const std::string &file_path_name) const
 Write a Volume to a file path name. More...
 
void write_tecplot (const std::string &file_path_name, const std::string &title) const
 Write a Volume to a tecplot file. More...
 
void write_to_images_tecplot (const std::string &file_path_name, const std::string &title, const std::size_t from, const std::size_t to) const
 Write slices of a Container3D to a tecplot file. More...
 

Detailed Description

template<typename T>
class slip::Volume< T >

Numerical volume class This is a two-dimensional dynamic and generic container. This container statisfies the BidirectionnalContainer concepts of the STL. It is also an 3d extension of the RandomAccessContainer concept. That is to say the bracket element access is replaced by the triple bracket element access. Data are stored using a Matrix3d class. It extends the interface of Matrix3d adding image read/write operations. These operations are done using the ImageMagick library.

Author
Benoit Tremblais <tremblais_AT_sic.univ-poitiers.fr>
Version
0.0.2
Date
2014/03/14
Since
1.0.0
Parameters
TType of object in the Volume
iterator3d_conventions.jpg
axis and notation conventions
Examples:
fits_file_io.cpp, and regularvector3dfield3d_op.cpp.

Definition at line 107 of file Volume.hpp.

Member Typedef Documentation

template<typename T>
typedef slip::stride_iterator<pointer> slip::Volume< T >::col_iterator

Definition at line 189 of file Volume.hpp.

Definition at line 195 of file Volume.hpp.

Definition at line 190 of file Volume.hpp.

Definition at line 196 of file Volume.hpp.

template<typename T>
typedef const_iterator3d slip::Volume< T >::const_default_iterator

Definition at line 239 of file Volume.hpp.

template<typename T>
typedef const_pointer slip::Volume< T >::const_iterator

Definition at line 178 of file Volume.hpp.

template<typename T>
typedef slip::Array3d<T>::const_iterator2d slip::Volume< T >::const_iterator2d

Definition at line 222 of file Volume.hpp.

template<typename T>
typedef slip::Array3d<T>::const_iterator3d slip::Volume< T >::const_iterator3d

Definition at line 228 of file Volume.hpp.

Definition at line 230 of file Volume.hpp.

template<typename T>
typedef const value_type* slip::Volume< T >::const_pointer

Definition at line 170 of file Volume.hpp.

template<typename T>
typedef const value_type& slip::Volume< T >::const_reference

Definition at line 172 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_col_iterator> slip::Volume< T >::const_reverse_col_iterator

Definition at line 204 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_col_range_iterator> slip::Volume< T >::const_reverse_col_range_iterator

Definition at line 209 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_iterator> slip::Volume< T >::const_reverse_iterator

Definition at line 181 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_iterator2d> slip::Volume< T >::const_reverse_iterator2d

Definition at line 224 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_iterator3d> slip::Volume< T >::const_reverse_iterator3d

Definition at line 233 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_iterator3d_range> slip::Volume< T >::const_reverse_iterator3d_range

Definition at line 235 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_iterator> slip::Volume< T >::const_reverse_row_iterator

Definition at line 202 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_row_range_iterator> slip::Volume< T >::const_reverse_row_range_iterator

Definition at line 207 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_slice_iterator> slip::Volume< T >::const_reverse_slice_iterator

Definition at line 200 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<const_slice_range_iterator> slip::Volume< T >::const_reverse_slice_range_iterator

Definition at line 198 of file Volume.hpp.

template<typename T>
typedef const_pointer slip::Volume< T >::const_row_iterator

Definition at line 188 of file Volume.hpp.

Definition at line 194 of file Volume.hpp.

Definition at line 186 of file Volume.hpp.

Definition at line 192 of file Volume.hpp.

template<typename T>
typedef iterator3d slip::Volume< T >::default_iterator

Definition at line 238 of file Volume.hpp.

template<typename T>
typedef ptrdiff_t slip::Volume< T >::difference_type

Definition at line 174 of file Volume.hpp.

template<typename T>
typedef pointer slip::Volume< T >::iterator

Definition at line 177 of file Volume.hpp.

template<typename T>
typedef slip::Array3d<T>::iterator2d slip::Volume< T >::iterator2d

Definition at line 221 of file Volume.hpp.

template<typename T>
typedef slip::Array3d<T>::iterator3d slip::Volume< T >::iterator3d

Definition at line 227 of file Volume.hpp.

template<typename T>
typedef slip::Array3d<T>::iterator3d_range slip::Volume< T >::iterator3d_range

Definition at line 229 of file Volume.hpp.

template<typename T>
typedef value_type* slip::Volume< T >::pointer

Definition at line 169 of file Volume.hpp.

template<typename T>
typedef value_type& slip::Volume< T >::reference

Definition at line 171 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<col_iterator> slip::Volume< T >::reverse_col_iterator

Definition at line 203 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<col_range_iterator> slip::Volume< T >::reverse_col_range_iterator

Definition at line 208 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<iterator> slip::Volume< T >::reverse_iterator

Definition at line 180 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<iterator2d> slip::Volume< T >::reverse_iterator2d

Definition at line 223 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<iterator3d> slip::Volume< T >::reverse_iterator3d

Definition at line 232 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<iterator3d_range> slip::Volume< T >::reverse_iterator3d_range

Definition at line 234 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<iterator> slip::Volume< T >::reverse_row_iterator

Definition at line 201 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<row_range_iterator> slip::Volume< T >::reverse_row_range_iterator

Definition at line 206 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<slice_iterator> slip::Volume< T >::reverse_slice_iterator

Definition at line 199 of file Volume.hpp.

template<typename T>
typedef std::reverse_iterator<slice_range_iterator> slip::Volume< T >::reverse_slice_range_iterator

Definition at line 197 of file Volume.hpp.

template<typename T>
typedef pointer slip::Volume< T >::row_iterator

Definition at line 187 of file Volume.hpp.

template<typename T>
typedef slip::stride_iterator<pointer> slip::Volume< T >::row_range_iterator

Definition at line 193 of file Volume.hpp.

template<typename T>
typedef Volume<T> slip::Volume< T >::self

Definition at line 167 of file Volume.hpp.

template<typename T>
typedef std::size_t slip::Volume< T >::size_type

Definition at line 175 of file Volume.hpp.

template<typename T>
typedef slip::stride_iterator<pointer> slip::Volume< T >::slice_iterator

Definition at line 185 of file Volume.hpp.

Definition at line 191 of file Volume.hpp.

template<typename T>
typedef T slip::Volume< T >::value_type

Definition at line 166 of file Volume.hpp.

Constructor & Destructor Documentation

template<typename T >
slip::Volume< T >::Volume ( )
inline

Constructs a Volume.

Definition at line 3928 of file Volume.hpp.

template<typename T>
slip::Volume< T >::Volume ( const std::size_t  d1,
const std::size_t  d2,
const std::size_t  d3 
)

Constructs a Volume.

Parameters
d1first dimension of the Volume
d2second dimension of the Volume
d3third dimension of the Volume
The Volume is initialized by the default value of T.
template<typename T>
slip::Volume< T >::Volume ( const std::size_t  d1,
const std::size_t  d2,
const std::size_t  d3,
const T &  val 
)

Constructs a Volume initialized by the scalar value val.

Parameters
d1first dimension of the Volume
d2second dimension of the Volume
d3third dimension of the Volume
valinitialization value of the elements
template<typename T>
slip::Volume< T >::Volume ( const std::size_t  d1,
const std::size_t  d2,
const std::size_t  d3,
const T *  val 
)

Constructs a Volume initialized by an array val.

Parameters
d1first dimension of the Volume
d2second dimension of the Volume
d3third dimension of the Volume
valinitialization array value of the elements
template<typename T>
template<typename InputIterator >
slip::Volume< T >::Volume ( const size_type  d1,
const size_type  d2,
const size_type  d3,
InputIterator  first,
InputIterator  last 
)
inline

Contructs a Volume from a range.

Parameters
d1first dimension of the Volume
d2second dimension of the Volume
d3third dimension of the Volume
firstAn input iterator.
lastAn input iterator.

Create a Volume consisting of copies of the elements from [first,last).

Definition at line 301 of file Volume.hpp.

template<typename T>
slip::Volume< T >::Volume ( const Volume< T > &  rhs)
inline

Constructs a copy of the Volume rhs.

Definition at line 3961 of file Volume.hpp.

template<typename T >
slip::Volume< T >::~Volume ( )
inline

Destructor of the Volume.

Definition at line 3967 of file Volume.hpp.

template<typename T>
template<typename T>
slip::Volume< T >::Volume ( const typename Volume< T >::size_type  d1,
const typename Volume< T >::size_type  d2,
const typename Volume< T >::size_type  d3 
)
inline

Definition at line 3934 of file Volume.hpp.

template<typename T>
template<typename T>
slip::Volume< T >::Volume ( const typename Volume< T >::size_type  d1,
const typename Volume< T >::size_type  d2,
const typename Volume< T >::size_type  d3,
const T &  val 
)
inline

Definition at line 3942 of file Volume.hpp.

template<typename T>
template<typename T>
slip::Volume< T >::Volume ( const typename Volume< T >::size_type  d1,
const typename Volume< T >::size_type  d2,
const typename Volume< T >::size_type  d3,
const T *  val 
)
inline

Definition at line 3951 of file Volume.hpp.

Member Function Documentation

template<typename T>
Volume< T > & slip::Volume< T >::apply ( T(*)(T)  fun)
inline

Applys the one-parameter C-function fun to each element of the Volume.

Parameters
funThe one-parameter C function
Returns
the resulting Volume

Definition at line 5876 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::apply ( T(*)(const T &)  fun)
inline

Applys the one-parameter C-function fun to each element of the Volume.

Parameters
funThe one-const-parameter C function
Returns
the resulting Volume

Definition at line 5884 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d slip::Volume< T >::back_bottom_right ( )
inline

Returns a read/write iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Volume.

Returns
begin iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
//Print M
std::ostream_iterator<double>(std::cout," "));

Definition at line 5130 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d slip::Volume< T >::back_bottom_right ( ) const
inline

Returns a read-only iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Volume.

Returns
begin const iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
//Print M
std::ostream_iterator<double>(std::cout," "));

Definition at line 5137 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d slip::Volume< T >::back_bottom_right ( const Box3d< int > &  box)
inline

Returns a read/write iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Box3d associated to the Volume.

Parameters
boxa Box3d defining the range of indices to iterate within the Volume.
Returns
end iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Precondition
The box indices must be inside the range of the Volume ones.
Example
slip::Box3d<int> b(1,1,1,2,2,3);
//Print M within a box
std::ostream_iterator<double>(std::cout," "));

Definition at line 5198 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d slip::Volume< T >::back_bottom_right ( const Box3d< int > &  box) const
inline

Returns a read only iterator3d that points to the past the end element of the Volume. It points to past the end element of the back bottom right element of the Box3d associated to the Volume.

Parameters
boxa Box3d defining the range of indices to iterate within the Volume.
Returns
end const iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Precondition
The box indices must be inside the range of the Volume ones.
Example
slip::Volume<double> const M(3,4,5);
slip::Box3d<int> b(1,1,1,2,2,4);
//Print M within a box
std::ostream_iterator<double>(std::cout," "));

Definition at line 5206 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d_range slip::Volume< T >::back_bottom_right ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
)
inline

Returns a read/write iterator3d_range that points to the past the end back bottom right element of the ranges slice_range, row_range and col_range associated to the Volume.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range
std::ostream_iterator<double>(std::cout," "));

Definition at line 5261 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d_range slip::Volume< T >::back_bottom_right ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
) const
inline

Returns a read-only iterator3d_range that points to the past the end back bottom right element of the ranges slice_range, row_range and col_range associated to the Volume.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
const_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range
std::ostream_iterator<double>(std::cout," "));

Definition at line 5284 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator slip::Volume< T >::begin ( ) const
inline

Returns a read-only (constant) iterator that points to the first element in the Volume. Iteration is done in ordinary element order.

Returns
const begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of A1 and A2 in S
std::transform(A1.begin(),A1.end(),
A2.begin(),S.begin(),
std::plus<double>());

Definition at line 4037 of file Volume.hpp.

template<typename T >
Volume< T >::iterator slip::Volume< T >::begin ( )
inline

Returns a read/write iterator that points to the first element in the Volume. Iteration is done in ordinary element order.

Returns
begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of A1 and A2 in S
std::transform(A1.begin(),A1.end(),
A2.begin(),S.begin(),
std::plus<double>());

Definition at line 4023 of file Volume.hpp.

template<typename T>
col_iterator slip::Volume< T >::col_begin ( const size_type  slice,
const size_type  col 
)

Returns a read/write iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
begin col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_col_iterator slip::Volume< T >::col_begin ( const size_type  slice,
const size_type  col 
) const

Returns a read_only iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
begin const_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
col_range_iterator slip::Volume< T >::col_begin ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points to the first element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate
Returns
begin col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim2()-1,2);
//copy the the elements of the column 0 of the slice 0 of A1 iterated according to the
//range in the column 1 of the slice 1 of A2
std::copy(A1.col_begin(0,0,range),A1.col_end(0,0,range),A2.col_begin(1,1));
template<typename T>
const_col_range_iterator slip::Volume< T >::col_begin ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points to the first element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
begin const_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(8,8,8);
slip::Range<int> range(0,A1.dim2()-1,2);
//copy the the elements of the column 0 of the slice 0 of A1 iterated according to the
//range in the column 1 of the slice 1 of A2
std::copy(A1.col_begin(0,0,range),A1.col_end(0,0,range),A2.col_begin(1,1));
template<typename T>
col_iterator slip::Volume< T >::col_end ( const size_type  slice,
const size_type  col 
)

Returns a read/write iterator that points to the past-the-end element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
end col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_col_iterator slip::Volume< T >::col_end ( const size_type  slice,
const size_type  col 
) const

Returns a read_only iterator that points to the past-the-end element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
end const_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
col_range_iterator slip::Volume< T >::col_end ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points to the past the end element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
begin col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim2()-1,2);
//copy the the elements of the column 0 of the slice 0 of A1 iterated according to the
//range in the column 1 of the slice 1 of A2
std::copy(A1.col_begin(0,0,range),A1.col_end(0,0,range),A2.col_begin(1,1));
template<typename T>
const_col_range_iterator slip::Volume< T >::col_end ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points to the past the end element of the Range range of the col col in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate
Returns
begin const_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(8,8,8);
slip::Range<int> range(0,A1.dim2()-1,2);
//copy the the elements of the column 0 of the slice 0 of A1 iterated according to the
//range in the column 1 of the slice 1 of A2
std::copy(A1.col_begin(0,0,range),A1.col_end(0,0,range),A2.col_begin(1,1));
template<typename T>
reverse_col_iterator slip::Volume< T >::col_rbegin ( const size_type  slice,
const size_type  col 
)

Returns a read/write reverse iterator that points to the last element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
begin reverse_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_reverse_col_iterator slip::Volume< T >::col_rbegin ( const size_type  slice,
const size_type  col 
) const

Returns a read_only reverse iterator that points to the last element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
begin const_reverse_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
reverse_col_range_iterator slip::Volume< T >::col_rbegin ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points to the last element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
begin reverse_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_col_range_iterator slip::Volume< T >::col_rbegin ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read_only iterator that points to the last element of the Range & range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
begin const_reverse_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
reverse_col_iterator slip::Volume< T >::col_rend ( const size_type  slice,
const size_type  col 
)

Returns a read/write reverse iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
end reverse_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_reverse_col_iterator slip::Volume< T >::col_rend ( const size_type  slice,
const size_type  col 
) const

Returns a read_only reverse iterator that points to the first element of the column column of the slice slice in the Volume. Iteration is done modulo the number of columns.

Parameters
sliceThe index of the slice.
colThe index of the column
Returns
end const_reverse_col_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
reverse_col_range_iterator slip::Volume< T >::col_rend ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points to one before the first element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
reverse_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_col_range_iterator slip::Volume< T >::col_rend ( const size_type  slice,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points to the first element of the Range range of the col of a slice col in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
colThe index of the column to iterate.
rangeRange of the column to iterate.
Returns
const_reverse_col_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
col must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T >
Volume< T >::size_type slip::Volume< T >::cols ( ) const
inline

Returns the number of columns (third dimension size) in the Volume.

Definition at line 5664 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::columns ( ) const
inline

Returns the number of columns (third dimension size) in the Volume.

Definition at line 5669 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::dim1 ( ) const
inline

Returns the number of slices (first dimension size) in the Volume.

Definition at line 5639 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::dim2 ( ) const
inline

Returns the number of rows (second dimension size) in the Volume.

Definition at line 5649 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::dim3 ( ) const
inline

Returns the number of columns (third dimension size) in the Volume.

Definition at line 5659 of file Volume.hpp.

template<typename T >
bool slip::Volume< T >::empty ( ) const
inline

Returns true if the Volume is empty. (Thus size() == 0)

Definition at line 5690 of file Volume.hpp.

template<typename T >
Volume< T >::iterator slip::Volume< T >::end ( )
inline

Returns a read/write iterator that points one past the last element in the Volume. Iteration is done in ordinary element order.

Returns
end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of A1 and A2 in S
std::transform(A1.begin(),A1.end(),
A2.begin(),S.begin(),
std::plus<double>());

Definition at line 4030 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator slip::Volume< T >::end ( ) const
inline

Returns a read-only (constant) iterator that points one past the last element in the Volume. Iteration is done in ordinary element order.

Returns
const end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of A1 and A2 in S
std::transform(A1.begin(),A1.end(),
A2.begin(),S.begin(),
std::plus<double>());

Definition at line 4045 of file Volume.hpp.

template<typename T>
void slip::Volume< T >::fill ( const T &  value)
inline

Fills the container range [begin(),begin()+size()) with copies of value.

Parameters
valueA reference-to-const of arbitrary type.

Definition at line 3305 of file Volume.hpp.

template<typename T>
void slip::Volume< T >::fill ( const T *  value)
inline

Fills the container range [begin(),begin()+size()) with a copy of the value array.

Parameters
valueA pointer of arbitrary type.

Definition at line 3316 of file Volume.hpp.

template<typename T>
template<typename InputIterator >
void slip::Volume< T >::fill ( InputIterator  first,
InputIterator  last 
)
inline

Fills the container range [begin(),begin()+size()) with a copy of the range [first,last)

Parameters
firstAn input iterator.
lastAn input iterator.

Definition at line 3330 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d slip::Volume< T >::front_upper_left ( )
inline

Returns a read/write iterator3d that points to the first element of the Volume. It points to the front upper left element of the Volume.

Returns
begin iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
//Print M
std::ostream_iterator<double>(std::cout," "));

Definition at line 5115 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d slip::Volume< T >::front_upper_left ( ) const
inline

Returns a read-only iterator3d that points to the first element of the Volume. It points to the front upper left element of the Volume.

Returns
begin const iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
//Print M
std::ostream_iterator<double>(std::cout," "));

Definition at line 5122 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d slip::Volume< T >::front_upper_left ( const Box3d< int > &  box)
inline

Returns a read/write iterator3d that points to the first element of the Volume. It points to the front upper left element of the Box3d associated to the Volume.

Parameters
boxA Box3d defining the range of indices to iterate within the Volume.
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Returns
end iterator3d value
Precondition
The box indices must be inside the range of the Volume ones.
Example
slip::Box3d<int> b(1,1,1,2,2,3);
//Print M within a box
std::ostream_iterator<double>(std::cout," "));

Definition at line 5181 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d slip::Volume< T >::front_upper_left ( const Box3d< int > &  box) const
inline

Returns a read only iterator3d that points to the first element of the Volume. It points to the front upper left element of the Box3d associated to the Volume.

Parameters
boxa Box3d defining the range of indices to iterate within the Volume.
Returns
end const iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Precondition
The box indices must be inside the range of the Volume ones.
Example
slip::Volume<double> const M(3,4,5);
slip::Box3d<int> b(1,1,1,2,2,4);
//Print M within a box
std::ostream_iterator<double>(std::cout," "));

Definition at line 5188 of file Volume.hpp.

template<typename T >
Volume< T >::iterator3d_range slip::Volume< T >::front_upper_left ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
)
inline

Returns a read/write iterator3d_range that points to the front upper left element of the ranges slice_range, row_range and col_range associated to the Volume.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range
std::ostream_iterator<double>(std::cout," "));

Definition at line 5251 of file Volume.hpp.

template<typename T >
Volume< T >::const_iterator3d_range slip::Volume< T >::front_upper_left ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
) const
inline

Returns a read-only iterator3d_range that points to the to the front upper left element of the ranges slice_range, row_range and col_range associated to the Volume.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
const_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range
std::ostream_iterator<double>(std::cout," "));

Definition at line 5272 of file Volume.hpp.

template<typename T >
T & slip::Volume< T >::max ( ) const
inline

Returns the max element of the Volume according to the operator <.

Precondition
size() != 0

Definition at line 5859 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::max_size ( ) const
inline

Returns the maximal size (number of elements) in the Volume.

Definition at line 5680 of file Volume.hpp.

template<typename T >
T & slip::Volume< T >::min ( ) const
inline

Returns the min element of the Volume according to the operator <.

Precondition
size() != 0

Definition at line 5851 of file Volume.hpp.

template<typename T >
std::string slip::Volume< T >::name ( ) const
inline

Returns the name of the class.

Definition at line 5633 of file Volume.hpp.

template<typename T>
reference slip::Volume< T >::operator() ( const size_type  k,
const size_type  i,
const size_type  j 
)

Subscript access to the data contained in the Volume.

Parameters
kThe index of the slice for which the data should be accessed.
iThe index of the row for which the data should be accessed.
jThe index of the column for which the data should be accessed.
Returns
Read/Write reference to data.
Precondition
k < slices()
i < rows()
j < cols() This operator allows for easy, 3d array-style, data access. Note that data access with this operator is unchecked and out_of_range lookups are not defined.
template<typename T>
const_reference slip::Volume< T >::operator() ( const size_type  k,
const size_type  i,
const size_type  j 
) const

Subscript access to the data contained in the Volume.

Parameters
kThe index of the slice for which the data should be accessed.
iThe index of the row for which the data should be accessed.
jThe index of the column for which the data should be accessed.
Returns
Read_only (constant) reference to data.
Precondition
k < slices()
i < rows()
j < cols() This operator allows for easy, 3d array-style, data access. Note that data access with this operator is unchecked and out_of_range lookups are not defined.
template<typename T>
Volume< T > & slip::Volume< T >::operator*= ( const T &  val)
inline

Definition at line 5781 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator*= ( const self rhs)
inline

Definition at line 5829 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator+= ( const T &  val)
inline

Add val to each element of the Volume.

Parameters
valvalue
Returns
reference to the resulting Volume

Definition at line 5765 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator+= ( const self rhs)
inline

Definition at line 5806 of file Volume.hpp.

template<typename T >
Volume< T > slip::Volume< T >::operator- ( ) const
inline

Definition at line 5797 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator-= ( const T &  val)
inline

Definition at line 5773 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator-= ( const self rhs)
inline

Definition at line 5818 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator/= ( const T &  val)
inline

Definition at line 5789 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator/= ( const self rhs)
inline

Definition at line 5840 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator= ( const Volume< T > &  rhs)
inline

Assign a Volume.

Assign elements of Volume in rhs

Parameters
rhsVolume to get the values from.
Returns

Definition at line 3980 of file Volume.hpp.

template<typename T>
Volume< T > & slip::Volume< T >::operator= ( const T &  value)
inline

Assign all the elments of the Volume by value.

Parameters
valueA reference-to-const of arbitrary type.
Returns

Definition at line 3991 of file Volume.hpp.

template<typename T>
T** slip::Volume< T >::operator[] ( const size_type  k)
template<typename T>
const T* const* slip::Volume< T >::operator[] ( const size_type  k) const
template<typename T>
iterator slip::Volume< T >::plane_begin ( const size_type  slice)

Returns a read/write iterator that points to the first element in the in the slice plane of the Volume. Iteration is done in ordinary element order.

Parameters
slicethe slice coordinate of the plane
Returns
begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the first plane (in slice direction) of A1 in A2
std::copy(A1.plane_begin(0),A1.plane_end(0),A2.plane_begin(0));
template<typename T>
const_iterator slip::Volume< T >::plane_begin ( const size_type  slice) const

Returns a read-only (constant) iterator that points to the first element in the slice plane of the Volume. Iteration is done in ordinary element order.

Parameters
slicethe slice coordinate of the plane
Returns
const begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(2,3,2);
//copy the first plane (in slice direction) of A1 in A2
std::copy(A1.plane_begin(0),A1.plane_end(0),A2.plane_begin(0));
template<typename T>
iterator2d slip::Volume< T >::plane_bottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
)

Returns a read/write iterator that points to the last element of the plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example:
//Print the 2nd plane of M in the KI_PLANE direction
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_iterator2d slip::Volume< T >::plane_bottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
) const

Returns a read/write const iterator that points to the last element of the plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example:
slip::Volume<double> const M(3,4,5);
//Print the 2nd plane of M in the KI_PLANE direction
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
iterator2d slip::Volume< T >::plane_bottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
)

Returns a read/write iterator that points to the last element of a box within a plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_iterator2d slip::Volume< T >::plane_bottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
) const

Returns a read/write const iterator that points to the last element of a box within a plane in the Volume. It points to past the end element of the bottom right element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
iterator slip::Volume< T >::plane_end ( const size_type  slice)

Returns a read/write iterator that points one past the last element in the slice plane of the Volume. Iteration is done in ordinary element order.

Parameters
slicethe slice coordinate of the plane
Returns
end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the first plane (in slice direction) of A1 in A2
std::copy(A1.plane_begin(0),A1.plane_end(0),A2.plane_begin(0));
template<typename T>
const_iterator slip::Volume< T >::plane_end ( const size_type  slice) const

Returns a read-only (constant) iterator that points one past the last element in the slice plane of the Volume. Iteration is done in ordinary element order.

Parameters
slicethe slice coordinate of the plane
Returns
const end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(2,3,2);
//copy the first plane (in slice direction) of A1 in A2
std::copy(A1.plane_begin(0),A1.plane_end(0),A2.plane_begin(0));
template<typename T>
reverse_iterator slip::Volume< T >::plane_rbegin ( const size_type  slice)

Returns a read/write reverse iterator that points to the last element in the slice plane of the Volume. Iteration is done in reverse element order.

Parameters
slicethe slice coordinate of the plane
Returns
reverse begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the first plane (in slice direction) of A1 in A2 in reverse order
std::copy(A1.plane_rbegin(0),A1.plane_rend(0),A2.plane_begin(0));
template<typename T>
const_reverse_iterator slip::Volume< T >::plane_rbegin ( const size_type  slice) const

Returns a read-only (constant) reverse iterator that points to the last element in the slice plane k of the Volume. Iteration is done in reverse element order.

Parameters
slicethe slice coordinate of the plane
Returns
const reverse begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(2,3,2);
//copy the first plane (in slice direction) of A1 in A2 in reverse order
std::copy(A1.plane_rbegin(0),A1.plane_rend(0),A2.plane_begin(0));
template<typename T>
reverse_iterator2d slip::Volume< T >::plane_rbottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
)

Returns a read/write reverse_iterator that points to the upper left element of the plane in the Volume. Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example :
//Print the 2nd plane of M in the KI_PLANE direction in reverse order
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_reverse_iterator2d slip::Volume< T >::plane_rbottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
) const

Returns a read/write const reverse iterator that points to the upper left element of the plane in the Volume. Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
//Print the 2nd plane of M in the KI_PLANE direction in reverse order
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
reverse_iterator2d slip::Volume< T >::plane_rbottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
)

Returns a read/write reverse iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the plane Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin reverse_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box in a reverse order
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_reverse_iterator2d slip::Volume< T >::plane_rbottom_right ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
) const

Returns a read/write const reverse iterator that points to the first element of a box within a plane in the Volume. It points to the bottom right element of the plane Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin const_reverse_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box in a reverse order
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
reverse_iterator slip::Volume< T >::plane_rend ( const size_type  slice)

Returns a read/write reverse iterator that points to one before the first element in the slice plane of the Volume. Iteration is done in reverse element order.

Parameters
slicethe slice coordinate of the plane
Returns
reverse end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the first plane (in slice direction) of A1 in A2 in reverse order
std::copy(A1.plane_rbegin(0),A1.plane_rend(0),A2.plane_begin(0));
template<typename T>
const_reverse_iterator slip::Volume< T >::plane_rend ( const size_type  slice) const

Returns a read-only (constant) reverse iterator that points to one before the first element in the slice plane of the Volume. Iteration is done in reverse element order.

Parameters
slicethe slice coordinate of the plane
Returns
const reverse end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(2,3,2);
//copy the first plane (in slice direction) of A1 in A2 in reverse order
std::copy(A1.plane_rbegin(0),A1.plane_rend(0),A2.plane_begin(0));
template<typename T>
reverse_iterator2d slip::Volume< T >::plane_rupper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
)

Returns a read/write reverse_iterator that points to the bottom right element of the plane in the Volume. Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example:
//Print the 2nd plane of M in the KI_PLANE direction in reverse order
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_reverse_iterator2d slip::Volume< T >::plane_rupper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
) const

Returns a read/write const reverse iterator that points to the bottom right element of the plane in the Volume. Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example :
slip::Volume<double> const M(3,4,5);
//Print the 2nd plane of M in the KI_PLANE direction in reverse order
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
reverse_iterator2d slip::Volume< T >::plane_rupper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
)

Returns a read/write reverse iterator that points to the last element of a box within a plane in the Volume. It points to the bottom right element of the box Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin reverse_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box in a reverse order
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_reverse_iterator2d slip::Volume< T >::plane_rupper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
) const

Returns a read/write const reverse iterator that points to the last element of a box within a plane in the Volume. It points to the bottom right element of the plane Iteration is done in backward element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin const_reverse_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box in a reverse order
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
iterator2d slip::Volume< T >::plane_upper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
)

Returns a read/write iterator that points to the first element of the plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example:
//Print the 2nd plane of M in the KI_PLANE direction
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_iterator2d slip::Volume< T >::plane_upper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate 
) const

Returns a read/write const iterator that points to the first element of the plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example:
slip::Volume<double> const M(3,4,5);
//Print the 2nd plane of M in the KI_PLANE direction
slip::KI_PLANE,2),std::ostream_iterator<double>(std::cout," "));
template<typename T>
iterator2d slip::Volume< T >::plane_upper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
)

Returns a read/write iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the box Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T>
const_iterator2d slip::Volume< T >::plane_upper_left ( PLANE_ORIENTATION  P,
const size_type  plane_coordinate,
const Box2d< int > &  b 
) const

Returns a read/write const iterator that points to the first element of a box within a plane in the Volume. It points to the upper left element of the plane Iteration is done in ordinary element order.

Parameters
Pnumber of the plane axe (PLANE_ORIENTATION).
plane_coordinateThe constant coordinate
bThe box within the plane
Returns
begin const_iterator2d value
Precondition
P must be 0,1 or 2
b must be within the plane
Remarks
This iterator is compatible with BidirectionnalAccessIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Box2d<int> b(1,1,3,3);
//Print the 2nd plane of M in the KI_PLANE direction within a box
slip::KI_PLANE,2,b),std::ostream_iterator<double>(std::cout," "));
template<typename T >
Volume< T >::reverse_iterator3d slip::Volume< T >::rback_bottom_right ( )
inline

Returns a read/write reverse iterator3d. It points to past the front upper left element of the Volume. Iteration is done in the reverse order.

Returns
reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
//Print M in a reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5146 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d slip::Volume< T >::rback_bottom_right ( ) const
inline

Returns a read only reverse iterator3d. It points to past the front upper left element of the Volume. Iteration is done in the reverse order.

Returns
const reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
//Print M in a reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5154 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator3d slip::Volume< T >::rback_bottom_right ( const Box3d< int > &  box)
inline

Returns a read/write reverse iterator3d. It points to one before the front upper left element of the Box3d box associated to the Volume.

Parameters
boxA Box3d defining the range of indices to iterate within the Volume.
Precondition
The box indices must be inside the range of the Volume ones.
Returns
reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.

Definition at line 5215 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d slip::Volume< T >::rback_bottom_right ( const Box3d< int > &  box) const
inline

Returns a read-only reverse iterator3d. It points to one before the front element of the bottom right element of the Box3d box associated to the Volume.

Parameters
boxA Box3d defining the range of indices to iterate within the Volume.
Precondition
The box indices must be inside the range of the Volume ones.
Returns
const reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.

Definition at line 5223 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator3d_range slip::Volume< T >::rback_bottom_right ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
)
inline

Returns a read/write reverse_iterator3d_range that points to one before the front upper left element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
reverse_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range in reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5316 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d_range slip::Volume< T >::rback_bottom_right ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
) const
inline

Returns a read-only reverse_iterator3d_range that points to one before the front upper left element of the ranges row_range and col_range associated to the Volume.Iteration is done in the reverse order.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
const_reverse_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range in reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5326 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator slip::Volume< T >::rbegin ( )
inline

Returns a read/write reverse iterator that points to the last element in the Volume. Iteration is done in reverse element order.

Returns
reverse begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of A1 and A2 in S
std::transform(A1.rbegin(),A1.rend(),
A2.rbegin(),S.rbegin(),
std::plus<double>());

Definition at line 4054 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator slip::Volume< T >::rbegin ( ) const
inline

Returns a read-only (constant) reverse iterator that points to the last element in the Volume. Iteration is done in reverse element order.

Returns
const reverse begin iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of A1 and A2 in S
std::transform(A1.rbegin(),A1.rend(),
A2.rbegin(),S.rbegin(),
std::plus<double>());

Definition at line 4068 of file Volume.hpp.

template<typename T >
void slip::Volume< T >::read_raw ( const std::string &  file_path_name,
const std::size_t  slices,
const std::size_t  rows,
const std::size_t  cols 
)
inline

Reads a Volume from a file path name.

Parameters
file_path_name
slicesNumber of slices
rowsNumber of rows
colsNumber of cols

Definition at line 5552 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator slip::Volume< T >::rend ( )
inline

Returns a read/write reverse iterator that points to one before the first element in the Volume. Iteration is done in reverse element order.

Returns
reverse end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of A1 and A2 in S
std::transform(A1.rbegin(),A1.rend(),
A2.rbegin(),S.rbegin(),
std::plus<double>());

Definition at line 4061 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator slip::Volume< T >::rend ( ) const
inline

Returns a read-only (constant) reverse iterator that points to one before the first element in the Volume. Iteration is done in reverse element order.

Returns
const reverse end iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of A1 and A2 in S
std::transform(A1.rbegin(),A1.rend(),
A2.rbegin(),S.rbegin(),
std::plus<double>());

Definition at line 4075 of file Volume.hpp.

template<typename T>
void slip::Volume< T >::resize ( std::size_t  d1,
std::size_t  d2,
std::size_t  d3,
const T &  val = T() 
)
inline

Resizes a Volume.

Parameters
d1new first dimension
d2new second dimension
d3new third dimension
valnew value for all the elements

Definition at line 3999 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator3d slip::Volume< T >::rfront_upper_left ( )
inline

Returns a read/write reverse iterator3d. It points to the back bottom right element of the Volume. Iteration is done within the Volume in the reverse order.

Returns
reverse_iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
//Print M in a reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5163 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d slip::Volume< T >::rfront_upper_left ( ) const
inline

Returns a read only reverse iterator3d that points. It points to the back bottom right element of the Volume. Iteration is done within the Volume in the reverse order.

Returns
const_reverse_iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
//Print M in a reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5171 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator3d slip::Volume< T >::rfront_upper_left ( const Box3d< int > &  box)
inline

Returns a read/write reverse iterator3d. It points to the back bottom right element of the Box3d associated to the Volume. Iteration is done in the reverse order.

Parameters
boxa Box3d defining the range of indices to iterate within the Volume.
Precondition
The box indices must be inside the range of the Volume ones.
Returns
reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.

Definition at line 5232 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d slip::Volume< T >::rfront_upper_left ( const Box3d< int > &  box) const
inline

Returns a read only reverse iterator3d. It points to the back bottom right element of the Box3d box associated to the Volume. Iteration is done in the reverse order.

Parameters
boxA Box3d defining the range of indices to iterate within the Volume.
Precondition
The box indices must be inside the range of the Volume ones.
Returns
const reverse iterator3d value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.

Definition at line 5240 of file Volume.hpp.

template<typename T >
Volume< T >::reverse_iterator3d_range slip::Volume< T >::rfront_upper_left ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
)
inline

Returns a read/write reverse_iterator3d_range that points to the past the back bottom right element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
reverse_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range in reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5295 of file Volume.hpp.

template<typename T >
Volume< T >::const_reverse_iterator3d_range slip::Volume< T >::rfront_upper_left ( const Range< int > &  slice_range,
const Range< int > &  row_range,
const Range< int > &  col_range 
) const
inline

Returns a read-only reverse_iterator3d_range that points to the past the back bottom right element of the ranges row_range and col_range associated to the Volume. Iteration is done in the reverse order.

Parameters
slice_rangeThe range of the slices.
row_rangeThe range of the rows.
col_rangeThe range of the columns.
Precondition
slice_range, row_range and col_range must be valid.
The ranges indices must be inside the ranges of the Volume ones.
Returns
const_reverse_iterator3d_range value
Remarks
This iterator is compatible with BidirectionalIterator algorithms.
Example
slip::Volume<double> const M(3,4,5);
slip::Range<int> sr(0,2,2);
slip::Range<int> rr(0,3,2);
slip::Range<int> cr(0,4,2);
//Print M within a range in reverse order
std::ostream_iterator<double>(std::cout," "));

Definition at line 5305 of file Volume.hpp.

template<typename T>
row_iterator slip::Volume< T >::row_begin ( const size_type  slice,
const size_type  row 
)

Returns a read/write iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
begin row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_row_iterator slip::Volume< T >::row_begin ( const size_type  slice,
const size_type  row 
) const

Returns a read_only iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
begin const_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
row_range_iterator slip::Volume< T >::row_begin ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points to the first element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate.
Returns
begin row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim3()-1,2);
//copy the the elements of the row 0 of the slice 0 of A1 iterated according to the
//range in the row 1 of the slice 1 of A2
std::copy(A1.row_begin(0,0,range),A1.row_end(0,0,range),A2.row_begin(1,1));
template<typename T>
const_row_range_iterator slip::Volume< T >::row_begin ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points to the first element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate.
Returns
begin const_row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(8,8,8);
slip::Range<int> range(0,A1.dim3()-1,2);
//copy the the elements of the row 0 of the slice 0 of A1 iterated according to the
//range in the row 1 of the slice 1 of A2
std::copy(A1.row_begin(0,0,range),A1.row_end(0,0,range),A2.row_begin(1,1));
template<typename T>
row_iterator slip::Volume< T >::row_end ( const size_type  slice,
const size_type  row 
)

Returns a read/write iterator that points to the past-the-end element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
end row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_row_iterator slip::Volume< T >::row_end ( const size_type  slice,
const size_type  row 
) const

Returns a read_only iterator that points to the past-the-end element of the row row of the slice slice in the Volume. Iteration is done in ordinary element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
end const_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
row_range_iterator slip::Volume< T >::row_end ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points one past the end element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate.
Returns
end row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim3()-1,2);
//copy the the elements of the row 0 of the slice 0 of A1 iterated according to the
//range in the row 1 of the slice 1 of A2
std::copy(A1.row_begin(0,0,range),A1.row_end(0,0,range),A2.row_begin(1,1));
template<typename T>
const_row_range_iterator slip::Volume< T >::row_end ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
) const

Returns a read_only iterator that points one past the last element of the Range range of the row row in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
sliceThe index of the slice.
rowRow to iterate.
rangeRange of the row to iterate
Returns
begin const_row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(8,8,8);
slip::Range<int> range(0,A1.dim3()-1,2);
//copy the the elements of the row 0 of the slice 0 of A1 iterated according to the
//range in the row 1 of the slice 1 of A2
std::copy(A1.row_begin(0,0,range),A1.row_end(0,0,range),A2.row_begin(1,1));
template<typename T>
reverse_row_iterator slip::Volume< T >::row_rbegin ( const size_type  slice,
const size_type  row 
)

Returns a read/write reverse iterator that points to the last element of the row row of the slice slice in the Volume. Iteration is done in reverse element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
begin reverse_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_reverse_row_iterator slip::Volume< T >::row_rbegin ( const size_type  slice,
const size_type  row 
) const

Returns a read_only reverse iterator that points to the last element of the row row of the slice slice in the Volume. Iteration is done in reverse element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
begin const_reverse_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
reverse_row_range_iterator slip::Volume< T >::row_rbegin ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points to the last element of the Range range of the row of a slice row and slice in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate.
Returns
reverse_row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_row_range_iterator slip::Volume< T >::row_rbegin ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points to the last element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate
Returns
begin const_reverse_row_range_iterator value
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
reverse_row_iterator slip::Volume< T >::row_rend ( const size_type  slice,
const size_type  row 
)

Returns a read/write reverse iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in reverse element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
end reverse_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
const_reverse_row_iterator slip::Volume< T >::row_rend ( const size_type  slice,
const size_type  row 
) const

Returns a read_only reverse iterator that points to the first element of the row row of the slice slice in the Volume. Iteration is done in reverse element order.

Parameters
sliceThe index of the slice.
rowThe index of the row.
Returns
end const_reverse_row_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
template<typename T>
reverse_row_range_iterator slip::Volume< T >::row_rend ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
)

Returns a read-write iterator that points one before the first element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate.
Returns
reverse_row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_row_range_iterator slip::Volume< T >::row_rend ( const size_type  slice,
const size_type  row,
const slip::Range< int > &  range 
) const

Returns a read-only iterator that points one before the first element of the Range range of the row of a slice row in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
sliceThe index of the slice.
rowThe index of the row to iterate.
rangeRange of the row to iterate
Returns
const_reverse_row_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
row must be compatible with the range of the Volume.
The range must be inside the whole range of the Volume.
template<typename T >
Volume< T >::size_type slip::Volume< T >::rows ( ) const
inline

Returns the number of rows (second dimension size) in the Volume.

Definition at line 5654 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::size ( ) const
inline

Returns the number of elements in the Volume.

Definition at line 5675 of file Volume.hpp.

template<typename T>
slice_iterator slip::Volume< T >::slice_begin ( const size_type  row,
const size_type  col 
)

Returns a read/write iterator that points to the first element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of the first slice of A1 and A2 in the first slice of S
std::transform(A1.begin_slice(0),A1.end_slice(0),
A2.begin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
const_slice_iterator slip::Volume< T >::slice_begin ( const size_type  row,
const size_type  col 
) const

Returns a read-only (constant) iterator that points to the first element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
const_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of the first slice of A1 and A2 in the first slice of S
std::transform(A1.begin_slice(0),A1.end_slice(0),
A2.begin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
slice_range_iterator slip::Volume< T >::slice_begin ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
begin slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim1()-1,2);
//copy the the elements of the line (0,0) of A1 iterated according to the
//range in the line (1,1) of A2
std::copy(A1.slice_begin(0,0,range),A1.slice_end(0,0,range),A2.slice_begin(1,1));
template<typename T>
const_slice_range_iterator slip::Volume< T >::slice_begin ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read only (constant) iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
begin const_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(M); //M is an already existing %Volume
slip::Range<int> range(0,A1.dim1()-1,2);
//display the elements of the line (0,0) of A1 iterated according to the range
std::copy(A1.slice_begin(0,0,range),A1.slice_end(0,0,range),
std::ostream_iterator<double>(std::cout," "));
template<typename T>
slice_iterator slip::Volume< T >::slice_end ( const size_type  row,
const size_type  col 
)

Returns a read/write iterator that points to the one past the end element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of the first slice of A1 and A2 in the first slice of S
std::transform(A1.begin_slice(0),A1.end_slice(0),
A2.begin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
const_slice_iterator slip::Volume< T >::slice_end ( const size_type  row,
const size_type  col 
) const

Returns a read-only (constant) iterator that points to the one past the end element of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order (increasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
const_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of the first slice of A1 and A2 in the first slice of S
std::transform(A1.begin_slice(0),A1.end_slice(0),
A2.begin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
slice_range_iterator slip::Volume< T >::slice_end ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points one past the end element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
end slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
Example:
slip::Range<int> range(0,A1.dim1()-1,2);
//copy the the elements of the line (0,0) of A1 iterated according to the
//range in the line (1,1) of A2
std::copy(A1.slice_begin(0,0,range),A1.slice_end(0,0,range),A2.slice_begin(1,1));
template<typename T>
const_slice_range_iterator slip::Volume< T >::slice_end ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read_only iterator that points one past the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in ordinary element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
end const_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
Example:
slip::Volume<double> const A1(M); //M is an already existing %Volume
slip::Range<int> range(0,A1.dim1()-1,2);
//display the elements of the line (0,0) of A1 iterated according to the range
std::copy(A1.slice_begin(0,0,range),A1.slice_end(0,0,range),
std::ostream_iterator<double>(std::cout," "));
template<typename T>
reverse_slice_iterator slip::Volume< T >::slice_rbegin ( const size_type  row,
const size_type  col 
)

Returns a read/write iterator that points to the last element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
reverse_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of the first slice of A1 and A2
in the first slice of S in reverse order
std::transform(A1.rbegin_slice(0),A1.rend_slice(0),
A2.rbegin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
const_reverse_slice_iterator slip::Volume< T >::slice_rbegin ( const size_type  row,
const size_type  col 
) const

Returns a read-only (constant) iterator that points to the last element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
const_reverse_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of the first slice of A1 and A2
in the first slice of S in reverse order
std::transform(A1.rbegin_slice(0),A1.rend_slice(0),
A2.rbegin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
reverse_slice_range_iterator slip::Volume< T >::slice_rbegin ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points to the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in the reverse element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
begin reverse_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_slice_range_iterator slip::Volume< T >::slice_rbegin ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read only (constant) iterator that points to the last element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
begin const_reverse_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
template<typename T>
reverse_slice_iterator slip::Volume< T >::slice_rend ( const size_type  row,
const size_type  col 
)

Returns a read/write iterator that points to the one before the first element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
reverse_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
//copy the sum of the first slice of A1 and A2
in the first slice of S in reverse order
std::transform(A1.rbegin_slice(0),A1.rend_slice(0),
A2.rbegin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
const_reverse_slice_iterator slip::Volume< T >::slice_rend ( const size_type  row,
const size_type  col 
) const

Returns a read (constant) iterator that points to the one before the first element of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order (decreasing slice number).

Parameters
rowrow coordinate of the line
colcol coordinate of the line
Returns
const_reverse_slice_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Example:
slip::Volume<double> const A1(10,9,5);
slip::Volume<double> const A2(10,9,5);
//copy the sum of the first slice of A1 and A2
in the first slice of S in reverse order
std::transform(A1.rbegin_slice(0),A1.rend_slice(0),
A2.rbegin_slice(0),S.begin_slice(0),
std::plus<double>());
template<typename T>
reverse_slice_range_iterator slip::Volume< T >::slice_rend ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
)

Returns a read/write iterator that points to the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
end reverse_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
template<typename T>
const_reverse_slice_range_iterator slip::Volume< T >::slice_rend ( const size_type  row,
const size_type  col,
const slip::Range< int > &  range 
) const

Returns a read_only iterator that points one past the lastto the first element of the Range range of the of the line (row,col) threw the slices in the Volume. Iteration is done in reverse element order according to the Range.

Parameters
rowrow coordinate of the line
colcol coordinate of the line
rangeRange of the line to iterate.
Returns
end const_reverse_slice_range_iterator value
Remarks
This iterator is compatible with RandomAccessIterator algorithms.
Precondition
the range must be compatible with the slice dimensions
The range must be inside the whole range of the Volume.
template<typename T >
Volume< T >::size_type slip::Volume< T >::slice_size ( ) const
inline

Returns the number of elements in a slice of the Volume.

Definition at line 5685 of file Volume.hpp.

template<typename T >
Volume< T >::size_type slip::Volume< T >::slices ( ) const
inline

Returns the number of slices (first dimension size) in the Volume.

Definition at line 5644 of file Volume.hpp.

template<typename T >
T slip::Volume< T >::sum ( ) const
inline

Returns the sum of the elements of the Volume.

Precondition
size() != 0

Definition at line 5867 of file Volume.hpp.

template<typename T >
void slip::Volume< T >::swap ( Volume< T > &  M)
inline

Swaps data with another Volume.

Parameters
MA Volume of the same element type
Precondition
dim1() == M.dim1()
dim2() == M.dim2()
dim3() == M.dim3()

Definition at line 5694 of file Volume.hpp.

template<typename T >
void slip::Volume< T >::write_raw ( const std::string &  file_path_name) const
inline

Write a Volume to a file path name.

Parameters
file_path_name

Definition at line 5564 of file Volume.hpp.

template<typename T >
void slip::Volume< T >::write_tecplot ( const std::string &  file_path_name,
const std::string &  title 
) const
inline

Write a Volume to a tecplot file.

Parameters
file_path_name
titleTitle of the file. The data format is the following:
TITLE= title
VARIABLES= X Y Z I
ZONE T= data, I= rows() J= cols() K= slices() F=POINT
x y z I(x,y,z)
Remarks
x = j and y = (dim1 - 1) - i and z = k

Definition at line 5571 of file Volume.hpp.

template<typename T >
void slip::Volume< T >::write_to_images_tecplot ( const std::string &  file_path_name,
const std::string &  title,
const std::size_t  from,
const std::size_t  to 
) const
inline

Write slices of a Container3D to a tecplot file.

Parameters
file_path_nameString of the file path name
titleTitle of the file.
fromIndex of the first slice.
toIndex of the last slice. The data format is the following:
TITLE= title
VARIABLES= X Y I
ZONE T= image to I= rows() J= cols() F=POINT
<data of the first slice>
ZONE T= image (to+1) I= rows() J= cols() F=POINT
<data of the second slice>
...
Remarks
x = j and y = (dim1 - 1) - i

Definition at line 5579 of file Volume.hpp.

Friends And Related Function Documentation

template<typename T >
Volume< T > abs ( const Volume< T > &  V)
related

Returns the abs value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6031 of file Volume.hpp.

template<typename T >
Volume< T > acos ( const Volume< T > &  V)
related

Returns the acos value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6059 of file Volume.hpp.

template<typename T >
Volume< T > asin ( const Volume< T > &  V)
related

Returns the sin value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6077 of file Volume.hpp.

template<typename T >
Volume< T > atan ( const Volume< T > &  V)
related

Returns the atan value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6095 of file Volume.hpp.

template<typename T>
friend class boost::serialization::access
friend

Definition at line 3612 of file Volume.hpp.

template<typename T >
Volume< T > cos ( const Volume< T > &  V)
related

Returns the cos value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6050 of file Volume.hpp.

template<typename T >
Volume< T > cosh ( const Volume< T > &  V)
related

Returns the cosh value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6122 of file Volume.hpp.

template<typename T >
Volume< T > exp ( const Volume< T > &  V)
related

Returns the exp value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6104 of file Volume.hpp.

template<typename T >
Volume< T > log ( const Volume< T > &  V)
related

Returns the log value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6113 of file Volume.hpp.

template<typename T >
Volume< T > log10 ( const Volume< T > &  V)
related

Returns the log10 value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6149 of file Volume.hpp.

template<typename T >
T & max ( const Volume< T > &  M1)
related

Returns the max element of a Volume.

Parameters
M1the Volume
Returns
the min element

Definition at line 6024 of file Volume.hpp.

template<typename T >
T & min ( const Volume< T > &  M1)
related

Returns the min element of a Volume.

Parameters
M1the Volume
Returns
the min element

Definition at line 6017 of file Volume.hpp.

template<typename T>
bool operator!= ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

Volume inequality comparison

Parameters
xA Volume
yA Volume of the same type of x
Returns
true if !(x == y)

Definition at line 5713 of file Volume.hpp.

template<typename T>
bool operator< ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

Less than comparison operator (Volume ordering relation)

Parameters
xA Volume
yA Volume of the same type of x
Returns
true iff x is lexicographically less than y

Definition at line 5725 of file Volume.hpp.

template<typename T>
std::ostream& operator<< ( std::ostream &  out,
const self a 
)
friend

Write the Volume to the ouput stream.

Parameters
outoutput std::ostream
aVolume to write to the output stream

Definition at line 5342 of file Volume.hpp.

template<typename T>
bool operator<= ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

Less than equal comparison operator.

Parameters
xA Volume
yA Volume of the same type of x
Returns
true iff !(y > x)

Definition at line 5743 of file Volume.hpp.

template<typename T>
bool operator== ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

Volume equality comparison

Parameters
xA Volume
yA Volume of the same type of x
Returns
true iff the size and the elements of the Arrays are equal

Definition at line 5704 of file Volume.hpp.

template<typename T>
bool operator> ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

More than comparison operator.

Parameters
xA Volume
yA Volume of the same type of x
Returns
true iff y > x

Definition at line 5735 of file Volume.hpp.

template<typename T>
bool operator>= ( const Volume< T > &  x,
const Volume< T > &  y 
)
friend

More than equal comparison operator.

Parameters
xA Volume
yA Volume of the same type of x
Returns
true iff !(x < y)

Definition at line 5751 of file Volume.hpp.

template<typename T >
Volume< T > sin ( const Volume< T > &  V)
related

Returns the sin value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6068 of file Volume.hpp.

template<typename T >
Volume< T > sinh ( const Volume< T > &  V)
related

Returns the sinh value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6131 of file Volume.hpp.

template<typename T >
Volume< T > sqrt ( const Volume< T > &  V)
related

Returns the sqrt value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6041 of file Volume.hpp.

template<typename T >
Volume< T > tan ( const Volume< T > &  V)
related

Returns the tan value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6086 of file Volume.hpp.

template<typename T >
Volume< T > tanh ( const Volume< T > &  V)
related

Returns the tanh value of each element of the Volume.

Parameters
VThe Volume
Returns
the resulting Volume

Definition at line 6140 of file Volume.hpp.

Member Data Documentation

template<typename T>
const std::size_t slip::Volume< T >::DIM = 3
static

Definition at line 241 of file Volume.hpp.


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