1 #ifndef INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP 
    2 #define INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP 
   53   template<
class Scalar, 
class ArrayScalar>
 
   56     this -> basisCardinality_  = 18;
 
   57     this -> basisDegree_       = 2;    
 
   58     this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Wedge<6> >() );
 
   59     this -> basisType_         = BASIS_FEM_DEFAULT;
 
   60     this -> basisCoordinates_  = COORDINATES_CARTESIAN;
 
   61     this -> basisTagsAreSet_   = 
false;
 
   65 template<
class Scalar, 
class ArrayScalar>
 
   75   int tags[]  = { 0, 0, 0, 1,
 
   96   Intrepid::setOrdinalTagData(
this -> tagToOrdinal_,
 
   97                               this -> ordinalToTag_,
 
   99                               this -> basisCardinality_,
 
  108 template<
class Scalar, 
class ArrayScalar>
 
  110                                                              const ArrayScalar &  inputPoints,
 
  111                                                              const EOperator      operatorType)
 const {
 
  114 #ifdef HAVE_INTREPID_DEBUG 
  115   Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues,
 
  118                                                       this -> getBaseCellTopology(),
 
  119                                                       this -> getCardinality() );
 
  123   int dim0 = inputPoints.dimension(0);  
 
  130   switch (operatorType) {
 
  133       for (
int i0 = 0; i0 < dim0; i0++) {
 
  134         x = inputPoints(i0, 0);
 
  135         y = inputPoints(i0, 1);
 
  136         z = inputPoints(i0, 2);
 
  139         outputValues(0, i0) =  ((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*z)/2.;
 
  140         outputValues(1, i0) =  (x*(-1. + 2.*x)*(-1. + z)*z)/2.;
 
  141         outputValues(2, i0) =  (y*(-1. + 2.*y)*(-1. + z)*z)/2.;
 
  142         outputValues(3, i0) =  ((-1. + x + y)*(-1. + 2.*x + 2.*y)*z*(1. + z))/2.;
 
  143         outputValues(4, i0) =  (x*(-1. + 2.*x)*z*(1. + z))/2.;
 
  144         outputValues(5, i0) =  (y*(-1. + 2.*y)*z*(1. + z))/2.;
 
  146         outputValues(6, i0) = -2.*x*(-1. + x + y)*(-1. + z)*z;
 
  147         outputValues(7, i0) =  2.*x*y*(-1. + z)*z;
 
  148         outputValues(8, i0) = -2.*y*(-1. + x + y)*(-1. + z)*z;
 
  149         outputValues(9, i0) = -((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*(1. + z));
 
  150         outputValues(10,i0) = -(x*(-1. + 2.*x)*(-1. + z)*(1. + z));
 
  151         outputValues(11,i0) = -(y*(-1. + 2.*y)*(-1. + z)*(1. + z));
 
  152         outputValues(12,i0) = -2.*x*(-1. + x + y)*z*(1. + z);
 
  153         outputValues(13,i0) =  2.*x*y*z*(1. + z);
 
  154         outputValues(14,i0) = -2.*y*(-1. + x + y)*z*(1. + z);
 
  155         outputValues(15,i0) =  4.*x*(-1. + x + y)*(-1. + z)*(1. + z);
 
  156         outputValues(16,i0) = -4.*x*y*(-1. + z)*(1. + z);
 
  157         outputValues(17,i0) =  4.*y*(-1. + x + y)*(-1. + z)*(1. + z);
 
  163       for (
int i0 = 0; i0 < dim0; i0++) {
 
  164         x = inputPoints(i0,0);
 
  165         y = inputPoints(i0,1);
 
  166         z = inputPoints(i0,2);
 
  169         outputValues(0, i0, 0) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
 
  170         outputValues(0, i0, 1) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
 
  171         outputValues(0, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(-1 + 2*z))/2.;
 
  173         outputValues(1, i0, 0) = ((-1 + 4*x)*(-1 + z)*z)/2.;
 
  174         outputValues(1, i0, 1) = 0.;
 
  175         outputValues(1, i0, 2) = (x*(-1 + 2*x)*(-1 + 2*z))/2.;
 
  177         outputValues(2, i0, 0) = 0.;
 
  178         outputValues(2, i0, 1) = ((-1 + 4*y)*(-1 + z)*z)/2.;
 
  179         outputValues(2, i0, 2) = (y*(-1 + 2*y)*(-1 + 2*z))/2.;
 
  181         outputValues(3, i0, 0) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.; 
 
  182         outputValues(3, i0, 1) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.;  
 
  183         outputValues(3, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(1 + 2*z))/2.;
 
  185         outputValues(4, i0, 0) = ((-1 + 4*x)*z*(1 + z))/2.;
 
  186         outputValues(4, i0, 1) = 0.;
 
  187         outputValues(4, i0, 2) = (x*(-1 + 2*x)*(1 + 2*z))/2.;
 
  189         outputValues(5, i0, 0) = 0.;
 
  190         outputValues(5, i0, 1) = ((-1 + 4*y)*z*(1 + z))/2.; 
 
  191         outputValues(5, i0, 2) = (y*(-1 + 2*y)*(1 + 2*z))/2.;
 
  193         outputValues(6, i0, 0) = -2*(-1 + 2*x + y)*(-1 + z)*z;
 
  194         outputValues(6, i0, 1) = -2*x*(-1 + z)*z;
 
  195         outputValues(6, i0, 2) = 2*x*(-1 + x + y)*(1 - 2*z);   
 
  197         outputValues(7, i0, 0) = 2*y*(-1 + z)*z;
 
  198         outputValues(7, i0, 1) = 2*x*(-1 + z)*z;
 
  199         outputValues(7, i0, 2) = 2*x*y*(-1 + 2*z);   
 
  201         outputValues(8, i0, 0) = -2*y*(-1 + z)*z;
 
  202         outputValues(8, i0, 1) = -2*(-1 + x + 2*y)*(-1 + z)*z;
 
  203         outputValues(8, i0, 2) = 2*y*(-1 + x + y)*(1 - 2*z);   
 
  205         outputValues(9, i0, 0) = -(-3 + 4*x + 4*y)*(-1 + z*z);
 
  206         outputValues(9, i0, 1) = -(-3 + 4*x + 4*y)*(-1 + z*z);   
 
  207         outputValues(9, i0, 2) = -2*(1 + 2*x*x - 3*y + 2*y*y + x*(-3 + 4*y))*z;   
 
  209         outputValues(10,i0, 0) = -(-1 + 4*x)*(-1 + z*z);
 
  210         outputValues(10,i0, 1) =  0;
 
  211         outputValues(10,i0, 2) =  2*(1 - 2*x)*x*z;   
 
  213         outputValues(11,i0, 0) =  0;
 
  214         outputValues(11,i0, 1) =  -(-1 + 4*y)*(-1 + z*z);
 
  215         outputValues(11,i0, 2) =  2*(1 - 2*y)*y*z;   
 
  217         outputValues(12,i0, 0) = -2*(-1 + 2*x + y)*z*(1 + z);
 
  218         outputValues(12,i0, 1) = -2*x*z*(1 + z);
 
  219         outputValues(12,i0, 2) = -2*x*(-1 + x + y)*(1 + 2*z);   
 
  221         outputValues(13,i0, 0) =  2*y*z*(1 + z);
 
  222         outputValues(13,i0, 1) =  2*x*z*(1 + z);
 
  223         outputValues(13,i0, 2) =  2*x*y*(1 + 2*z);   
 
  225         outputValues(14,i0, 0) = -2*y*z*(1 + z);
 
  226         outputValues(14,i0, 1) = -2*(-1 + x + 2*y)*z*(1 + z);
 
  227         outputValues(14,i0, 2) = -2*y*(-1 + x + y)*(1 + 2*z);   
 
  229         outputValues(15,i0, 0) =  4*(-1 + 2*x + y)*(-1 + z*z);
 
  230         outputValues(15,i0, 1) =  4*x*(-1 + z)*(1 + z);
 
  231         outputValues(15,i0, 2) =  8*x*(-1 + x + y)*z;   
 
  233         outputValues(16,i0, 0) = -4*y*(-1 + z)*(1 + z);
 
  234         outputValues(16,i0, 1) = -4*x*(-1 + z)*(1 + z);
 
  235         outputValues(16,i0, 2) = -8*x*y*z;   
 
  237         outputValues(17,i0, 0) =  4*y*(-1 + z)*(1 + z);
 
  238         outputValues(17,i0, 1) =  4*(-1 + x + 2*y)*(-1 + z*z);
 
  239         outputValues(17,i0, 2) =  8*y*(-1 + x + y)*z;
 
  245       TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
 
  246                           ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
 
  250       TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
 
  251                           ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
 
  255       for (
int i0 = 0; i0 < dim0; i0++) {
 
  256         x = inputPoints(i0,0);
 
  257         y = inputPoints(i0,1);
 
  258         z = inputPoints(i0,2);
 
  260         outputValues(0, i0, 0) =  2.*(-1. + z)*z;     
 
  261         outputValues(0, i0, 1) =  2.*(-1. + z)*z;     
 
  262         outputValues(0, i0, 2) =  ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;       
 
  263         outputValues(0, i0, 3) =  2.*(-1. + z)*z;     
 
  264         outputValues(0, i0, 4) =  ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;      
 
  265         outputValues(0, i0, 5) =  (-1. + x + y)*(-1. + 2.*x + 2.*y);     
 
  267         outputValues(1, i0, 0) =  2.*(-1. + z)*z;      
 
  268         outputValues(1, i0, 1) =  0.;     
 
  269         outputValues(1, i0, 2) =  ((-1. + 4.*x)*(-1. + 2.*z))/2.;     
 
  270         outputValues(1, i0, 3) =  0.;     
 
  271         outputValues(1, i0, 4) =  0.;     
 
  272         outputValues(1, i0, 5) =  x*(-1. + 2.*x);     
 
  274         outputValues(2, i0, 0) =  0.;     
 
  275         outputValues(2, i0, 1) =  0.;     
 
  276         outputValues(2, i0, 2) =  0.;     
 
  277         outputValues(2, i0, 3) =  2.*(-1. + z)*z;      
 
  278         outputValues(2, i0, 4) =  ((-1. + 4.*y)*(-1. + 2.*z))/2.;     
 
  279         outputValues(2, i0, 5) =  y*(-1. + 2.*y);     
 
  281         outputValues(3, i0, 0) =  2.*z*(1. + z); 
 
  282         outputValues(3, i0, 1) =  2.*z*(1. + z);
 
  283         outputValues(3, i0, 2) =  ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;  
 
  284         outputValues(3, i0, 3) =  2.*z*(1. + z);
 
  285         outputValues(3, i0, 4) =  ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;
 
  286         outputValues(3, i0, 5) =  (-1. + x + y)*(-1. + 2.*x + 2.*y);
 
  288         outputValues(4, i0, 0) =  2.*z*(1. + z);
 
  289         outputValues(4, i0, 1) =  0.; 
 
  290         outputValues(4, i0, 2) =  ((-1. + 4.*x)*(1. + 2.*z))/2.;;
 
  291         outputValues(4, i0, 3) =  0.;
 
  292         outputValues(4, i0, 4) =  0.;
 
  293         outputValues(4, i0, 5) =  x*(-1. + 2.*x);
 
  295         outputValues(5, i0, 0) =  0.;
 
  296         outputValues(5, i0, 1) =  0.;
 
  297         outputValues(5, i0, 2) =  0.;
 
  298         outputValues(5, i0, 3) =  2.*z*(1. + z);
 
  299         outputValues(5, i0, 4) =  ((-1. + 4.*y)*(1. + 2.*z))/2.;
 
  300         outputValues(5, i0, 5) =  y*(-1. + 2.*y);         
 
  302         outputValues(6, i0, 0) = -4.*(-1. + z)*z;
 
  303         outputValues(6, i0, 1) = -2.*(-1. + z)*z;
 
  304         outputValues(6, i0, 2) = -2.*(-1. + 2.*x + y)*(-1. + 2.*z);
 
  305         outputValues(6, i0, 3) =  0.;
 
  306         outputValues(6, i0, 4) =  x*(2. - 4.*z);     
 
  307         outputValues(6, i0, 5) = -4.*x*(-1. + x + y);     
 
  309         outputValues(7, i0, 0) =  0.;
 
  310         outputValues(7, i0, 1) =  2.*(-1. + z)*z;
 
  311         outputValues(7, i0, 2) =  2.*y*(-1. + 2.*z);
 
  312         outputValues(7, i0, 3) =  0.;
 
  313         outputValues(7, i0, 4) =  2.*x*(-1. + 2.*z);
 
  314         outputValues(7, i0, 5) =  4.*x*y;     
 
  316         outputValues(8, i0, 0) =  0.;
 
  317         outputValues(8, i0, 1) = -2.*(-1. + z)*z;
 
  318         outputValues(8, i0, 2) =  y*(2. - 4.*z);
 
  319         outputValues(8, i0, 3) = -4.*(-1. + z)*z;
 
  320         outputValues(8, i0, 4) = -2.*(-1. + x + 2.*y)*(-1. + 2.*z);     
 
  321         outputValues(8, i0, 5) = -4.*y*(-1. + x + y);
 
  323         outputValues(9, i0, 0) =  4. - 4.*z*z;
 
  324         outputValues(9, i0, 1) =  4. - 4.*z*z;
 
  325         outputValues(9, i0, 2) = -2.*(-3. + 4.*x + 4.*y)*z;     
 
  326         outputValues(9, i0, 3) =  4. - 4.*z*z;
 
  327         outputValues(9, i0, 4) = -2.*(-3. + 4.*x + 4.*y)*z;
 
  328         outputValues(9, i0, 5) = -2.*(-1. + x + y)*(-1. + 2.*x + 2.*y);     
 
  330         outputValues(10,i0, 0) =  4. - 4.*z*z;
 
  331         outputValues(10,i0, 1) =  0.;
 
  332         outputValues(10,i0, 2) =  (2. - 8.*x)*z;
 
  333         outputValues(10,i0, 3) =  0.;
 
  334         outputValues(10,i0, 4) =  0.;
 
  335         outputValues(10,i0, 5) = -2.*x*(-1. + 2.*x);     
 
  337         outputValues(11,i0, 0) =  0.;
 
  338         outputValues(11,i0, 1) =  0.;
 
  339         outputValues(11,i0, 2) =  0.;
 
  340         outputValues(11,i0, 3) =  4. - 4.*z*z;
 
  341         outputValues(11,i0, 4) =  (2. - 8.*y)*z;
 
  342         outputValues(11,i0, 5) = -2.*y*(-1. + 2.*y);     
 
  344         outputValues(12,i0, 0) = -4.*z*(1. + z);
 
  345         outputValues(12,i0, 1) = -2.*z*(1. + z);
 
  346         outputValues(12,i0, 2) = -2.*(-1. + 2.*x + y)*(1. + 2.*z);
 
  347         outputValues(12,i0, 3) =  0.;
 
  348         outputValues(12,i0, 4) = -2.*(x + 2.*x*z);     
 
  349         outputValues(12,i0, 5) = -4.*x*(-1. + x + y);     
 
  351         outputValues(13,i0, 0) =  0.;
 
  352         outputValues(13,i0, 1) =  2.*z*(1. + z);
 
  353         outputValues(13,i0, 2) =  2.*(y + 2.*y*z);
 
  354         outputValues(13,i0, 3) =  0.;
 
  355         outputValues(13,i0, 4) =  2.*(x + 2.*x*z);
 
  356         outputValues(13,i0, 5) =  4.*x*y;     
 
  358         outputValues(14,i0, 0) =  0.;
 
  359         outputValues(14,i0, 1) = -2.*z*(1. + z);
 
  360         outputValues(14,i0, 2) = -2.*(y + 2.*y*z);
 
  361         outputValues(14,i0, 3) = -4.*z*(1. + z);
 
  362         outputValues(14,i0, 4) = -2.*(-1. + x + 2.*y)*(1. + 2.*z);     
 
  363         outputValues(14,i0, 5) = -4.*y*(-1. + x + y);     
 
  365         outputValues(15,i0, 0) =  8.*(-1. + z*z);
 
  366         outputValues(15,i0, 1) =  4.*(-1. + z*z);
 
  367         outputValues(15,i0, 2) =  8.*(-1. + 2.*x + y)*z;
 
  368         outputValues(15,i0, 3) =  0.;     
 
  369         outputValues(15,i0, 4) =  8.*x*z;
 
  370         outputValues(15,i0, 5) =  8.*x*(-1. + x + y);     
 
  372         outputValues(16,i0, 0) =  0.;
 
  373         outputValues(16,i0, 1) =  4. - 4.*z*z;
 
  374         outputValues(16,i0, 2) = -8.*y*z;
 
  375         outputValues(16,i0, 3) =  0.;
 
  376         outputValues(16,i0, 4) = -8.*x*z;
 
  377         outputValues(16,i0, 5) = -8.*x*y;     
 
  380         outputValues(17,i0, 0) =  0.;
 
  381         outputValues(17,i0, 1) =  4.*(-1. + z*z);
 
  382         outputValues(17,i0, 2) =  8.*y*z;
 
  383         outputValues(17,i0, 3) =  8.*(-1. + z*z);
 
  384         outputValues(17,i0, 4) =  8.*(-1. + x + 2.*y)*z;     
 
  385         outputValues(17,i0, 5) =  8.*y*(-1. + x + y);
 
  390       for (
int i0 = 0; i0 < dim0; i0++) {
 
  391         x = inputPoints(i0,0);
 
  392         y = inputPoints(i0,1);
 
  393         z = inputPoints(i0,2);
 
  395         outputValues(0, i0, 0) =  0.;
 
  396         outputValues(0, i0, 1) =  0.;
 
  397         outputValues(0, i0, 2) = -2. + 4.*z;
 
  398         outputValues(0, i0, 3) =  0.;
 
  399         outputValues(0, i0, 4) = -2. + 4.*z;
 
  400         outputValues(0, i0, 5) = -3. + 4.*x + 4.*y;
 
  401         outputValues(0, i0, 6) =  0.;
 
  402         outputValues(0, i0, 7) = -2. + 4.*z;
 
  403         outputValues(0, i0, 8) = -3. + 4.*x + 4.*y;
 
  404         outputValues(0, i0, 9) =  0.;  
 
  406         outputValues(1, i0, 0) =  0.;
 
  407         outputValues(1, i0, 1) =  0.;
 
  408         outputValues(1, i0, 2) = -2. + 4.*z;
 
  409         outputValues(1, i0, 3) =  0.;
 
  410         outputValues(1, i0, 4) =  0.;
 
  411         outputValues(1, i0, 5) = -1 + 4.*x;
 
  412         outputValues(1, i0, 6) =  0.;
 
  413         outputValues(1, i0, 7) =  0.;
 
  414         outputValues(1, i0, 8) =  0.;
 
  415         outputValues(1, i0, 9) =  0.;  
 
  417         outputValues(2, i0, 0) =  0.;
 
  418         outputValues(2, i0, 1) =  0.;
 
  419         outputValues(2, i0, 2) =  0.;
 
  420         outputValues(2, i0, 3) =  0.;
 
  421         outputValues(2, i0, 4) =  0.;
 
  422         outputValues(2, i0, 5) =  0.;
 
  423         outputValues(2, i0, 6) =  0.;
 
  424         outputValues(2, i0, 7) = -2. + 4.*z;
 
  425         outputValues(2, i0, 8) = -1 + 4.*y;
 
  426         outputValues(2, i0, 9) =  0.;  
 
  428         outputValues(3, i0, 0) =  0.;
 
  429         outputValues(3, i0, 1) =  0.;
 
  430         outputValues(3, i0, 2) =  2. + 4.*z;
 
  431         outputValues(3, i0, 3) =  0.;
 
  432         outputValues(3, i0, 4) =  2. + 4.*z;
 
  433         outputValues(3, i0, 5) = -3. + 4.*x + 4.*y;
 
  434         outputValues(3, i0, 6) =  0.;
 
  435         outputValues(3, i0, 7) =  2. + 4.*z;
 
  436         outputValues(3, i0, 8) = -3. + 4.*x + 4.*y;
 
  437         outputValues(3, i0, 9) =  0.;  
 
  439         outputValues(4, i0, 0) =  0.;
 
  440         outputValues(4, i0, 1) =  0.;
 
  441         outputValues(4, i0, 2) =  2. + 4.*z;
 
  442         outputValues(4, i0, 3) =  0.;
 
  443         outputValues(4, i0, 4) =  0.;
 
  444         outputValues(4, i0, 5) = -1 + 4.*x;
 
  445         outputValues(4, i0, 6) =  0.;
 
  446         outputValues(4, i0, 7) =  0.;
 
  447         outputValues(4, i0, 8) =  0.;
 
  448         outputValues(4, i0, 9) =  0.;  
 
  450         outputValues(5, i0, 0) =  0.;
 
  451         outputValues(5, i0, 1) =  0.;
 
  452         outputValues(5, i0, 2) =  0.;
 
  453         outputValues(5, i0, 3) =  0.;
 
  454         outputValues(5, i0, 4) =  0.;
 
  455         outputValues(5, i0, 5) =  0.;
 
  456         outputValues(5, i0, 6) =  0.;
 
  457         outputValues(5, i0, 7) =  2. + 4.*z;
 
  458         outputValues(5, i0, 8) = -1 + 4.*y;
 
  459         outputValues(5, i0, 9) =  0.;  
 
  461         outputValues(6, i0, 0) =  0.;
 
  462         outputValues(6, i0, 1) =  0.;
 
  463         outputValues(6, i0, 2) =  4. - 8.*z;
 
  464         outputValues(6, i0, 3) =  0.;
 
  465         outputValues(6, i0, 4) =  2. - 4.*z;
 
  466         outputValues(6, i0, 5) = -4.*(-1 + 2*x + y);
 
  467         outputValues(6, i0, 6) =  0.;
 
  468         outputValues(6, i0, 7) =  0.;
 
  469         outputValues(6, i0, 8) = -4.*x;
 
  470         outputValues(6, i0, 9) =  0.;  
 
  472         outputValues(7, i0, 0) =  0.;
 
  473         outputValues(7, i0, 1) =  0.;
 
  474         outputValues(7, i0, 2) =  0.;
 
  475         outputValues(7, i0, 3) =  0.;
 
  476         outputValues(7, i0, 4) = -2. + 4.*z;
 
  477         outputValues(7, i0, 5) =  4.*y;
 
  478         outputValues(7, i0, 6) =  0.;
 
  479         outputValues(7, i0, 7) =  0.;
 
  480         outputValues(7, i0, 8) =  4.*x;
 
  481         outputValues(7, i0, 9) =  0.;  
 
  483         outputValues(8, i0, 0) =  0.;
 
  484         outputValues(8, i0, 1) =  0.;
 
  485         outputValues(8, i0, 2) =  0.;
 
  486         outputValues(8, i0, 3) =  0.;
 
  487         outputValues(8, i0, 4) =  2. - 4.*z;
 
  488         outputValues(8, i0, 5) = -4.*y;
 
  489         outputValues(8, i0, 6) =  0.;
 
  490         outputValues(8, i0, 7) =  4. - 8.*z;
 
  491         outputValues(8, i0, 8) = -4.*(-1 + x + 2*y);
 
  492         outputValues(8, i0, 9) =  0.;  
 
  494         outputValues(9, i0, 0) =  0.;
 
  495         outputValues(9, i0, 1) =  0.;
 
  496         outputValues(9, i0, 2) = -8.*z;
 
  497         outputValues(9, i0, 3) =  0.;
 
  498         outputValues(9, i0, 4) = -8.*z;
 
  499         outputValues(9, i0, 5) =  6. - 8.*x - 8.*y;
 
  500         outputValues(9, i0, 6) =  0.;
 
  501         outputValues(9, i0, 7) = -8.*z;
 
  502         outputValues(9, i0, 8) =  6. - 8.*x - 8.*y;
 
  503         outputValues(9, i0, 9) =  0.;  
 
  505         outputValues(10,i0, 0) =  0.;
 
  506         outputValues(10,i0, 1) =  0.;
 
  507         outputValues(10,i0, 2) = -8.*z;
 
  508         outputValues(10,i0, 3) =  0.;
 
  509         outputValues(10,i0, 4) =  0.;
 
  510         outputValues(10,i0, 5) =  2. - 8.*x;
 
  511         outputValues(10,i0, 6) =  0.;
 
  512         outputValues(10,i0, 7) =  0.;
 
  513         outputValues(10,i0, 8) =  0.;
 
  514         outputValues(10,i0, 9) =  0.;  
 
  516         outputValues(11,i0, 0) =  0.;
 
  517         outputValues(11,i0, 1) =  0.;
 
  518         outputValues(11,i0, 2) =  0.;
 
  519         outputValues(11,i0, 3) =  0.;
 
  520         outputValues(11,i0, 4) =  0.;
 
  521         outputValues(11,i0, 5) =  0.;
 
  522         outputValues(11,i0, 6) =  0.;
 
  523         outputValues(11,i0, 7) = -8.*z;
 
  524         outputValues(11,i0, 8) =  2. - 8.*y;
 
  525         outputValues(11,i0, 9) =  0.;  
 
  527         outputValues(12,i0, 0) =  0.;
 
  528         outputValues(12,i0, 1) =  0.;
 
  529         outputValues(12,i0, 2) = -4. - 8.*z;
 
  530         outputValues(12,i0, 3) =  0.;
 
  531         outputValues(12,i0, 4) = -2. - 4.*z;
 
  532         outputValues(12,i0, 5) = -4.*(-1 + 2*x + y);
 
  533         outputValues(12,i0, 6) =  0.;
 
  534         outputValues(12,i0, 7) =  0.;
 
  535         outputValues(12,i0, 8) = -4.*x;
 
  536         outputValues(12,i0, 9) =  0.;  
 
  538         outputValues(13,i0, 0) =  0.;
 
  539         outputValues(13,i0, 1) =  0.;
 
  540         outputValues(13,i0, 2) =  0.;
 
  541         outputValues(13,i0, 3) =  0.;
 
  542         outputValues(13,i0, 4) =  2. + 4.*z;
 
  543         outputValues(13,i0, 5) =  4.*y;
 
  544         outputValues(13,i0, 6) =  0.;
 
  545         outputValues(13,i0, 7) =  0.;
 
  546         outputValues(13,i0, 8) =  4.*x;
 
  547         outputValues(13,i0, 9) =  0.;  
 
  549         outputValues(14,i0, 0) =  0.;
 
  550         outputValues(14,i0, 1) =  0.;
 
  551         outputValues(14,i0, 2) =  0.;
 
  552         outputValues(14,i0, 3) =  0.;
 
  553         outputValues(14,i0, 4) = -2. - 4.*z;
 
  554         outputValues(14,i0, 5) = -4.*y;
 
  555         outputValues(14,i0, 6) =  0.;
 
  556         outputValues(14,i0, 7) = -4. - 8.*z;
 
  557         outputValues(14,i0, 8) = -4.*(-1 + x + 2*y);
 
  558         outputValues(14,i0, 9) =  0.;  
 
  560         outputValues(15,i0, 0) =  0.;
 
  561         outputValues(15,i0, 1) =  0.;
 
  562         outputValues(15,i0, 2) =  16.*z;
 
  563         outputValues(15,i0, 3) =  0.;
 
  564         outputValues(15,i0, 4) =  8.*z;
 
  565         outputValues(15,i0, 5) =  8.*(-1 + 2*x + y);
 
  566         outputValues(15,i0, 6) =  0.;
 
  567         outputValues(15,i0, 7) =  0.;
 
  568         outputValues(15,i0, 8) =  8.*x;
 
  569         outputValues(15,i0, 9) =  0.;  
 
  571         outputValues(16,i0, 0) =  0.;
 
  572         outputValues(16,i0, 1) =  0.;
 
  573         outputValues(16,i0, 2) =  0.;
 
  574         outputValues(16,i0, 3) =  0.;
 
  575         outputValues(16,i0, 4) = -8.*z;
 
  576         outputValues(16,i0, 5) = -8.*y;
 
  577         outputValues(16,i0, 6) =  0.;
 
  578         outputValues(16,i0, 7) =  0.;
 
  579         outputValues(16,i0, 8) = -8.*x;
 
  580         outputValues(16,i0, 9) =  0.;  
 
  582         outputValues(17,i0, 0) =  0.;
 
  583         outputValues(17,i0, 1) =  0.;
 
  584         outputValues(17,i0, 2) =  0.;
 
  585         outputValues(17,i0, 3) =  0.;
 
  586         outputValues(17,i0, 4) =  8.*z;
 
  587         outputValues(17,i0, 5) =  8.*y;
 
  588         outputValues(17,i0, 6) =  0.;
 
  589         outputValues(17,i0, 7) =  16.*z;
 
  590         outputValues(17,i0, 8) =  8.*(-1 + x + 2*y);
 
  591         outputValues(17,i0, 9) =  0.;
 
  599         int DkCardinality = Intrepid::getDkCardinality(operatorType, 
this -> basisCellTopology_.getDimension() );
 
  600         for(
int dofOrd = 0; dofOrd < 
this -> basisCardinality_; dofOrd++) {
 
  601           for (
int i0 = 0; i0 < dim0; i0++) {
 
  602             for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
 
  603               outputValues(dofOrd, i0, dkOrd) = 0.0;
 
  608         for (
int i0 = 0; i0 < dim0; i0++) {
 
  610           outputValues(0, i0, 5) = 4.;
 
  611           outputValues(0, i0, 8) = 4.;
 
  612           outputValues(0, i0,12) = 4.;
 
  614           outputValues(1, i0, 5) = 4.;
 
  616           outputValues(2, i0,12) = 4.;
 
  618           outputValues(3, i0, 5) = 4.;
 
  619           outputValues(3, i0, 8) = 4.;
 
  620           outputValues(3, i0,12) = 4.;
 
  622           outputValues(4, i0, 5) = 4.0;
 
  624           outputValues(5, i0,12) = 4.0;
 
  626           outputValues(6, i0, 5) =-8.;
 
  627           outputValues(6, i0, 8) =-4.;
 
  629           outputValues(7, i0, 8) = 4.;
 
  631           outputValues(8, i0, 8) =-4.;
 
  632           outputValues(8, i0,12) =-8.;
 
  634           outputValues(9, i0, 5) =-8.;
 
  635           outputValues(9, i0, 8) =-8.;
 
  636           outputValues(9, i0,12) =-8.;
 
  638           outputValues(10,i0, 5) =-8.;
 
  640           outputValues(11,i0,12) =-8.;
 
  642           outputValues(12,i0, 5) =-8.;
 
  643           outputValues(12,i0, 8) =-4.;
 
  645           outputValues(13,i0, 8) = 4.;
 
  647           outputValues(14,i0, 8) =-4;
 
  648           outputValues(14,i0,12) =-8.;
 
  650           outputValues(15,i0, 5) =16.;
 
  651           outputValues(15,i0, 8) = 8.;
 
  653           outputValues(16,i0, 8) =-8.;
 
  656           outputValues(17,i0, 8) = 8.;
 
  657           outputValues(17,i0,12) =16.;   
 
  670         int DkCardinality = Intrepid::getDkCardinality(operatorType, 
 
  671                                                        this -> basisCellTopology_.getDimension() );
 
  672         for(
int dofOrd = 0; dofOrd < 
this -> basisCardinality_; dofOrd++) {
 
  673           for (
int i0 = 0; i0 < dim0; i0++) {
 
  674             for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
 
  675               outputValues(dofOrd, i0, dkOrd) = 0.0;
 
  683       TEUCHOS_TEST_FOR_EXCEPTION( !( Intrepid::isValidOperator(operatorType) ), std::invalid_argument,
 
  684                           ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): Invalid operator type");
 
  690 template<
class Scalar, 
class ArrayScalar>
 
  692                                                              const ArrayScalar &    inputPoints,
 
  693                                                              const ArrayScalar &    cellVertices,
 
  694                                                              const EOperator        operatorType)
 const {
 
  695   TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
 
  696                       ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): FEM Basis calling an FVD member function");
 
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays. 
Basis_HGRAD_WEDGE_C2_FEM()
Constructor. 
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const 
FEM basis evaluation on a reference Wedge cell.