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,
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 int getCardinality() const
Returns cardinality of the basis.
virtual ~Basis()
Destructor.
virtual const std::vector< int > & getDofTag(const int dofOrd)
DoF ordinal to DoF tag lookup.
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.
Contains definitions of custom data types in Intrepid.
virtual ECoordinates getCoordinateSystem() const
Returns the type of coordinate system for which the basis is defined.
bool basisTagsAreSet_
"true" if tagToOrdinal_ and ordinalToTag_ have been initialized
EOperator
Enumeration of primitive operators available in Intrepid. Primitive operators act on reconstructed fu...
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 EBasis getBasisType() const
Returns the basis type.
virtual ~DofCoordsInterface()=0
Pure virtual destructor (gives warnings if not included). Following "Effective C++: 3rd Ed...
ECoordinates
Enumeration of coordinate systems for geometrical entities (cells, points).
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.
EBasis
Enumeration of basis types for discrete spaces in Intrepid.