IndexedMoments< Dim, P > Class Template Reference

#include <IndexedMoments.H>

Inheritance diagram for IndexedMoments< Dim, P >:

Inheritance graph
[legend]

List of all members.


Detailed Description

template<int Dim, int P>
class IndexedMoments< Dim, P >

Vector-like container for multi-indexed Real values up to some max multi-index P (sum of indicies <= P). Layout is 0th dim first, then 1st, etc.
Template Parameters:
D The Dimension of the container

Public Member Functions

 IndexedMoments ()
 constructor---make statics first time called
 ~IndexedMoments ()
 Destructor.
Realoperator[] (int a_i)
const Realoperator[] (int a_i) const
Realoperator[] (const IndexTM< int, Dim > &a_index)
const Realoperator[] (const IndexTM< int, Dim > &a_index) const
IndexedMoments< Dim, P > & operator+= (const IndexedMoments< Dim, P > &increment)
 add compoenentwise
IndexedMoments< Dim, P > & operator*= (const Real &a_factor)
 multiply each component by constant
void linearOut (void *const a_outbuf) const
void linearIn (const void *const a_inbuf)
void setRegular (const Real a_dx)
 set to a regular IndexTM
void setToRegular (const Real a_dx)
bool isRegular () const
IndexedMoments< Dim, P > & operator= (const map< IndexTM< int, Dim >, Real > &a_mapin)
 for use with irregnode
IndexedMoments< Dim, P > & operator= (const IndexedMoments< Dim, P > &a_input)
void shift (const IndexTM< Real, Dim > &a_distance)
 shift moment by the input distance.
void setToZero ()
void spout () const
 outputs the current state to pout() (a la parstream.H)
void setToTruncatedMultiply (const IndexedMoments< Dim, P > &a_CA, const IndexedMoments< Dim, P > &a_CB)
void divideByFactorial ()
 divides each entry by p!
void multiplyByFactorial ()
 multiply each entry by p!

Static Public Member Functions

static int size ()
 number of reals in the vector
static size_t linearSize ()
 for linearization
static const Vector< IndexTM
< int, Dim > > & 
getMonomialPowers ()
 monomial powers
static int indexOf (IndexTM< int, Dim > a_index)
 Calculate what linear index this multi-index is.
static IndexTM< int, Dim > getIndex (const int &a_linearIndex)

Protected Member Functions

Real getMoment (const IndexTM< int, Dim > &a_mono, const map< IndexTM< int, Dim >, Real > &a_mapin) const

Static Protected Member Functions

static void setStatics ()
static void setMultiIndicies ()
static void setSize ()

Static Protected Attributes

static bool s_staticsSet = false
static int s_size = 0
static Vector< IndexTM< int,
Dim > > 
s_multiIndicies = Vector<IndexTM<int, Dim> >()

Private Attributes

int m_isRegular
Vector< Realm_moms

Static Private Attributes

static const int s_max_sizes [][CH_IM_MAX_POWER+1]

Constructor & Destructor Documentation

template<int Dim, int P>
IndexedMoments< Dim, P >::IndexedMoments (  )  [inline]

template<int Dim, int P>
IndexedMoments< Dim, P >::~IndexedMoments (  )  [inline]

Destructor.


Member Function Documentation

template<int Dim, int P>
Real& IndexedMoments< Dim, P >::operator[] ( int  a_i  )  [inline]

Retrieve the moment from the index a_index The lexigraphical index to the data

template<int Dim, int P>
const Real& IndexedMoments< Dim, P >::operator[] ( int  a_i  )  const [inline]

Retrieve the moment from the index a_index The lexigraphical index to the data

template<int Dim, int P>
Real& IndexedMoments< Dim, P >::operator[] ( const IndexTM< int, Dim > &  a_index  )  [inline]

Retrieve the moment from the index a_index The multi-index that's needed

template<int Dim, int P>
const Real& IndexedMoments< Dim, P >::operator[] ( const IndexTM< int, Dim > &  a_index  )  const [inline]

Retrieve the moment from the index a_index The multi-index that's needed

template<int Dim, int P>
IndexedMoments< Dim, P > & IndexedMoments< Dim, P >::operator+= ( const IndexedMoments< Dim, P > &  increment  )  [inline]

add compoenentwise

template<int Dim, int P>
IndexedMoments< Dim, P > & IndexedMoments< Dim, P >::operator*= ( const Real a_factor  )  [inline]

multiply each component by constant

multiply each component by factor

template<int Dim, int P>
static int IndexedMoments< Dim, P >::size (  )  [inline, static]

template<int Dim, int P>
static size_t IndexedMoments< Dim, P >::linearSize ( void   )  [inline, static]

for linearization

template<int Dim, int P>
void IndexedMoments< Dim, P >::linearOut ( void *const   a_outbuf  )  const [inline]

template<int Dim, int P>
void IndexedMoments< Dim, P >::linearIn ( const void *const   a_inbuf  )  [inline]

template<int Dim, int P>
void IndexedMoments< Dim, P >::setRegular ( const Real  a_dx  )  [inline]

template<int Dim, int P>
void IndexedMoments< Dim, P >::setToRegular ( const Real  a_dx  )  [inline]

template<int Dim, int P>
static const Vector<IndexTM<int,Dim> >& IndexedMoments< Dim, P >::getMonomialPowers (  )  [inline, static]

template<int Dim, int P>
bool IndexedMoments< Dim, P >::isRegular (  )  const [inline]

template<int Dim, int P>
IndexedMoments< Dim, P > & IndexedMoments< Dim, P >::operator= ( const map< IndexTM< int, Dim >, Real > &  a_mapin  )  [inline]

for use with irregnode

References IndexedMoments< Dim, P >::getMoment().

template<int Dim, int P>
IndexedMoments<Dim, P>& IndexedMoments< Dim, P >::operator= ( const IndexedMoments< Dim, P > &  a_input  )  [inline]

template<int Dim, int P>
void IndexedMoments< Dim, P >::shift ( const IndexTM< Real, Dim > &  a_distance  )  [inline]

shift moment by the input distance.

shift moment by the input vector distance. this changes the current object from integral(x^p) to integral((x+x0)^p), where x0 = a_distance

References CH_TIME, IndexTM< T, N >::componentwiseLE(), and POW().

Referenced by checkMoments().

template<int Dim, int P>
void IndexedMoments< Dim, P >::setToZero (  )  [inline]

template<int Dim, int P>
int IndexedMoments< Dim, P >::indexOf ( IndexTM< int, Dim >  a_index  )  [inline, static]

template<int Dim, int P>
static IndexTM<int,Dim> IndexedMoments< Dim, P >::getIndex ( const int &  a_linearIndex  )  [inline, static]

Referenced by getIndMomMultiIndex().

template<int Dim, int P>
void IndexedMoments< Dim, P >::spout (  )  const [inline]

outputs the current state to pout() (a la parstream.H)

References pout().

Referenced by IrregNode::spout().

template<int Dim, int P>
void IndexedMoments< Dim, P >::setToTruncatedMultiply ( const IndexedMoments< Dim, P > &  a_CA,
const IndexedMoments< Dim, P > &  a_CB 
) [inline]

Say = sum_p(CA m^p), and = sum_q(CB m^q).

This sets the current data to the set of coefficents M such that <AB> = sum_r(M m^r) + O(h^P+1).

We drop all coefficents for powers s.t. p + q > P.

References IndexedMoments< Dim, P >::setToZero(), and IndexTM< T, N >::sum().

template<int Dim, int P>
void IndexedMoments< Dim, P >::divideByFactorial (  )  [inline]

divides each entry by p!

References factorial(), and pfactorial().

template<int Dim, int P>
void IndexedMoments< Dim, P >::multiplyByFactorial (  )  [inline]

multiply each entry by p!

References factorial(), and pfactorial().

template<const int Dim, const int P>
Real IndexedMoments< Dim, P >::getMoment ( const IndexTM< int, Dim > &  a_mono,
const map< IndexTM< int, Dim >, Real > &  a_mapin 
) const [inline, protected]

template<int Dim, int P>
void IndexedMoments< Dim, P >::setStatics (  )  [inline, static, protected]

template<int Dim, int P>
void IndexedMoments< Dim, P >::setMultiIndicies (  )  [inline, static, protected]

template<int Dim, int P>
void IndexedMoments< Dim, P >::setSize (  )  [inline, static, protected]


Member Data Documentation

template<int Dim, int P>
bool IndexedMoments< Dim, P >::s_staticsSet = false [inline, static, protected]

template<int Dim, int P>
int IndexedMoments< Dim, P >::s_size = 0 [inline, static, protected]

template<int Dim, int P>
Vector< IndexTM< int, Dim > > IndexedMoments< Dim, P >::s_multiIndicies = Vector<IndexTM<int, Dim> >() [inline, static, protected]

template<int Dim, int P>
int IndexedMoments< Dim, P >::m_isRegular [private]

template<int Dim, int P>
Vector<Real> IndexedMoments< Dim, P >::m_moms [private]

template<int Dim, int P>
const int IndexedMoments< Dim, P >::s_max_sizes [inline, static, private]

Initial value:

 
  {
    {1, 2,  3,  4,  5,  6,  7,   8,   9}, 
    {1, 3,  6, 10, 15, 21, 28,  36,  45}, 
    {1, 4, 10, 20, 35, 56, 84, 120, 165}  
  }

Referenced by IndexedMoments< Dim, P >::indexOf(), and IndexedMoments< Dim, P >::setSize().


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

Generated on Fri Apr 5 04:25:07 2019 for Chombo + EB by  doxygen 1.5.5