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