P13DTrace< NF > Class Template Reference

Traces of P13DElement. More...

#include <P13DElement.h>

Inheritance diagram for P13DTrace< NF >:
P1nDTrace< NF > P1nDElement< NF > Element_ Element

List of all members.

Public Member Functions

 P13DTrace (const P13DElement< NF > &BaseElement, const typename P1nDTrace< NF >::FaceLabel &FaceName, const typename P1nDTrace< NF >::ShapeType &Type)
virtual ~P13DTrace ()
 P13DTrace (const P13DTrace< NF > &OldElement_)
 Copy constructor.
virtual P13DTrace< NF > * clone () const
 Cloning mechanism.

Static Protected Attributes

static const size_t FaceNodes [] = { 2, 1, 0, 2, 0, 3, 2, 3, 1, 0, 1, 3 }
 canonical numbering of the nodes. Used to construct face edges

Private Member Functions

void checkArgs (const typename P1nDTrace< NF >::FaceLabel &flabel, const typename P1nDTrace< NF >::ShapeType &shType)
 checks if arguments are consistend with 3D element

Detailed Description

template<size_t NF>
class P13DTrace< NF >

Traces of P13DElement.

These trace elements are templated according to the number of linear fields and the Tetrahedron face P13DTrace<NF>::FaceLabel on which the trace is computed.

Traces of P13DElements are somewhat special, since for each side one of the bulk basis functions is identically zero, effectively leaving three dofs per face. To reduce the amount of memory allocated per element is then convenient to consider trace elements with only 3 dofs per field per face, i.e., use the ShapesP13D::Faces ShapesEvaluated objects.

However, ocassionally, it may be necessary to have the boundary elements have the same nummber of dofs as the bulk elements, as it is generally the case for arbitrary bases. Hence during their construction, it is possible to specify what type of shape functions to use. This is accomplished by specifying the type ShapeType.

Warning:
As opposed to P13DElement(s), there is no local copy of the geometry of the element here, but only a reference to it. Hence, the destruction of the base geometry before the destruction of the element will render the implementation inconsistent.
Todo:
As was commented in P12DTrace, TetGeom may have to be a pointer and not a reference, since this is a reference to a copy of the original geometry.

Constructor & Destructor Documentation

template<size_t NF>
P13DTrace< NF >::P13DTrace ( const P13DElement< NF > &  BaseElement,
const typename P1nDTrace< NF >::FaceLabel FaceName,
const typename P1nDTrace< NF >::ShapeType Type 
) [inline]
Parameters:
BaseElement Element whose trace is desired.
FaceName Face on which to take the trace.
Type ShapeType of the face, i.e., with three or four dofs.
template<size_t NF>
virtual P13DTrace< NF >::~P13DTrace (  )  [inline, virtual]
template<size_t NF>
P13DTrace< NF >::P13DTrace ( const P13DTrace< NF > &  OldElement_  )  [inline]

Copy constructor.


Member Function Documentation

template<size_t NF>
void P13DTrace< NF >::checkArgs ( const typename P1nDTrace< NF >::FaceLabel flabel,
const typename P1nDTrace< NF >::ShapeType shType 
) [inline, private]

checks if arguments are consistend with 3D element

Parameters:
flabel 
shType 
template<size_t NF>
virtual P13DTrace<NF>* P13DTrace< NF >::clone (  )  const [inline, virtual]

Cloning mechanism.

Implements Element_.


Member Data Documentation

template<size_t NF>
const size_t P13DTrace< NF >::FaceNodes = { 2, 1, 0, 2, 0, 3, 2, 3, 1, 0, 1, 3 } [inline, static, protected]

canonical numbering of the nodes. Used to construct face edges


The documentation for this class was generated from the following file:
Generated on Tue Aug 2 11:51:28 2011 for Galois by  doxygen 1.6.3