Sundance::Legendre Class Reference

Legendre basis. More...

Inheritance diagram for Sundance::Legendre:

Sundance::ScalarBasis Sundance::BasisFamilyBase Sundance::BasisFamilyBase Sundance::BasisReferenceEvaluationBase Sundance::TensorBasisBase Sundance::BasisDOFTopologyBase Sundance::ObjectWithClassVerbosity< BasisFamilyBase > Playa::Printable Playa::Handleable< BasisFamilyBase > Sundance::BasisReferenceEvaluationBase Sundance::TensorBasisBase Sundance::BasisDOFTopologyBase Sundance::ObjectWithClassVerbosity< BasisFamilyBase > Playa::Printable Playa::Handleable< BasisFamilyBase >

List of all members.

Public Member Functions

 Legendre (int order)
 2param order [in] order of the Legendre
bool supportsCellTypePair (const CellType &maximalCellType, const CellType &cellType) const
 Inform caller as to whether a given cell type is supported.
void print (std::ostream &os) const
 abstract print function
int order () const
int nReferenceDOFsWithoutFacets (const CellType &maximalCellType, const CellType &cellType) const
 return the number of nodes for this basis on the given cell type
void getReferenceDOFs (const CellType &maximalCellType, const CellType &cellType, Array< Array< Array< int > > > &dofs) const
 Get a description of the DOF numbering and distribution scheme for this basis function on the given cell type.
void refEval (const CellType &cellType, const Array< Point > &pts, const SpatialDerivSpecifier &deriv, Array< Array< Array< double > > > &result, int verbosity=0) const
 Evaluate the basis functions (or some mixed spatial derivative of the basis functions) for an array of points on the "reference cell" for a given cell type.

Handleable interface

int order_
 the order of the basis
int nrDOF_edge_
int nrDOF_face_
int nrDOF_brick_
static Array< int > makeRange (int low, int high)
void evalOnLine (const Point &pt, const MultiIndex &deriv, Array< double > &result) const
 evaluate on a line cell
void evalOnQuad (const Point &pt, const MultiIndex &deriv, Array< double > &result) const
 evaluate on a triangle cell
void evalOnBrick (const Point &pt, const MultiIndex &deriv, Array< double > &result) const
 evaluate on a tet cell


Detailed Description

Legendre basis.

Definition at line 43 of file SundanceLegendre.hpp.


Constructor & Destructor Documentation

Legendre::Legendre ( int  order  ) 

2param order [in] order of the Legendre

Definition at line 43 of file SundanceLegendre.cpp.

References nrDOF_brick_, nrDOF_edge_, nrDOF_face_, and order_.


Member Function Documentation

void Legendre::evalOnBrick ( const Point pt,
const MultiIndex deriv,
Array< double > &  result 
) const [private]

evaluate on a tet cell

Definition at line 378 of file SundanceLegendre.cpp.

Referenced by refEval().

void Legendre::evalOnLine ( const Point pt,
const MultiIndex deriv,
Array< double > &  result 
) const [private]

evaluate on a line cell

Definition at line 258 of file SundanceLegendre.cpp.

References nrDOF_edge_, Sundance::MultiIndex::order(), and Sundance::ADReal::value().

Referenced by refEval().

void Legendre::evalOnQuad ( const Point pt,
const MultiIndex deriv,
Array< double > &  result 
) const [private]

void Legendre::getReferenceDOFs ( const CellType maximalCellType,
const CellType cellType,
Array< Array< Array< int > > > &  dofs 
) const [virtual]

Get a description of the DOF numbering and distribution scheme for this basis function on the given cell type.

Parameters:
cellType [in] Specification of the cell topology
dofs [out] Array of dof numbering information, to be filled in during the call. On output, dofs.size()==dimension(cellType). See description of dofs below for more details.
The DOF description is returned in the nested array dofs, and is to be interpreted as follows: The outer dimension of the description array dofs.size() is cellDim, where cellDim is the spatial dimension of the cell. The DOFs attached to facets are stored in array entries dofs[s] where s=0...cellDim-1. Those associated with the cell body are stored in dofs[cellDim-1]. For cell dofs attached to facets, the dof facetDofIndex associated with the facet facetIndex of facet dimension facetDim is given by:

   dofs[facetDim][facetIndex][faceDofIndex] 

For dofs attached to the cell body, the local DOF within the entire cell is given by dof is given by

   dofs[cellDim][0][dofIndex]

More specifically:

  • dof[facetDim].size() gives the number of facets of the facet dimension facetDim, where 0 <= facetDim <= cellDim

  • dof[facetDim][facetIndex].size() gives the number of degrees of freedom (DOFs) on the facet facetIndex with facet dimension facetDim, where 0 <= facetDim <= cellDim and 0 <= facetIndex < numFacets(cellType,facetDim).

For example, the Lagrange basis functions of order 0 through 3 on 2D triangles would have the following dof arrays:


   Order 0:

   { {}, {}, {{0}} }
   
   Order 1:

   { { {0}, {1}, {2} }, {}, {} }
    
   Order 2:

   { { {0}, {1}, {2} }, { {3}, {4}, {5} }, {} }
    
   Order 3:

   { { {0}, {1}, {2} }, { {3,4}, {5,6}, {7,8} }, {9} }

   

Above, we have used the ordering given in Hughes' textbook.

Implements Sundance::BasisDOFTopologyBase.

Definition at line 136 of file SundanceLegendre.cpp.

References Sundance::LineCell, makeRange(), nrDOF_edge_, nrDOF_face_, Sundance::PointCell, and Sundance::QuadCell.

Array< int > Legendre::makeRange ( int  low,
int  high 
) [static, private]

Definition at line 127 of file SundanceLegendre.cpp.

Referenced by getReferenceDOFs().

int Legendre::nReferenceDOFsWithoutFacets ( const CellType maximalCellType,
const CellType cellType 
) const [virtual]

return the number of nodes for this basis on the given cell type

Implements Sundance::BasisDOFTopologyBase.

Definition at line 106 of file SundanceLegendre.cpp.

References Sundance::BrickCell, Sundance::LineCell, nrDOF_brick_, nrDOF_edge_, nrDOF_face_, Sundance::PointCell, and Sundance::QuadCell.

int Sundance::Legendre::order (  )  const [inline, virtual]

Implements Sundance::BasisFamilyBase.

Definition at line 61 of file SundanceLegendre.hpp.

References order_.

void Legendre::print ( std::ostream &  os  )  const [virtual]

abstract print function

Implements Playa::Printable.

Definition at line 101 of file SundanceLegendre.cpp.

void Legendre::refEval ( const CellType cellType,
const Array< Point > &  pts,
const SpatialDerivSpecifier deriv,
Array< Array< Array< double > > > &  result,
int  verbosity = 0 
) const [virtual]

Evaluate the basis functions (or some mixed spatial derivative of the basis functions) for an array of points on the "reference cell" for a given cell type.

Parameters:
cellType [in] The type of cell on which the basis is currently being evaluated.
pts [in] Array of points on the reference cell (or master cell) where the basis functions are to be computed.
deriv [in] Specification of which differential operator is to be applied to the basis functions.
result [out] On output, gives a triply nested array which contain the basis functions (or the requested basis function derivatives) evaluated at the given points pts. The size of the outer array results is either zero or spatialDim, depending on whether this is a scalar or vector basis, respectively. The size of the next array level is equal to the number of evaluation points. Finally, the size of the innermost array level is equal to the number of DOFs visible from the given cell type. x * Specifically,
           results[k][pointIndex][basisIndex] 
gives the value of the spatial derivative of the $k$-th component of

\[\frac{\partial^{d_x+d_y+d_z}}{\partial x^{d_x} \partial y^{d_y} \partial z^{d_z}}\psi_i(x,y,z)\]

, where $d_x$ = deriv[0], $d_y$ = deriv[1] (in 2D or 3D) and $d_Z$ = deriv[2] (in 3D) at the point pointIndex (where 0 <= pointIndex < pts.size()) for the basis function $i$ = basisIndex (where 0 <= basisIndex < mapStructure.numBasisChunks()).

Implements Sundance::BasisReferenceEvaluationBase.

Definition at line 210 of file SundanceLegendre.cpp.

References Sundance::BrickCell, evalOnBrick(), evalOnLine(), evalOnQuad(), Sundance::SpatialDerivSpecifier::isIdentity(), Sundance::SpatialDerivSpecifier::isPartial(), Sundance::LineCell, Sundance::SpatialDerivSpecifier::mi(), Sundance::PointCell, and Sundance::QuadCell.

bool Legendre::supportsCellTypePair ( const CellType maximalCellType,
const CellType cellType 
) const [virtual]

Inform caller as to whether a given cell type is supported.

Implements Sundance::BasisDOFTopologyBase.

Definition at line 59 of file SundanceLegendre.cpp.

References Sundance::BrickCell, Sundance::LineCell, Sundance::PointCell, and Sundance::QuadCell.


Member Data Documentation

Definition at line 114 of file SundanceLegendre.hpp.

Referenced by Legendre(), and nReferenceDOFsWithoutFacets().

the order of the basis

Definition at line 105 of file SundanceLegendre.hpp.

Referenced by evalOnQuad(), Legendre(), and order().

Site Contact