1#ifndef INTREPID_HGRAD_LINE_C1_FEMDEF_HPP
2#define INTREPID_HGRAD_LINE_C1_FEMDEF_HPP
54template<
class Scalar,
class ArrayScalar>
58 this ->
basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Line<2> >() );
66template<
class Scalar,
class ArrayScalar>
68 const ArrayScalar & inputPoints,
69 const EOperator operatorType)
const {
72#ifdef HAVE_INTREPID_DEBUG
80 int dim0 = inputPoints.dimension(0);
85 switch (operatorType) {
88 for (
int i0 = 0; i0 < dim0; i0++) {
89 x = inputPoints(i0, 0);
92 outputValues(0, i0) = (1.0 - x)/2.0;
93 outputValues(1, i0) = (1.0 + x)/2.0;
101 for (
int i0 = 0; i0 < dim0; i0++) {
102 x = inputPoints(i0,0);
105 outputValues(0, i0, 0) = -0.5;
106 outputValues(1, i0, 0) = 0.5;
111 for (
int i0 = 0; i0 < dim0; i0++) {
114 outputValues(0, i0, 0) = 0.0;
115 outputValues(1, i0, 0) = 0.0;
132 for (
int i0 = 0; i0 < dim0; i0++) {
133 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
134 outputValues(dofOrd, i0, dkOrd) = 0.0;
143 ">>> ERROR (Basis_HGRAD_LINE_C1_FEM): Invalid operator type");
147template<
class Scalar,
class ArrayScalar>
157 int tags[] = { 0, 0, 0, 1,
171template<
class Scalar,
class ArrayScalar>
173 const ArrayScalar & inputPoints,
174 const ArrayScalar & cellVertices,
175 const EOperator operatorType)
const {
176 TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
177 ">>> ERROR (Basis_HGRAD_LINE_C1_FEM): FEM Basis calling an FVD member function");
183#if defined(Intrepid_SHOW_DEPRECATED_WARNINGS)
185#warning "The Intrepid package is deprecated"
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....
int isValidOperator(const EOperator operatorType)
Verifies validity of an operator enum.
void setOrdinalTagData(std::vector< std::vector< std::vector< int > > > &tagToOrdinal, std::vector< std::vector< int > > &ordinalToTag, const int *tags, const int basisCard, const int tagSize, const int posScDim, const int posScOrd, const int posDfOrd)
Fills ordinalToTag_ and tagToOrdinal_ by basis-specific tag data.
int getDkCardinality(const EOperator operatorType, const int spaceDim)
Returns cardinality of Dk, i.e., the number of all derivatives of order k.
Basis_HGRAD_LINE_C1_FEM()
Constructor.
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const
Evaluation of a FEM basis on a reference Line cell.
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.
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 int getCardinality() const
Returns cardinality of the basis.