FreePOOMA  2.4.1
Public Types | Public Member Functions
FieldEngine< Mesh, T, EngineTag > Class Template Reference

FieldEngineBase manages a hierarchy of engines, making it possible for FieldEngine specializations to implement geometry-specific behavior only. More...

#include <FieldEngine.h>

List of all members.

Public Types

enum  { dimensions = Mesh::dimensions }
enum  { Dim = dimensions }
typedef FieldEngine< Mesh, T,
EngineTag > 
This_t
typedef FieldEngineBaseData
< Dim, T, EngineTag > 
Data_t
typedef Engine< Dim, T, EngineTag > Engine_t
typedef Engine_t::Domain_t Domain_t
typedef Engine_t::Layout_t Layout_t
typedef Engine_t::Element_t Element_t
typedef Engine_t::ElementRef_t ElementRef_t
typedef GuardLayers< DimGuardLayers_t

Public Member Functions

 FieldEngine ()
 Default constructor.
template<class Layout2 >
 FieldEngine (const Centering< Dim > &centering, const Layout2 &layout, const Mesh &mesh, int materials=1)
 General version takes centering, layout, mesh, materials.
 FieldEngine (const This_t &model)
 Copy constructor.
 FieldEngine (const This_t &model, const Pooma::DontCopyRelations &d)
void initialize (const This_t &model)
template<class Subject >
void makeOwnCopy (const Subject &s)
 Make a distinct copy of this fieldEngineBase.
Domain_t translateToVertexDomain (const Domain_t &d) const
 Domain translation function.
Domain_t inputDomainToVertexDomain (const Domain_t &d) const
 Converts an input domain (which is a cell domain for fields with multiple centering points and a centering domain for one centering point) to the corresponding vertex domain.
Sub-field view constructors
 FieldEngine (const This_t &model, int subField)
 Takes a view of.
 FieldEngine (const This_t &model, int m, int c)
 Takes a view of the specified centering point of the specified material.
 FieldEngine (const This_t &model, int c, const Pooma::CenteringViewTag &)
 Takes a view of the specified centering point from all materials.
 FieldEngine (const This_t &model, int m, const Pooma::MaterialViewTag &)
 Takes a view of the specified material retaining all centering points.
 FieldEngine (int c, const This_t &model)
 Takes a view of the specified centering point of the first material.
View constructors.
template<class T2 , class EngineTag2 >
 FieldEngine (const FieldEngine< Mesh, T2, EngineTag2 > &model, const Domain_t &d)
template<class Mesh2 , class T2 , class EngineTag2 , class Domain >
 FieldEngine (const FieldEngine< Mesh2, T2, EngineTag2 > &model, const Domain &d)
 This constructor handle weird things like range views.
template<class Mesh2 , class EngineTag2 >
 FieldEngine (const FieldEngine< Mesh2, T, EngineTag2 > &model, const SliceInterval< Mesh2::dimensions, Dim > &d)
 This constructor handles SliceInterval views.
template<class Mesh2 , class EngineTag2 >
 FieldEngine (const FieldEngine< Mesh2, T, EngineTag2 > &model, const SliceRange< Mesh2::dimensions, Dim > &d)
 This constructor handles SliceRange views.
template<class T2 , class EngineTag2 >
 FieldEngine (const FieldEngine< Mesh, T2, EngineTag2 > &model, const INode< Dim > &i)
template<class Mesh2 , class T2 , class EngineTag2 , class Tag >
 FieldEngine (const FieldEngine< Mesh2, T2, EngineTag2 > &model, const EngineView< Tag > &ev)
template<class EngineTag2 >
 FieldEngine (const FieldEngine< Mesh, T, EngineTag2 > &model, const FieldEnginePatch< Dim > &p)
template<class Mesh2 , class T2 , class EngineTag2 , class Components >
 FieldEngine (const FieldEngine< Mesh2, T2, EngineTag2 > &model, const ComponentWrapper< Components > &cw)
void addSubFields ()
int numSubFields () const
 FIXME: This function is deprecated.
Engine_tengine ()
const Engine_tengine () const
Engine_tengine (int m, int c)
const Engine_tengine (int m, int c) const
RelationListrelations () const
RelationListrelations (int m, int c) const
const GuardLayers_tguardLayers () const
GuardLayers_tguardLayers ()
int numMaterials () const
Domain_tphysicalCellDomain ()
 The physical cell domain of all the sub-fields.
const Domain_tphysicalCellDomain () const
Domain_t totalCellDomain () const
Domain_t physicalDomain () const
 Returns the physical domain suitable for viewing regardless of centering point count.
Domain_t physicalDomain (int i) const
 Returns the physical domain of the specified centering.
Domain_t totalDomain () const
 Returns the total domain suitable for viewing regardless of centering point count.
Domain_t totalDomain (int i) const
 Returns the total domain of the specified centering.
const Centering< Dim > & centering () const
int centeringSize () const
Mesh & mesh ()
const Mesh & mesh () const
Data_tdata (int material, int centering)
const Data_tdata (int material, int centering) const

Detailed Description

template<class Mesh, class T, class EngineTag>
class FieldEngine< Mesh, T, EngineTag >

FieldEngineBase manages a hierarchy of engines, making it possible for FieldEngine specializations to implement geometry-specific behavior only.


Member Typedef Documentation

template<class Mesh, class T, class EngineTag>
typedef FieldEngine<Mesh, T, EngineTag> FieldEngine< Mesh, T, EngineTag >::This_t
template<class Mesh, class T, class EngineTag>
typedef FieldEngineBaseData<Dim, T, EngineTag> FieldEngine< Mesh, T, EngineTag >::Data_t
template<class Mesh, class T, class EngineTag>
typedef Engine<Dim, T, EngineTag> FieldEngine< Mesh, T, EngineTag >::Engine_t
template<class Mesh, class T, class EngineTag>
typedef Engine_t::Domain_t FieldEngine< Mesh, T, EngineTag >::Domain_t
template<class Mesh, class T, class EngineTag>
typedef Engine_t::Layout_t FieldEngine< Mesh, T, EngineTag >::Layout_t
template<class Mesh, class T, class EngineTag>
typedef Engine_t::Element_t FieldEngine< Mesh, T, EngineTag >::Element_t
template<class Mesh, class T, class EngineTag>
typedef Engine_t::ElementRef_t FieldEngine< Mesh, T, EngineTag >::ElementRef_t
template<class Mesh, class T, class EngineTag>
typedef GuardLayers<Dim> FieldEngine< Mesh, T, EngineTag >::GuardLayers_t

Member Enumeration Documentation

template<class Mesh, class T, class EngineTag>
anonymous enum
Enumerator:
dimensions 
template<class Mesh, class T, class EngineTag>
anonymous enum
Enumerator:
Dim 

Constructor & Destructor Documentation

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( ) [inline]

Default constructor.

template<class Mesh, class T, class EngineTag>
template<class Layout2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const Centering< Dim > &  centering,
const Layout2 &  layout,
const Mesh &  mesh,
int  materials = 1 
) [inline]
template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model) [inline]

Copy constructor.

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model,
int  subField 
) [inline]

Takes a view of.

  • the specified material including all centering points, if there is more than one material
  • the specified centering, if there is only one material These are weird semantics and thus this method is deprecated.

References FieldEngine< Mesh, T, EngineTag >::centering(), FieldEngine< Mesh, T, EngineTag >::numMaterials(), and subField().

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model,
int  m,
int  c 
) [inline]

Takes a view of the specified centering point of the specified material.

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model,
int  c,
const Pooma::CenteringViewTag  
) [inline]

Takes a view of the specified centering point from all materials.

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model,
int  m,
const Pooma::MaterialViewTag  
) [inline]

Takes a view of the specified material retaining all centering points.

template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( int  c,
const This_t model 
) [inline]

Takes a view of the specified centering point of the first material.

This is useless for fields with multiple materials and thus this method is deprecated. Use FieldEngine(field, 0, c).

template<class Mesh, class T, class EngineTag>
template<class T2 , class EngineTag2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh, T2, EngineTag2 > &  model,
const Domain_t d 
) [inline]
template<class Mesh, class T, class EngineTag>
template<class Mesh2 , class T2 , class EngineTag2 , class Domain >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh2, T2, EngineTag2 > &  model,
const Domain d 
) [inline]
template<class Mesh, class T, class EngineTag>
template<class Mesh2 , class EngineTag2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh2, T, EngineTag2 > &  model,
const SliceInterval< Mesh2::dimensions, Dim > &  d 
) [inline]

This constructor handles SliceInterval views.

For this view we get a NoMesh mesh. We can only handle fields with one centering point.

template<class Mesh, class T, class EngineTag>
template<class Mesh2 , class EngineTag2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh2, T, EngineTag2 > &  model,
const SliceRange< Mesh2::dimensions, Dim > &  d 
) [inline]

This constructor handles SliceRange views.

For this view we get a NoMesh mesh. We can only handle fields with one centering point.

template<class Mesh, class T, class EngineTag>
template<class T2 , class EngineTag2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh, T2, EngineTag2 > &  model,
const INode< Dim > &  i 
) [inline]
template<class Mesh, class T, class EngineTag>
template<class Mesh2 , class T2 , class EngineTag2 , class Tag >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh2, T2, EngineTag2 > &  model,
const EngineView< Tag > &  ev 
) [inline]
template<class Mesh, class T, class EngineTag>
template<class EngineTag2 >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh, T, EngineTag2 > &  model,
const FieldEnginePatch< Dim > &  p 
) [inline]
template<class Mesh, class T, class EngineTag>
template<class Mesh2 , class T2 , class EngineTag2 , class Components >
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const FieldEngine< Mesh2, T2, EngineTag2 > &  model,
const ComponentWrapper< Components > &  cw 
) [inline]
template<class Mesh, class T, class EngineTag>
FieldEngine< Mesh, T, EngineTag >::FieldEngine ( const This_t model,
const Pooma::DontCopyRelations d 
) [inline]

Member Function Documentation

template<class Mesh, class T, class EngineTag>
void FieldEngine< Mesh, T, EngineTag >::initialize ( const This_t model) [inline]
template<class Mesh, class T, class EngineTag>
void FieldEngine< Mesh, T, EngineTag >::addSubFields ( ) [inline]
template<class Mesh, class T, class EngineTag>
int FieldEngine< Mesh, T, EngineTag >::numSubFields ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Engine_t& FieldEngine< Mesh, T, EngineTag >::engine ( ) [inline]
template<class Mesh, class T, class EngineTag>
const Engine_t& FieldEngine< Mesh, T, EngineTag >::engine ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Engine_t& FieldEngine< Mesh, T, EngineTag >::engine ( int  m,
int  c 
) [inline]
template<class Mesh, class T, class EngineTag>
const Engine_t& FieldEngine< Mesh, T, EngineTag >::engine ( int  m,
int  c 
) const [inline]
template<class Mesh, class T, class EngineTag>
RelationList& FieldEngine< Mesh, T, EngineTag >::relations ( ) const [inline]
template<class Mesh, class T, class EngineTag>
RelationList& FieldEngine< Mesh, T, EngineTag >::relations ( int  m,
int  c 
) const [inline]
template<class Mesh, class T, class EngineTag>
const GuardLayers_t& FieldEngine< Mesh, T, EngineTag >::guardLayers ( ) const [inline]
template<class Mesh, class T, class EngineTag>
GuardLayers_t& FieldEngine< Mesh, T, EngineTag >::guardLayers ( ) [inline]
template<class Mesh, class T, class EngineTag>
int FieldEngine< Mesh, T, EngineTag >::numMaterials ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Domain_t& FieldEngine< Mesh, T, EngineTag >::physicalCellDomain ( ) [inline]

The physical cell domain of all the sub-fields.

Can be converted to the centering physical domain by means of cellDomainToCenteringDomain().

Referenced by FieldStencilSimple< Functor, Expression >::make(), FieldShiftSimple< Expression >::make(), and Field< Mesh, T, EngineTag >::physicalCellDomain().

template<class Mesh, class T, class EngineTag>
const Domain_t& FieldEngine< Mesh, T, EngineTag >::physicalCellDomain ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::totalCellDomain ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::physicalDomain ( ) const [inline]

Returns the physical domain suitable for viewing regardless of centering point count.

References cellDomainToCenteringDomain(), and FieldEngine< Mesh, T, EngineTag >::centeringSize().

Referenced by Field< Mesh, T, EngineTag >::domain(), and Field< Mesh, T, EngineTag >::physicalDomain().

template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::physicalDomain ( int  i) const [inline]

Returns the physical domain of the specified centering.

References cellDomainToCenteringDomain().

template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::totalDomain ( ) const [inline]

Returns the total domain suitable for viewing regardless of centering point count.

References cellDomainToCenteringDomain(), FieldEngine< Mesh, T, EngineTag >::centeringSize(), and FieldEngine< Mesh, T, EngineTag >::totalCellDomain().

Referenced by Field< Mesh, T, EngineTag >::totalDomain().

template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::totalDomain ( int  i) const [inline]

Returns the total domain of the specified centering.

References cellDomainToCenteringDomain(), and FieldEngine< Mesh, T, EngineTag >::totalCellDomain().

template<class Mesh, class T, class EngineTag>
const Centering<Dim>& FieldEngine< Mesh, T, EngineTag >::centering ( ) const [inline]
template<class Mesh, class T, class EngineTag>
int FieldEngine< Mesh, T, EngineTag >::centeringSize ( ) const [inline]
template<class Mesh, class T, class EngineTag>
Mesh& FieldEngine< Mesh, T, EngineTag >::mesh ( ) [inline]
template<class Mesh, class T, class EngineTag>
const Mesh& FieldEngine< Mesh, T, EngineTag >::mesh ( ) const [inline]
template<class Mesh, class T, class EngineTag>
template<class Subject >
void FieldEngine< Mesh, T, EngineTag >::makeOwnCopy ( const Subject &  s) [inline]
template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::translateToVertexDomain ( const Domain_t d) const [inline]

Domain translation function.

FIXME: This function should go away. Currently it's only used by the lagrangian field engine.

References FieldEngine< Mesh, T, EngineTag >::centeringSize(), and growRight().

template<class Mesh, class T, class EngineTag>
Domain_t FieldEngine< Mesh, T, EngineTag >::inputDomainToVertexDomain ( const Domain_t d) const [inline]

Converts an input domain (which is a cell domain for fields with multiple centering points and a centering domain for one centering point) to the corresponding vertex domain.

References FieldEngine< Mesh, T, EngineTag >::centering(), centeringDomainToCellDomain(), FieldEngine< Mesh, T, EngineTag >::centeringSize(), and growRight().

Referenced by FieldEngine< Mesh, T, EngineTag >::FieldEngine().

template<class Mesh, class T, class EngineTag>
Data_t& FieldEngine< Mesh, T, EngineTag >::data ( int  material,
int  centering 
) [inline]
template<class Mesh, class T, class EngineTag>
const Data_t& FieldEngine< Mesh, T, EngineTag >::data ( int  material,
int  centering 
) const [inline]

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