FreePOOMA  2.4.1
Classes | Functions

An interface class for an N-dimensional tensor of numeric objects, and engines class for defining a general tensor, using Full and Antisymmetric engine tag classes. More...

#include "Utilities/PAssert.h"
#include "Utilities/ElementProperties.h"
#include "PETE/PETE.h"
#include "Pooma/PoomaOperatorTags.h"
#include "Domain/Loc.h"
#include "Tiny/TensorElements.h"
#include "Tiny/TensorOperators.h"
#include <iosfwd>
Include dependency graph for Tensor.h:
This graph shows which files directly or indirectly include this file:

Classes

class  TensorStorageSize< D, EngineTag >
class  TensorStorageSize< D, Full >
class  TensorStorageSize< D, Antisymmetric >
class  TensorStorageSize< D, Symmetric >
class  TensorStorageSize< D, Diagonal >
class  Tensor< D, T, EngineTag >
 Tensor is an interface class that takes three template parameters: More...
struct  ElementProperties< Tensor< D, T, E > >
class  TensorEngine< D, T, Full >
 TensorEngine definitions for a Full Tensor. More...
class  TensorEngine< D, T, Antisymmetric >
 TensorEngine definitions for an Antisymmetric Tensor. More...
class  TensorEngine< D, T, Antisymmetric >::AssignProxy
struct  TensorAssign< TensorEngine< 1, T, Antisymmetric >, T2, Op, 0, 1, 0, 1 >
 Special antisymmetric assignment class: Has specializations for different dimensionalities (for 1, 2, and 3, so far). More...
struct  TensorAssign< TensorEngine< 2, T, Antisymmetric >, T2, Op, 0, 2, 0, 2 >
struct  TensorAssign< TensorEngine< 3, T, Antisymmetric >, T2, Op, 0, 3, 0, 3 >
class  TensorEngine< D, T, Symmetric >
 TensorEngine definitions for a Symmetric Tensor. More...
struct  TensorAssign< TensorEngine< 2, T, Symmetric >, T2, Op, 0, 2, 0, 2 >
 Special symmetric assignment class: Has specializations for different dimensionalities (for 2, and 3, so far). More...
struct  TensorAssign< TensorEngine< 3, T, Symmetric >, T2, Op, 0, 3, 0, 3 >
class  TensorEngine< D, T, Diagonal >
 TensorEngine definitions for a Diagonal Tensor. More...
class  TensorEngine< D, T, Diagonal >::AssignProxy
struct  TensorAssign< TensorEngine< 2, T, Diagonal >, T2, Op, 0, 2, 0, 2 >
 Special diagonal assignment class: Has specializations for different dimensionalities (for 2, and 3, so far). More...
struct  TensorAssign< TensorEngine< 3, T, Diagonal >, T2, Op, 0, 3, 0, 3 >
struct  ComponentAccess< Tensor< D, T, E >, Loc< N > >
struct  TensorElem< TensorEngine< D, T, Full >, I, J >
struct  TensorElem< TensorEngine< D, T, Antisymmetric >, I, J >
struct  TensorElem< TensorEngine< D, T, Symmetric >, I, J >
struct  TensorElem< TensorEngine< D, T, Diagonal >, I, J >
struct  UnaryReturn< Tensor< D, T, E >, FnSymmetrize< OutputEngineTag > >
class  Symmetrize< OutputEngineTag, D, T, EngineTag >
class  Symmetrize< Symmetric, D, T, EngineTag >
class  Symmetrize< Symmetric, D, T, Antisymmetric >
class  Symmetrize< Symmetric, D, T, Diagonal >
class  Symmetrize< Antisymmetric, D, T, EngineTag >
class  Symmetrize< Antisymmetric, D, T, Symmetric >
class  Symmetrize< Antisymmetric, D, T, Diagonal >
class  Symmetrize< Diagonal, D, T, EngineTag >
class  Symmetrize< Diagonal, D, T, Antisymmetric >
class  Symmetrize< Diagonal, D, T, Symmetric >
class  Symmetrize< Full, D, T, EngineTag >

Functions

template<class T >
void reverseBytes (T &)
 The exported interface to the above template is the global reverseBytes template.
template<int D, class T , class E >
std::ostream & operator<< (std::ostream &out, const Tensor< D, T, E > &t)
 Output to a stream.
template<class OutputEngineTag , int D, class T , class EngineTag >
Tensor< D, T, OutputEngineTag > symmetrize (const Tensor< D, T, EngineTag > &x)
 The actual symmetrize() global function template.

Detailed Description

An interface class for an N-dimensional tensor of numeric objects, and engines class for defining a general tensor, using Full and Antisymmetric engine tag classes.


Function Documentation

template<class T >
void reverseBytes ( T &  t) [inline]

The exported interface to the above template is the global reverseBytes template.

The general template delegates directly to the ByteReverser class above.

template<int D, class T , class E >
std::ostream& operator<< ( std::ostream &  out,
const Tensor< D, T, E > &  t 
)

Output to a stream.

The format is: ( ( t(0,0) t(0,1),... ) ( t(1,0) t(1,1) ... ) ... )

References Tensor< D, T, EngineTag >::print().

template<class OutputEngineTag , int D, class T , class EngineTag >
Tensor<D, T, OutputEngineTag> symmetrize ( const Tensor< D, T, EngineTag > &  x)

The actual symmetrize() global function template.

To get around problems with partially specializating on return type, introduce the Symmetrize functor class, which the symmetrize() function uses. The partial specializations are of the Symmetrize functor. Forward declare the functor before the function template:

References Symmetrize< OutputEngineTag, D, T, EngineTag >::apply().