FreePOOMA  2.4.1
Public Types | Public Member Functions
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > > Class Template Reference

Multi-patch-view-engine manages a view of a multi-patch engine. More...

#include <MultiPatchEngine.h>

List of all members.

Public Types

enum  { dimensions = Dim }
enum  { hasDataObject = false }
enum  { dynamic = PatchEngine_t::dynamic }
enum  { zeroBased = true }
enum  { multiPatch = true }
typedef MultiPatchView
< LayoutTag, PatchTag, Dim2 > 
Tag_t
typedef Engine< Dim, T, Tag_tThis_t
typedef Engine< Dim, T, Tag_tEngine_t
typedef Engine< Dim2, T,
MultiPatch< LayoutTag,
PatchTag > > 
ViewedEngine_t
typedef Interval< Dim > Domain_t
typedef T Element_t
typedef PatchTag PatchTag_t
typedef Engine< Dim2, T,
PatchTag_t
PatchEngine_t
typedef PatchEngine_t::ElementRef_t ElementRef_t
typedef RefCountedBlockPtr
< PatchEngine_t
PatchContainer_t
typedef MultiPatchLayoutTraits
< LayoutTag, Dim2 > 
ViewedLayoutTraits_t
typedef
ViewedLayoutTraits_t::Layout_t 
ViewedLayout_t
typedef
ViewedLayoutTraits_t::template
View< Dim > 
NestedViewTraits_t
typedef
NestedViewTraits_t::Layout_t 
Layout_t

Public Member Functions

 Engine ()
 The default constructor is available, but must be followed by use of operator= to set this object up in a usable state.
template<class DT >
 Engine (const ViewedEngine_t &engine, const Domain< Dim2, DT > &domain)
 The constructors take a MultiPatch and a non-slice domain like an Interval<Dim2> or a Range<Dim2>.
template<class DT >
 Engine (const ViewedEngine_t &engine, const SliceDomain< DT > &domain)
 The constructors take a MultiPatch and a slice domain like a SliceInterval<Dim2,Dim> or a SliceRange<Dim2,Dim>.
template<class DT >
 Engine (const This_t &engine, const Domain< Dim, DT > &domain)
 The constructors take a MultiPatchView and a non-slice domain like an Interval<Dim2> or a Range<Dim2>.
template<int OrigDim, class DT >
 Engine (const Engine< OrigDim, T, Tag_t > &engine, const SliceDomain< DT > &domain)
 The constructors take a MultiPatchView and a slice domain like a SliceInterval<OrigDim,Dim> or a SliceRange<OrigDim,Dim>.
 Engine (const Engine_t &model)
 Copy constructor.
 ~Engine ()
 non - Trivial.
Engine_toperator= (const Engine_t &model)
 Assignment operators.
NewEngine< This_t, INode< Dim >
>::Type_t 
globalPatch (const INode< Dim > &inode) const
 Return a patch given a Node or INode.
template<class Domain >
NewEngine< This_t, Node
< Domain > >::Type_t 
globalPatch (const Node< Domain > &node) const
Layout_tlayout ()
 Return the layout.
const Layout_tlayout () const
const Domain_tdomain () const
 Return the domain and base domain.
const Domain_tinnerDomain () const
int first (int) const
 Return the first index in the given direction (always zero).
bool initialized () const
 Return whether we have been initialized yet or not.
void fillGuards () const
 Fill the internal guard cells.
void fillGuards (const GuardLayers< Dim2 > &g) const
void setGuards (const T &val) const
 Set the internal guard cells to a particular value (default zero)
void accumulateFromGuards () const
 Accumulate from the internal guards into.
void setDirty () const
 Set and get the dirty flag (fillGuard is a no-op unless the dirty flag is true).
void clearDirty (int face=-1) const
bool isDirty (int face=-1) const
const PatchContainer_tdata () const
 Return the data.
template<int D1, class T1 >
bool sameController (const Engine< D1, T1, Tag_t > &e) const
 Return whether or not this engine has the same controller as another.
PatchContainer_t block () const
 Return a (shallow) copy of the data block.
const ViewedEngine_tbaseEngine () const
 Return the base engine to be used by constructors.
Element access via Loc.
Element_t read (const Loc< Dim > &) const
ElementRef_t operator() (const Loc< Dim > &) const
Element access via ints for speed.
Element_t read (int) const
Element_t read (int, int) const
Element_t read (int, int, int) const
Element_t read (int, int, int, int) const
Element_t read (int, int, int, int, int) const
Element_t read (int, int, int, int, int, int) const
Element_t read (int, int, int, int, int, int, int) const
ElementRef_t operator() (int) const
ElementRef_t operator() (int, int) const
ElementRef_t operator() (int, int, int) const
ElementRef_t operator() (int, int, int, int) const
ElementRef_t operator() (int, int, int, int, int) const
ElementRef_t operator() (int, int, int, int, int, int) const
ElementRef_t operator() (int, int, int, int, int, int, int) const

Detailed Description

template<int Dim, class T, class LayoutTag, class PatchTag, int Dim2>
class Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >

Multi-patch-view-engine manages a view of a multi-patch engine.

The Domain of this engine is an Interval<Dim>, which is a tensor product of Dim 1-D intervals. For view-engines, these intervals are 0-based (i.e. [0..N0]x[0..N1] etc.).

The Dim2 parameter gives the dimension of the MP that ultimately spawned this MPView. This does not necessarily need to equal Dim because of the possibility of a slice.

Note that this is NOT the domain of the underlying data storage, but rather it is the domain as presented to the outside world.


Member Typedef Documentation

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef MultiPatchView<LayoutTag, PatchTag, Dim2> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Tag_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef Engine<Dim,T,Tag_t> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::This_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef Engine<Dim,T,Tag_t> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef Engine<Dim2,T,MultiPatch<LayoutTag,PatchTag> > Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ViewedEngine_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef Interval<Dim> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Domain_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef T Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef PatchTag Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::PatchTag_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef Engine<Dim2, T, PatchTag_t> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::PatchEngine_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef PatchEngine_t::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef RefCountedBlockPtr<PatchEngine_t> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::PatchContainer_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef MultiPatchLayoutTraits<LayoutTag,Dim2> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ViewedLayoutTraits_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef ViewedLayoutTraits_t::Layout_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ViewedLayout_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef ViewedLayoutTraits_t::template View<Dim> Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::NestedViewTraits_t
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
typedef NestedViewTraits_t::Layout_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Layout_t

Member Enumeration Documentation

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
anonymous enum
Enumerator:
dimensions 
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
anonymous enum
Enumerator:
hasDataObject 
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
anonymous enum
Enumerator:
dynamic 
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
anonymous enum
Enumerator:
zeroBased 
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
anonymous enum
Enumerator:
multiPatch 

Constructor & Destructor Documentation

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( ) [inline]

The default constructor is available, but must be followed by use of operator= to set this object up in a usable state.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<class DT >
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( const ViewedEngine_t engine,
const Domain< Dim2, DT > &  domain 
) [inline]

The constructors take a MultiPatch and a non-slice domain like an Interval<Dim2> or a Range<Dim2>.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<class DT >
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( const ViewedEngine_t engine,
const SliceDomain< DT > &  domain 
) [inline]

The constructors take a MultiPatch and a slice domain like a SliceInterval<Dim2,Dim> or a SliceRange<Dim2,Dim>.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<class DT >
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( const This_t engine,
const Domain< Dim, DT > &  domain 
) [inline]

The constructors take a MultiPatchView and a non-slice domain like an Interval<Dim2> or a Range<Dim2>.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<int OrigDim, class DT >
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( const Engine< OrigDim, T, Tag_t > &  engine,
const SliceDomain< DT > &  domain 
) [inline]

The constructors take a MultiPatchView and a slice domain like a SliceInterval<OrigDim,Dim> or a SliceRange<OrigDim,Dim>.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Engine ( const Engine_t model)

Copy constructor.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::~Engine ( )

non - Trivial.


Member Function Documentation

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > > & Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator= ( const Engine_t model)

Assignment operators.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( const Loc< Dim > &  loc) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( const Loc< Dim > &  loc) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1,
int  i2 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1,
int  i2,
int  i3 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
int  i5 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::Element_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::read ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
int  i5,
int  i6 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1,
int  i2 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1,
int  i2,
int  i3 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
int  i5 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::ElementRef_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::operator() ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
int  i5,
int  i6 
) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
NewEngine<This_t, INode<Dim> >::Type_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::globalPatch ( const INode< Dim > &  inode) const [inline]

Return a patch given a Node or INode.

This is different than in MultiPatch because we really need to take a view here.

References contains(), INode< Dim >::domain(), INode< Dim >::globalID(), and PAssert.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<class Domain >
NewEngine<This_t, Node<Domain> >::Type_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::globalPatch ( const Node< Domain > &  node) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
Layout_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::layout ( ) [inline]

Return the layout.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
const Layout_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::layout ( ) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
const Domain_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::domain ( ) const [inline]

Return the domain and base domain.

References Interval< Dim >::domain.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
const Domain_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::innerDomain ( ) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
int Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::first ( int  ) const [inline]

Return the first index in the given direction (always zero).

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
bool Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::initialized ( ) const [inline]

Return whether we have been initialized yet or not.

References Domain< Dim, DT >::initialized().

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::fillGuards ( ) const [inline]

Fill the internal guard cells.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::fillGuards ( const GuardLayers< Dim2 > &  g) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::setGuards ( const T &  val) const [inline]

Set the internal guard cells to a particular value (default zero)

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::accumulateFromGuards ( ) const [inline]

Accumulate from the internal guards into.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::setDirty ( ) const [inline]

Set and get the dirty flag (fillGuard is a no-op unless the dirty flag is true).

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
void Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::clearDirty ( int  face = -1) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
bool Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::isDirty ( int  face = -1) const [inline]
template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
const PatchContainer_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::data ( ) const [inline]

Return the data.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
template<int D1, class T1 >
bool Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::sameController ( const Engine< D1, T1, Tag_t > &  e) const [inline]

Return whether or not this engine has the same controller as another.

We find this by finding if the beginning of the block for each of them is the same.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
PatchContainer_t Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::block ( ) const [inline]

Return a (shallow) copy of the data block.

WARNING: If a copy of the data block exists at the time that all views of the engine go away, the dirty flag will not be deleted. So using this should be avoided, if possible.

template<int Dim, class T , class LayoutTag , class PatchTag , int Dim2>
const ViewedEngine_t& Engine< Dim, T, MultiPatchView< LayoutTag, PatchTag, Dim2 > >::baseEngine ( ) const [inline]

Return the base engine to be used by constructors.


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