49 #ifndef INTREPID_BASIS_HPP 
   50 #define INTREPID_BASIS_HPP 
   51 #include "Intrepid_ConfigDefs.hpp" 
   54 #include "Shards_CellTopology.hpp" 
   88 template<
class Scalar, 
class ArrayScalar>
 
  174   virtual void getValues(ArrayScalar &          outputValues,
 
  175                          const ArrayScalar &    inputPoints,
 
  176                          const EOperator        operatorType) 
const = 0;
 
  198   virtual void getValues(ArrayScalar &          outputValues,
 
  199                          const ArrayScalar &    inputPoints,
 
  200                          const ArrayScalar &    cellVertices,
 
  201                          const EOperator        operatorType = OPERATOR_VALUE) 
const = 0;
 
  249                             const int subcDofOrd);  
 
  252   virtual const std::vector<std::vector<std::vector<int> > > &
getDofOrdinalData( );
 
  265   virtual const std::vector<int>&  
getDofTag(
const int dofOrd);
 
  276   virtual const std::vector<std::vector<int> >& 
getAllDofTags();
 
  306 template<
class Scalar, 
class ArrayScalar>
 
  307 void getValues_HGRAD_Args(ArrayScalar &                outputValues,
 
  308                           const ArrayScalar &          inputPoints,
 
  309                           const EOperator              operatorType,
 
  310                           const shards::CellTopology&  cellTopo,
 
  311                           const int                    basisCard);
 
  323 template<
class Scalar, 
class ArrayScalar>
 
  324 void getValues_HCURL_Args(ArrayScalar &                outputValues,
 
  325                           const ArrayScalar &          inputPoints,
 
  326                           const EOperator              operatorType,
 
  327                           const shards::CellTopology&  cellTopo,
 
  328                           const int                    basisCard);
 
  340 template<
class Scalar, 
class ArrayScalar>
 
  341 void getValues_HDIV_Args(ArrayScalar &                outputValues,
 
  342                           const ArrayScalar &          inputPoints,
 
  343                           const EOperator              operatorType,
 
  344                           const shards::CellTopology&  cellTopo,
 
  345                           const int                    basisCard);
 
  352 template<
class ArrayScalar>
 
  367    virtual void getDofCoords(ArrayScalar & DofCoords) 
const = 0;
 
virtual ~Basis()
Destructor. 
virtual EBasis getBasisType() const 
Returns the basis type. 
virtual const std::vector< int > & getDofTag(const int dofOrd)
DoF ordinal to DoF tag lookup. 
virtual int getCardinality() const 
Returns cardinality of the basis. 
This is an interface class for bases whose degrees of freedom can be associated with spatial location...
EBasis basisType_
Type of the basis. 
virtual const std::vector< std::vector< int > > & getAllDofTags()
Retrieves all DoF tags. 
virtual ECoordinates getCoordinateSystem() const 
Returns the type of coordinate system for which the basis is defined. 
Contains definitions of custom data types in Intrepid. 
bool basisTagsAreSet_
"true" if tagToOrdinal_ and ordinalToTag_ have been initialized 
virtual void getDofCoords(ArrayScalar &DofCoords) const =0
Returns spatial locations (coordinates) of degrees of freedom on a reference cell; defined for interp...
ECoordinates basisCoordinates_
The coordinate system for which the basis is defined. 
virtual ~DofCoordsInterface()=0
Pure virtual destructor (gives warnings if not included). Following "Effective C++: 3rd Ed...
Implementation file for the abstract base class Intrepid::Basis. 
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
shards::CellTopology basisCellTopology_
Base topology of the cells for which the basis is defined. See the Shards package http://trilinos...
virtual int getDegree() const 
Returns the degree of the basis. 
virtual int getDofOrdinal(const int subcDim, const int subcOrd, const int subcDofOrd)
DoF tag to ordinal lookup. 
virtual void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const =0
Evaluation of a FEM basis on a reference cell. 
virtual const shards::CellTopology getBaseCellTopology() const 
Returns the base cell topology for which the basis is defined. See Shards documentation http://trilin...
int basisDegree_
Degree of the largest complete polynomial space that can be represented by the basis. 
virtual void initializeTags()=0
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays. 
std::vector< std::vector< std::vector< int > > > tagToOrdinal_
DoF tag to ordinal lookup table. 
int basisCardinality_
Cardinality of the basis, i.e., the number of basis functions/degrees-of-freedom. ...
virtual const std::vector< std::vector< std::vector< int > > > & getDofOrdinalData()
DoF tag to ordinal data structure. 
std::vector< std::vector< int > > ordinalToTag_
DoF ordinal to tag lookup table.