51 template<
class Scalar, 
class ArrayScalar>
 
   54     this -> basisCardinality_  = 9;
 
   55     this -> basisDegree_       = 1;
 
   56     this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Wedge<6> >() );
 
   57     this -> basisType_         = BASIS_FEM_DEFAULT;
 
   58     this -> basisCoordinates_  = COORDINATES_CARTESIAN;
 
   59     this -> basisTagsAreSet_   = 
false;
 
   62 template<
class Scalar, 
class ArrayScalar>
 
   84   Intrepid::setOrdinalTagData(
this -> tagToOrdinal_,
 
   85                               this -> ordinalToTag_,
 
   87                               this -> basisCardinality_,
 
   96 template<
class Scalar, 
class ArrayScalar>
 
   98                                                             const ArrayScalar &  inputPoints,
 
   99                                                             const EOperator      operatorType)
 const {
 
  102 #ifdef HAVE_INTREPID_DEBUG 
  103   Intrepid::getValues_HCURL_Args<Scalar, ArrayScalar>(outputValues,
 
  106                                                       this -> getBaseCellTopology(),
 
  107                                                       this -> getCardinality() );
 
  111   int dim0 = inputPoints.dimension(0);
 
  118   switch (operatorType) {
 
  120       for (
int i0 = 0; i0 < dim0; i0++) {
 
  121         x = inputPoints(i0, 0);
 
  122         y = inputPoints(i0, 1);
 
  123         z = inputPoints(i0, 2);
 
  126         outputValues(0, i0, 0) = (1.0 - z)*(1.0 - y)/2.0;
 
  127         outputValues(0, i0, 1) = x*(1.0 - z)/2.0;
 
  128         outputValues(0, i0, 2) = 0.0;
 
  130         outputValues(1, i0, 0) = y*(z - 1.0)/2.0;
 
  131         outputValues(1, i0, 1) = x*(1.0 - z)/2.0;
 
  132         outputValues(1, i0, 2) = 0.0;
 
  134         outputValues(2, i0, 0) = y*(z - 1.0)/2.0;
 
  135         outputValues(2, i0, 1) = (1.0 - x)*(z - 1.0)/2.0;
 
  136         outputValues(2, i0, 2) = 0.0;
 
  138         outputValues(3, i0, 0) = (1.0 - y)*(1.0 + z)/2.0;
 
  139         outputValues(3, i0, 1) = x*(1.0 + z)/2.0;
 
  140         outputValues(3, i0, 2) = 0.0;
 
  142         outputValues(4, i0, 0) =-y*(1.0 + z)/2.0;
 
  143         outputValues(4, i0, 1) = x*(1.0 + z)/2.0;
 
  144         outputValues(4, i0, 2) = 0.0;
 
  146         outputValues(5, i0, 0) = -y*(1.0 + z)/2.0;
 
  147         outputValues(5, i0, 1) = (x - 1.0)*(1.0 + z)/2.0;
 
  148         outputValues(5, i0, 2) = 0.0;
 
  150         outputValues(6, i0, 0) = 0.0;
 
  151         outputValues(6, i0, 1) = 0.0;
 
  152         outputValues(6, i0, 2) = (1.0 - x - y)/2.0;
 
  154         outputValues(7, i0, 0) = 0.0;
 
  155         outputValues(7, i0, 1) = 0.0;
 
  156         outputValues(7, i0, 2) = x/2.0;
 
  158         outputValues(8, i0, 0) = 0.0;
 
  159         outputValues(8, i0, 1) = 0.0;
 
  160         outputValues(8, i0, 2) = y/2.0;
 
  166       for (
int i0 = 0; i0 < dim0; i0++) {
 
  167         x = inputPoints(i0, 0);
 
  168         y = inputPoints(i0, 1);
 
  169         z = inputPoints(i0, 2);
 
  172         outputValues(0, i0, 0) = x/2.0;
 
  173         outputValues(0, i0, 1) = (y - 1.0)/2.0;
 
  174         outputValues(0, i0, 2) = 1.0 - z;
 
  176         outputValues(1, i0, 0) = x/2.0;
 
  177         outputValues(1, i0, 1) = y/2.0;
 
  178         outputValues(1, i0, 2) = 1.0 - z;
 
  180         outputValues(2, i0, 0) = (x - 1.0)/2.0;
 
  181         outputValues(2, i0, 1) = y/2.0; 
 
  182         outputValues(2, i0, 2) = 1.0 - z;
 
  184         outputValues(3, i0, 0) = -x/2.0;
 
  185         outputValues(3, i0, 1) = (1.0 - y)/2.0;
 
  186         outputValues(3, i0, 2) = 1.0 + z;
 
  188         outputValues(4, i0, 0) = -x/2.0;
 
  189         outputValues(4, i0, 1) = -y/2.0;
 
  190         outputValues(4, i0, 2) = 1.0 + z;
 
  192         outputValues(5, i0, 0) = (1.0 - x)/2.0;
 
  193         outputValues(5, i0, 1) = -y/2.0;
 
  194         outputValues(5, i0, 2) = 1.0 + z;
 
  196         outputValues(6, i0, 0) =-0.5;
 
  197         outputValues(6, i0, 1) = 0.5;
 
  198         outputValues(6, i0, 2) = 0.0;
 
  200         outputValues(7, i0, 0) = 0.0;
 
  201         outputValues(7, i0, 1) =-0.5;
 
  202         outputValues(7, i0, 2) = 0.0;
 
  204         outputValues(8, i0, 0) = 0.5;
 
  205         outputValues(8, i0, 1) = 0.0;
 
  206         outputValues(8, i0, 2) = 0.0;
 
  211        TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
 
  212                           ">>> ERROR (Basis_HCURL_WEDGE_I1_FEM): DIV is invalid operator for HCURL Basis Functions");
 
  216        TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_GRAD), std::invalid_argument,
 
  217                           ">>> ERROR (Basis_HCURL_WEDGE_I1_FEM): GRAD is invalid operator for HCURL Basis Functions");
 
  230       TEUCHOS_TEST_FOR_EXCEPTION( ( (operatorType == OPERATOR_D1)    ||
 
  231                             (operatorType == OPERATOR_D2)    ||
 
  232                             (operatorType == OPERATOR_D3)    ||
 
  233                             (operatorType == OPERATOR_D4)    ||
 
  234                             (operatorType == OPERATOR_D5)    ||
 
  235                             (operatorType == OPERATOR_D6)    ||
 
  236                             (operatorType == OPERATOR_D7)    ||
 
  237                             (operatorType == OPERATOR_D8)    ||
 
  238                             (operatorType == OPERATOR_D9)    ||
 
  239                             (operatorType == OPERATOR_D10) ),
 
  240                           std::invalid_argument,
 
  241                           ">>> ERROR (Basis_HCURL_WEDGE_I1_FEM): Invalid operator type");
 
  245       TEUCHOS_TEST_FOR_EXCEPTION( ( (operatorType != OPERATOR_VALUE) &&
 
  246                             (operatorType != OPERATOR_GRAD)  &&
 
  247                             (operatorType != OPERATOR_CURL)  &&
 
  248                             (operatorType != OPERATOR_DIV)   &&
 
  249                             (operatorType != OPERATOR_D1)    &&
 
  250                             (operatorType != OPERATOR_D2)    &&
 
  251                             (operatorType != OPERATOR_D3)    &&
 
  252                             (operatorType != OPERATOR_D4)    &&
 
  253                             (operatorType != OPERATOR_D5)    &&
 
  254                             (operatorType != OPERATOR_D6)    &&
 
  255                             (operatorType != OPERATOR_D7)    &&
 
  256                             (operatorType != OPERATOR_D8)    &&
 
  257                             (operatorType != OPERATOR_D9)    &&
 
  258                             (operatorType != OPERATOR_D10) ),
 
  259                           std::invalid_argument,
 
  260                           ">>> ERROR (Basis_HCURL_WEDGE_I1_FEM): Invalid operator type");
 
  266 template<
class Scalar, 
class ArrayScalar>
 
  268                                                             const ArrayScalar &    inputPoints,
 
  269                                                             const ArrayScalar &    cellVertices,
 
  270                                                             const EOperator        operatorType)
 const {
 
  271   TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
 
  272                       ">>> ERROR (Basis_HCURL_WEDGE_I1_FEM): FEM Basis calling an FVD member function");
 
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const 
Evaluation of a FEM basis on a reference Wedge cell. 
Basis_HCURL_WEDGE_I1_FEM()
Constructor. 
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.