SyTen
syten::DenseTensor< rank, Scalar > Struct Template Reference

Dense tensor class. More...

#include <dense.h>

+ Inheritance diagram for syten::DenseTensor< rank, Scalar >:
+ Collaboration diagram for syten::DenseTensor< rank, Scalar >:

Public Types

typedef std::array< Index, rankCoord
 A set of indices uniquely describing one element. More...
 

Public Member Functions

MemoryUsage::MemorySize allocSize () const
 allocSize()/memory_size.h support. More...
 
Scalar * begin ()
 Pointer to start of data array. More...
 
const Scalar * begin () const
 Pointer to start of const array. More...
 
const Scalar * cbegin () const
 Pointer to start of const array. More...
 
const Scalar * cend () const
 Pointer one past the end of const array. More...
 
void checkDimensions (Coord const &dims) const
 Checks the supplied dimensions for validity, in particular to make sure that they are not too large. More...
 
void conjugate ()
 Conjugates every element. More...
 
 DenseTensor (std::initializer_list< Index > const dims_)
 Overload for initializer lists, which could otherwise be confused with the scalar ctor below. More...
 
 DenseTensor (Coord dims_, Init do_init)
 Ctor with possibility to request calloc()-based memory allocation for the contained array. More...
 
 DenseTensor ()
 Creates a zero-dimensional tensor. More...
 
 DenseTensor (Scalar value)
 Creates a scalar one-dimensional tensor. More...
 
 DenseTensor (Coord dims_, Scalar initialValue_=Scalar(0.))
 Ctor creates a dense tensor of specified dimension and initial value. More...
 
Index dim (Index which) const
 Return the size of the which-th dimension, 1-indexed. More...
 
Scalar * end ()
 Pointer one past the end of array. More...
 
const Scalar * end () const
 Pointer one past the end of const array. More...
 
DenseTensor< rank, Scalar > eternalised () const
 Returns a copy of *this with data allocated on the eternal pool. More...
 
DynArray< Scalar > & get_data ()
 Returns a writeable reference to the private data member. More...
 
DynArray< Scalar > const & get_data () const
 Returns a const reference to the private data member. More...
 
Index getCoordinate (Coord coordinates) const
 Given a set of indices coordinates, return the offset into data corresponding to these indices. More...
 
Coord getDims () const
 Return an array of dimensions. More...
 
Size getNumEntries () const
 Return the number of entries in this tensor. More...
 
void normalise ()
 Normalise the tensor such that its norm() is 1. More...
 
 operator DenseTensor< rank, std::complex< Scalar > > () const
 Conversion operator complexifying a dense tensor. More...
 
Scalar & operator[] (Coord coordinates)
 Return the element at specified index position. More...
 
Scalar const & operator[] (Coord coordinates) const
 Return the element at specified index position. More...
 
Scalar & operator[] (Size const c)
 Return the element at specified offset position. More...
 
Scalar const & operator[] (Size const c) const
 Return the element at specified offset position. More...
 
template<class Archive >
void serialize (Archive &ar, const unsigned int in_version)
 Boost serialisation support. More...
 
Size size () const
 Return the number of entries in this tensor. More...
 

Public Attributes

Coord dims
 The dimensions of the tensor, i.e. More...
 

Static Public Attributes

static constexpr unsigned int version = 3
 Bump this if any of the above change. More...
 

Private Attributes

DynArray< Scalar > data
 Data vector holding the entries. More...
 

Detailed Description

template<Rank rank, typename Scalar = SDef>
struct syten::DenseTensor< rank, Scalar >

Dense tensor class.

Template Parameters
rankrank of the tensor, i.e. number of dimensions
ScalarScalar type of the tensor, i.e. the type of individual entries

As a rule, legs are 1-indexed, i.e. if one wants the dimension of the first leg, one calls dim(1). Elements are 0-indexed, i.e. the first scalar in the top leftmost corner sits at coordinate [0, 0, …, 0] and offset 0.


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