1 #ifndef INTREPID_HGRAD_HEX_C2_FEMDEF_HPP 
    2 #define INTREPID_HGRAD_HEX_C2_FEMDEF_HPP 
   54 template<
class Scalar, 
class ArrayScalar>
 
   57     this -> basisCardinality_  = 27;
 
   58     this -> basisDegree_       = 2;    
 
   59     this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Hexahedron<8> >() );
 
   60     this -> basisType_         = BASIS_FEM_DEFAULT;
 
   61     this -> basisCoordinates_  = COORDINATES_CARTESIAN;
 
   62     this -> basisTagsAreSet_   = 
false;
 
   67 template<
class Scalar, 
class ArrayScalar>
 
   77   int tags[]  = { 0, 0, 0, 1,     
 
  107   Intrepid::setOrdinalTagData(
this -> tagToOrdinal_,
 
  108                               this -> ordinalToTag_,
 
  110                               this -> basisCardinality_,
 
  119 template<
class Scalar, 
class ArrayScalar>
 
  121                                                             const ArrayScalar &  inputPoints,
 
  122                                                             const EOperator      operatorType)
 const {
 
  125 #ifdef HAVE_INTREPID_DEBUG 
  126   Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues,
 
  129                                                       this -> getBaseCellTopology(),
 
  130                                                       this -> getCardinality() );
 
  134   int dim0 = inputPoints.dimension(0);  
 
  141   switch (operatorType) {
 
  144       for (
int i0 = 0; i0 < dim0; i0++) {
 
  145         x = inputPoints(i0, 0);
 
  146         y = inputPoints(i0, 1);
 
  147         z = inputPoints(i0, 2);
 
  150         outputValues( 0, i0) = 0.125*(-1. + x)*x*(-1. + y)*y*(-1. + z)*z;
 
  151         outputValues( 1, i0) = 0.125*x*(1.+ x)*(-1. + y)*y*(-1. + z)*z;
 
  152         outputValues( 2, i0) = 0.125*x*(1.+ x)*y*(1.+ y)*(-1. + z)*z;
 
  153         outputValues( 3, i0) = 0.125*(-1. + x)*x*y*(1.+ y)*(-1. + z)*z;
 
  154         outputValues( 4, i0) = 0.125*(-1. + x)*x*(-1. + y)*y*z*(1.+ z);
 
  155         outputValues( 5, i0) = 0.125*x*(1.+ x)*(-1. + y)*y*z*(1.+ z);
 
  156         outputValues( 6, i0) = 0.125*x*(1.+ x)*y*(1.+ y)*z*(1.+ z);
 
  157         outputValues( 7, i0) = 0.125*(-1. + x)*x*y*(1.+ y)*z*(1.+ z);
 
  158         outputValues( 8, i0) = 0.25*(1. - x)*(1. + x)*(-1. + y)*y*(-1. + z)*z;
 
  159         outputValues( 9, i0) = 0.25*x*(1.+ x)*(1. - y)*(1. + y)*(-1. + z)*z;
 
  160         outputValues(10, i0) = 0.25*(1. - x)*(1. + x)*y*(1.+ y)*(-1. + z)*z;
 
  161         outputValues(11, i0) = 0.25*(-1. + x)*x*(1. - y)*(1. + y)*(-1. + z)*z;
 
  162         outputValues(12, i0) = 0.25*(-1. + x)*x*(-1. + y)*y*(1. - z)*(1. + z);
 
  163         outputValues(13, i0) = 0.25*x*(1.+ x)*(-1. + y)*y*(1. - z)*(1. + z);
 
  164         outputValues(14, i0) = 0.25*x*(1.+ x)*y*(1.+ y)*(1. - z)*(1. + z);
 
  165         outputValues(15, i0) = 0.25*(-1. + x)*x*y*(1.+ y)*(1. - z)*(1. + z);
 
  166         outputValues(16, i0) = 0.25*(1. - x)*(1. + x)*(-1. + y)*y*z*(1.+ z);
 
  167         outputValues(17, i0) = 0.25*x*(1.+ x)*(1. - y)*(1. + y)*z*(1.+ z);
 
  168         outputValues(18, i0) = 0.25*(1. - x)*(1. + x)*y*(1.+ y)*z*(1.+ z);
 
  169         outputValues(19, i0) = 0.25*(-1. + x)*x*(1. - y)*(1. + y)*z*(1.+ z);
 
  170         outputValues(20, i0) = (1. - x)*(1. + x)*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  171         outputValues(21, i0) = 0.5*(1. - x)*(1. + x)*(1. - y)*(1. + y)*(-1. + z)*z;
 
  172         outputValues(22, i0) = 0.5*(1. - x)*(1. + x)*(1. - y)*(1. + y)*z*(1.+ z);
 
  173         outputValues(23, i0) = 0.5*(-1. + x)*x*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  174         outputValues(24, i0) = 0.5*x*(1.+ x)*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  175         outputValues(25, i0) = 0.5*(1. - x)*(1. + x)*(-1. + y)*y*(1. - z)*(1. + z);
 
  176         outputValues(26, i0) = 0.5*(1. - x)*(1. + x)*y*(1.+ y)*(1. - z)*(1. + z);
 
  182       for (
int i0 = 0; i0 < dim0; i0++) {
 
  183         x = inputPoints(i0,0);
 
  184         y = inputPoints(i0,1);
 
  185         z = inputPoints(i0,2);
 
  188         outputValues(0, i0, 0) = (-0.125 + 0.25*x)*(-1. + y)*y*(-1. + z)*z;
 
  189         outputValues(0, i0, 1) = (-1. + x)*x*(-0.125 + 0.25*y)*(-1. + z)*z;
 
  190         outputValues(0, i0, 2) = (-1. + x)*x*(-1. + y)*y*(-0.125 + 0.25*z);
 
  192         outputValues(1, i0, 0) = (0.125 + 0.25*x)*(-1. + y)*y*(-1. + z)*z;
 
  193         outputValues(1, i0, 1) = x*(1. + x)*(-0.125 + 0.25*y)*(-1. + z)*z;
 
  194         outputValues(1, i0, 2) = x*(1. + x)*(-1. + y)*y*(-0.125 + 0.25*z);
 
  196         outputValues(2, i0, 0) = (0.125 + 0.25*x)*y*(1. + y)*(-1. + z)*z;
 
  197         outputValues(2, i0, 1) = x*(1. + x)*(0.125 + 0.25*y)*(-1. + z)*z;
 
  198         outputValues(2, i0, 2) = x*(1. + x)*y*(1. + y)*(-0.125 + 0.25*z);
 
  200         outputValues(3, i0, 0) = (-0.125 + 0.25*x)*y*(1. + y)*(-1. + z)*z;
 
  201         outputValues(3, i0, 1) = (-1. + x)*x*(0.125 + 0.25*y)*(-1. + z)*z;
 
  202         outputValues(3, i0, 2) = (-1. + x)*x*y*(1. + y)*(-0.125 + 0.25*z);
 
  204         outputValues(4, i0, 0) = (-0.125 + 0.25*x)*(-1. + y)*y*z*(1. + z);
 
  205         outputValues(4, i0, 1) = (-1. + x)*x*(-0.125 + 0.25*y)*z*(1. + z);
 
  206         outputValues(4, i0, 2) = (-1. + x)*x*(-1. + y)*y*(0.125 + 0.25*z);
 
  208         outputValues(5, i0, 0) = (0.125 + 0.25*x)*(-1. + y)*y*z*(1. + z);
 
  209         outputValues(5, i0, 1) = x*(1. + x)*(-0.125 + 0.25*y)*z*(1. + z);
 
  210         outputValues(5, i0, 2) = x*(1. + x)*(-1. + y)*y*(0.125 + 0.25*z);
 
  212         outputValues(6, i0, 0) = (0.125 + 0.25*x)*y*(1. + y)*z*(1. + z);
 
  213         outputValues(6, i0, 1) = x*(1. + x)*(0.125 + 0.25*y)*z*(1. + z);
 
  214         outputValues(6, i0, 2) = x*(1. + x)*y*(1. + y)*(0.125 + 0.25*z);
 
  216         outputValues(7, i0, 0) = (-0.125 + 0.25*x)*y*(1. + y)*z*(1. + z);
 
  217         outputValues(7, i0, 1) = (-1. + x)*x*(0.125 + 0.25*y)*z*(1. + z);
 
  218         outputValues(7, i0, 2) = (-1. + x)*x*y*(1. + y)*(0.125 + 0.25*z);
 
  220         outputValues(8, i0, 0) = -0.5*x*(-1. + y)*y*(-1. + z)*z;
 
  221         outputValues(8, i0, 1) = (1. - x)*(1. + x)*(-0.25 + 0.5*y)*(-1. + z)*z;
 
  222         outputValues(8, i0, 2) = (1. - x)*(1. + x)*(-1. + y)*y*(-0.25 + 0.5*z);
 
  224         outputValues(9, i0, 0) = (0.25 + 0.5*x)*(1. - y)*(1. + y)*(-1. + z)*z;
 
  225         outputValues(9, i0, 1) = x*(1. + x)*(-0.5*y)*(-1. + z)*z;
 
  226         outputValues(9, i0, 2) = x*(1. + x)*(1. - y)*(1. + y)*(-0.25 + 0.5*z);
 
  228         outputValues(10,i0, 0) = -0.5*x*y*(1. + y)*(-1. + z)*z;
 
  229         outputValues(10,i0, 1) = (1. - x)*(1. + x)*(0.25 + 0.5*y)*(-1. + z)*z;
 
  230         outputValues(10,i0, 2) = (1. - x)*(1. + x)*y*(1. + y)*(-0.25 + 0.5*z);
 
  232         outputValues(11,i0, 0) = (-0.25 + 0.5*x)*(1. - y)*(1. + y)*(-1. + z)*z;
 
  233         outputValues(11,i0, 1) = (-1. + x)*x*(-0.5*y)*(-1. + z)*z;
 
  234         outputValues(11,i0, 2) = (-1. + x)*x*(1. - y)*(1. + y)*(-0.25 + 0.5*z);
 
  236         outputValues(12,i0, 0) = (-0.25 + 0.5*x)*(-1. + y)*y*(1. - z)*(1. + z);
 
  237         outputValues(12,i0, 1) = (-1. + x)*x*(-0.25 + 0.5*y)*(1. - z)*(1. + z);
 
  238         outputValues(12,i0, 2) = (-1. + x)*x*(-1. + y)*y*(-0.5*z);
 
  240         outputValues(13,i0, 0) = (0.25 + 0.5*x)*(-1. + y)*y*(1. - z)*(1. + z);
 
  241         outputValues(13,i0, 1) = x*(1. + x)*(-0.25 + 0.5*y)*(1. - z)*(1. + z);
 
  242         outputValues(13,i0, 2) = x*(1. + x)*(-1. + y)*y*(-0.5*z);
 
  244         outputValues(14,i0, 0) = (0.25 + 0.5*x)*y*(1. + y)*(1. - z)*(1. + z);
 
  245         outputValues(14,i0, 1) = x*(1. + x)*(0.25 + 0.5*y)*(1. - z)*(1. + z);
 
  246         outputValues(14,i0, 2) = x*(1. + x)*y*(1. + y)*(-0.5*z);
 
  248         outputValues(15,i0, 0) = (-0.25 + 0.5*x)*y*(1. + y)*(1. - z)*(1. + z);
 
  249         outputValues(15,i0, 1) = (-1. + x)*x*(0.25 + 0.5*y)*(1. - z)*(1. + z);
 
  250         outputValues(15,i0, 2) = (-1. + x)*x*y*(1. + y)*(-0.5*z);
 
  252         outputValues(16,i0, 0) = -0.5*x*(-1. + y)*y*z*(1. + z);
 
  253         outputValues(16,i0, 1) = (1. - x)*(1. + x)*(-0.25 + 0.5*y)*z*(1. + z);
 
  254         outputValues(16,i0, 2) = (1. - x)*(1. + x)*(-1. + y)*y*(0.25 + 0.5*z);
 
  256         outputValues(17,i0, 0) = (0.25 + 0.5*x)*(1. - y)*(1. + y)*z*(1. + z);
 
  257         outputValues(17,i0, 1) = x*(1. + x)*(-0.5*y)*z*(1. + z);
 
  258         outputValues(17,i0, 2) = x*(1. + x)*(1. - y)*(1. + y)*(0.25 + 0.5*z);
 
  260         outputValues(18,i0, 0) = -0.5*x*y*(1. + y)*z*(1. + z);
 
  261         outputValues(18,i0, 1) = (1. - x)*(1. + x)*(0.25 + 0.5*y)*z*(1. + z);
 
  262         outputValues(18,i0, 2) = (1. - x)*(1. + x)*y*(1. + y)*(0.25 + 0.5*z);
 
  264         outputValues(19,i0, 0) = (-0.25 + 0.5*x)*(1. - y)*(1. + y)*z*(1. + z);
 
  265         outputValues(19,i0, 1) = (-1. + x)*x*(-0.5*y)*z*(1. + z);
 
  266         outputValues(19,i0, 2) = (-1. + x)*x*(1. - y)*(1. + y)*(0.25 + 0.5*z);
 
  268         outputValues(20,i0, 0) = -2.*x*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  269         outputValues(20,i0, 1) = (1. - x)*(1. + x)*(-2.*y)*(1. - z)*(1. + z);
 
  270         outputValues(20,i0, 2) = (1. - x)*(1. + x)*(1. - y)*(1. + y)*(-2.*z);
 
  272         outputValues(21,i0, 0) = -x*(1. - y)*(1. + y)*(-1. + z)*z;
 
  273         outputValues(21,i0, 1) = (1. - x)*(1. + x)*(-y)*(-1. + z)*z;
 
  274         outputValues(21,i0, 2) = (1. - x)*(1. + x)*(1. - y)*(1. + y)*(-0.5 + z);
 
  276         outputValues(22,i0, 0) = -x*(1. - y)*(1. + y)*z*(1. + z);
 
  277         outputValues(22,i0, 1) = (1. - x)*(1. + x)*(-y)*z*(1. + z);
 
  278         outputValues(22,i0, 2) = (1. - x)*(1. + x)*(1. - y)*(1. + y)*(0.5 + z);
 
  280         outputValues(23,i0, 0) = (-0.5 + x)*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  281         outputValues(23,i0, 1) = (-1. + x)*x*(-y)*(1. - z)*(1. + z);
 
  282         outputValues(23,i0, 2) = (-1. + x)*x*(1. - y)*(1. + y)*(-z);
 
  284         outputValues(24,i0, 0) = (0.5 + x)*(1. - y)*(1. + y)*(1. - z)*(1. + z);
 
  285         outputValues(24,i0, 1) = x*(1. + x)*(-y)*(1. - z)*(1. + z);
 
  286         outputValues(24,i0, 2) = x*(1. + x)*(1. - y)*(1. + y)*(-z);
 
  288         outputValues(25,i0, 0) = -x*(-1. + y)*y*(1. - z)*(1. + z);
 
  289         outputValues(25,i0, 1) = (1. - x)*(1. + x)*(-0.5 + y)*(1. - z)*(1. + z);
 
  290         outputValues(25,i0, 2) = (1. - x)*(1. + x)*(-1. + y)*y*(-z);
 
  292         outputValues(26,i0, 0) = -x*y*(1. + y)*(1. - z)*(1. + z);
 
  293         outputValues(26,i0, 1) = (1. - x)*(1. + x)*(0.5 + y)*(1. - z)*(1. + z);
 
  294         outputValues(26,i0, 2) = (1. - x)*(1. + x)*y*(1. + y)*(-z);
 
  299       TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
 
  300                           ">>> ERROR (Basis_HGRAD_HEX_C2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
 
  304       TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
 
  305                           ">>> ERROR (Basis_HGRAD_HEX_C2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
 
  309       for (
int i0 = 0; i0 < dim0; i0++) {
 
  310         x = inputPoints(i0,0);
 
  311         y = inputPoints(i0,1);
 
  312         z = inputPoints(i0,2);
 
  315         outputValues(0, i0, 0) = 0.25*(-1. + y)*y*(-1. + z)*z; 
 
  316         outputValues(0, i0, 1) = (-0.125 + y*(0.25 - 0.25*z) + x*(0.25 + y*(-0.5 + 0.5*z) - 0.25*z) + 0.125*z)*z; 
 
  317         outputValues(0, i0, 2) = y*(-0.125 + x*(0.25 + y*(-0.25 + 0.5*z) - 0.5*z) + y*(0.125 - 0.25*z) + 0.25*z); 
 
  318         outputValues(0, i0, 3) = 0.25*(-1. + x)*x*(-1. + z)*z; 
 
  319         outputValues(0, i0, 4) = x*(-0.125 + y*(0.25 - 0.5*z) + x*(0.125 + y*(-0.25 + 0.5*z) - 0.25*z) + 0.25*z); 
 
  320         outputValues(0, i0, 5) = 0.25*(-1. + x)*x*(-1. + y)*y; 
 
  322         outputValues(1, i0, 0) = 0.25*(-1. + y)*y*(-1. + z)*z; 
 
  323         outputValues(1, i0, 1) = (0.125 + x*(0.25 + y*(-0.5 + 0.5*z) - 0.25*z) + y*(-0.25 + 0.25*z) - 0.125*z)*z; 
 
  324         outputValues(1, i0, 2) = y*(0.125 + x*(0.25 + y*(-0.25 + 0.5*z) - 0.5*z) + y*(-0.125 + 0.25*z) - 0.25*z); 
 
  325         outputValues(1, i0, 3) = 0.25*x*(1 + x)*(-1. + z)*z; 
 
  326         outputValues(1, i0, 4) = x*(1. + x)*(0.125 + y*(-0.25 + 0.5*z) - 0.25*z); 
 
  327         outputValues(1, i0, 5) = 0.25*x*(1 + x)*(-1. + y)*y; 
 
  329         outputValues(2, i0, 0) = 0.25*y*(1 + y)*(-1. + z)*z; 
 
  330         outputValues(2, i0, 1) = (0.125 + x*(0.25 + 0.5*y) + 0.25*y)*(-1. + z)*z; 
 
  331         outputValues(2, i0, 2) = y*(1. + y)*(-0.125 + x*(-0.25 + 0.5*z) + 0.25*z); 
 
  332         outputValues(2, i0, 3) = 0.25*x*(1 + x)*(-1. + z)*z; 
 
  333         outputValues(2, i0, 4) = x*(1. + x)*(-0.125 + y*(-0.25 + 0.5*z) + 0.25*z); 
 
  334         outputValues(2, i0, 5) = 0.25*x*(1 + x)*y*(1 + y); 
 
  336         outputValues(3, i0, 0) = 0.25*y*(1 + y)*(-1. + z)*z; 
 
  337         outputValues(3, i0, 1) = (0.125 + y*(0.25 - 0.25*z) + x*(-0.25 + y*(-0.5 + 0.5*z) + 0.25*z) - 0.125*z)*z; 
 
  338         outputValues(3, i0, 2) = y*(1. + y)*(0.125 + x*(-0.25 + 0.5*z) - 0.25*z); 
 
  339         outputValues(3, i0, 3) = 0.25*(-1. + x)*x*(-1. + z)*z; 
 
  340         outputValues(3, i0, 4) = x*(0.125 + y*(0.25 - 0.5*z) + x*(-0.125 + y*(-0.25 + 0.5*z) + 0.25*z) - 0.25*z); 
 
  341         outputValues(3, i0, 5) = 0.25*(-1. + x)*x*y*(1 + y); 
 
  343         outputValues(4, i0, 0) = 0.25*(-1. + y)*y*z*(1 + z); 
 
  344         outputValues(4, i0, 1) = (0.125 + x*(-0.25 + 0.5*y) - 0.25*y)*z*(1. + z); 
 
  345         outputValues(4, i0, 2) = y*(0.125 + x*(-0.25 + y*(0.25 + 0.5*z) - 0.5*z) + y*(-0.125 - 0.25*z) + 0.25*z); 
 
  346         outputValues(4, i0, 3) = 0.25*(-1. + x)*x*z*(1 + z); 
 
  347         outputValues(4, i0, 4) = x*(0.125 + y*(-0.25 - 0.5*z) + x*(-0.125 + y*(0.25 + 0.5*z) - 0.25*z) + 0.25*z); 
 
  348         outputValues(4, i0, 5) = 0.25*(-1. + x)*x*(-1. + y)*y; 
 
  350         outputValues(5, i0, 0) = 0.25*(-1. + y)*y*z*(1 + z); 
 
  351         outputValues(5, i0, 1) = (-0.125 + x*(-0.25 + 0.5*y) + 0.25*y)*z*(1. + z); 
 
  352         outputValues(5, i0, 2) = (-1. + y)*y*(0.125 + x*(0.25 + 0.5*z) + 0.25*z); 
 
  353         outputValues(5, i0, 3) = 0.25*x*(1 + x)*z*(1 + z); 
 
  354         outputValues(5, i0, 4) = x*(1. + x)*(-0.125 + y*(0.25 + 0.5*z) - 0.25*z); 
 
  355         outputValues(5, i0, 5) = 0.25*x*(1 + x)*(-1. + y)*y; 
 
  357         outputValues(6, i0, 0) = 0.25*y*(1 + y)*z*(1 + z); 
 
  358         outputValues(6, i0, 1) = (0.125 + x*(0.25 + 0.5*y) + 0.25*y)*z*(1. + z); 
 
  359         outputValues(6, i0, 2) = y*(1. + y)*(0.125 + x*(0.25 + 0.5*z) + 0.25*z); 
 
  360         outputValues(6, i0, 3) = 0.25*x*(1 + x)*z*(1 + z); 
 
  361         outputValues(6, i0, 4) = x*(1. + x)*(0.125 + y*(0.25 + 0.5*z) + 0.25*z); 
 
  362         outputValues(6, i0, 5) = 0.25*x*(1 + x)*y*(1 + y); 
 
  364         outputValues(7, i0, 0) = 0.25*y*(1 + y)*z*(1 + z); 
 
  365         outputValues(7, i0, 1) = (-0.125 + x*(0.25 + 0.5*y) - 0.25*y)*z*(1. + z); 
 
  366         outputValues(7, i0, 2) = y*(1. + y)*(-0.125 + x*(0.25 + 0.5*z) - 0.25*z); 
 
  367         outputValues(7, i0, 3) = 0.25*(-1. + x)*x*z*(1 + z); 
 
  368         outputValues(7, i0, 4) = (-1. + x)*x*(0.125 + y*(0.25 + 0.5*z) + 0.25*z); 
 
  369         outputValues(7, i0, 5) = 0.25*(-1. + x)*x*y*(1 + y); 
 
  371         outputValues(8, i0, 0) = -0.5*(-1. + y)*y*(-1. + z)*z; 
 
  372         outputValues(8, i0, 1) = (0.  + x*(-0.5 + y))*z + (x*(0.5 - y) )*(z*z); 
 
  373         outputValues(8, i0, 2) = (y*y)*(x*(0.5 - z) ) + y*(x*(-0.5 + z)); 
 
  374         outputValues(8, i0, 3) = 0.5*(1. - x)*(1. + x)*(-1. + z)*z; 
 
  375         outputValues(8, i0, 4) = 0.25 + (x*x)*(-0.25 + y*(0.5 - z) + 0.5*z) - 0.5*z + y*(-0.5 + z); 
 
  376         outputValues(8, i0, 5) = 0.5*(1. - x)*(1. + x)*(-1. + y)*y; 
 
  378         outputValues(9, i0, 0) = 0.5*(1. - y)*(1. + y)*(-1. + z)*z; 
 
  379         outputValues(9, i0, 1) = (0.5*y + x*(y))*z + (x*(-y) - 0.5*y)*(z*z); 
 
  380         outputValues(9, i0, 2) = -0.25 + (y*y)*(0.25 - 0.5*z) + 0.5*z + x*(-0.5 + (y*y)*(0.5 - z) + z); 
 
  381         outputValues(9, i0, 3) = -0.5*x*(1 + x)*(-1. + z)*z; 
 
  382         outputValues(9, i0, 4) = x*(y*(0.5 - z) ) + (x*x)*(y*(0.5 - z) ); 
 
  383         outputValues(9, i0, 5) = 0.5*x*(1 + x)*(1. - y)*(1. + y); 
 
  385         outputValues(10,i0, 0) = -0.5*y*(1 + y)*(-1. + z)*z; 
 
  386         outputValues(10,i0, 1) = (0.  + x*(0.5 + y))*z + (x*(-0.5 - y) )*(z*z); 
 
  387         outputValues(10,i0, 2) = y*(x*(0.5 - z) ) + (y*y)*(x*(0.5 - z) ); 
 
  388         outputValues(10,i0, 3) = 0.5*(1. - x)*(1. + x)*(-1. + z)*z; 
 
  389         outputValues(10,i0, 4) = -0.25 + (x*x)*(0.25 + y*(0.5 - z) - 0.5*z) + 0.5*z + y*(-0.5 + z); 
 
  390         outputValues(10,i0, 5) = 0.5*(1. - x)*(1. + x)*y*(1 + y); 
 
  392         outputValues(11,i0, 0) = 0.5*(1. - y)*(1. + y)*(-1. + z)*z; 
 
  393         outputValues(11,i0, 1) = (-0.5*y + x*(y))*z + (x*(-y) + 0.5*y)*(z*z); 
 
  394         outputValues(11,i0, 2) = 0.25 + (y*y)*(-0.25 + 0.5*z) - 0.5*z + x*(-0.5 + (y*y)*(0.5 - z) + z); 
 
  395         outputValues(11,i0, 3) = -0.5*(-1. + x)*x*(-1. + z)*z; 
 
  396         outputValues(11,i0, 4) = (x*x)*(y*(0.5 - z) ) + x*(y*(-0.5 + z)); 
 
  397         outputValues(11,i0, 5) = 0.5*(-1. + x)*x*(1. - y)*(1. + y); 
 
  399         outputValues(12,i0, 0) = 0.5*(-1. + y)*y*(1. - z)*(1. + z); 
 
  400         outputValues(12,i0, 1) = 0.25  - 0.25*(z*z) + y*(-0.5  + 0.5*(z*z)) + x*(-0.5  + 0.5*(z*z) + y*(1.  - (z*z))); 
 
  401         outputValues(12,i0, 2) = (y*y)*(x*(-z) + 0.5*z) + y*(-0.5*z + x*(z)); 
 
  402         outputValues(12,i0, 3) = 0.5*(-1. + x)*x*(1. - z)*(1. + z); 
 
  403         outputValues(12,i0, 4) = (x*x)*(y*(-z) + 0.5*z) + x*(-0.5*z + y*(z)); 
 
  404         outputValues(12,i0, 5) = -0.5*(-1. + x)*x*(-1. + y)*y; 
 
  406         outputValues(13,i0, 0) = 0.5*(-1. + y)*y*(1. - z)*(1. + z); 
 
  407         outputValues(13,i0, 1) = -0.25  + 0.25*(z*z) + y*(0.5  - 0.5*(z*z)) + x*(-0.5  + 0.5*(z*z) + y*(1.  - (z*z))); 
 
  408         outputValues(13,i0, 2) = (y*y)*(x*(-z) - 0.5*z) + y*(0.5*z + x*(z)); 
 
  409         outputValues(13,i0, 3) = 0.5*x*(1 + x)*(1. - z)*(1. + z); 
 
  410         outputValues(13,i0, 4) = x*(y*(-z) + 0.5*z) + (x*x)*(y*(-z) + 0.5*z); 
 
  411         outputValues(13,i0, 5) = -0.5*x*(1 + x)*(-1. + y)*y; 
 
  413         outputValues(14,i0, 0) = 0.5*y*(1 + y)*(1. - z)*(1. + z); 
 
  414         outputValues(14,i0, 1) = 0.25  - 0.25*(z*z) + y*(0.5  - 0.5*(z*z)) + x*(0.5  - 0.5*(z*z) + y*(1.  - (z*z))); 
 
  415         outputValues(14,i0, 2) = y*(x*(-z) - 0.5*z) + (y*y)*(x*(-z) - 0.5*z); 
 
  416         outputValues(14,i0, 3) = 0.5*x*(1 + x)*(1. - z)*(1. + z); 
 
  417         outputValues(14,i0, 4) = x*(y*(-z) - 0.5*z) + (x*x)*(y*(-z) - 0.5*z); 
 
  418         outputValues(14,i0, 5) = -0.5*x*(1 + x)*y*(1 + y); 
 
  420         outputValues(15,i0, 0) = 0.5*y*(1 + y)*(1. - z)*(1. + z); 
 
  421         outputValues(15,i0, 1) = -0.25  + 0.25*(z*z) + y*(-0.5  + 0.5*(z*z)) + x*(0.5  - 0.5*(z*z) + y*(1.  - (z*z))); 
 
  422         outputValues(15,i0, 2) = y*(x*(-z) + 0.5*z) + (y*y)*(x*(-z) + 0.5*z); 
 
  423         outputValues(15,i0, 3) = 0.5*(-1. + x)*x*(1. - z)*(1. + z); 
 
  424         outputValues(15,i0, 4) = (x*x)*(y*(-z) - 0.5*z) + x*(0.5*z + y*(z)); 
 
  425         outputValues(15,i0, 5) = -0.5*(-1. + x)*x*y*(1 + y); 
 
  427         outputValues(16,i0, 0) = -0.5*(-1. + y)*y*z*(1 + z); 
 
  428         outputValues(16,i0, 1) = (x*(0.5 - y) )*z + (x*(0.5 - y) )*(z*z); 
 
  429         outputValues(16,i0, 2) = (y*y)*(x*(-0.5 - z) ) + y*(x*(0.5 + z)); 
 
  430         outputValues(16,i0, 3) = 0.5*(1. - x)*(1. + x)*z*(1 + z); 
 
  431         outputValues(16,i0, 4) = -0.25 + (x*x)*(0.25 + y*(-0.5 - z) + 0.5*z) - 0.5*z + y*(0.5 + z); 
 
  432         outputValues(16,i0, 5) = 0.5*(1. - x)*(1. + x)*(-1. + y)*y; 
 
  434         outputValues(17,i0, 0) = 0.5*(1. - y)*(1. + y)*z*(1 + z); 
 
  435         outputValues(17,i0, 1) = (x*(-y) - 0.5*y)*z + (x*(-y) - 0.5*y)*(z*z); 
 
  436         outputValues(17,i0, 2) = 0.25 + (y*y)*(-0.25 - 0.5*z) + 0.5*z + x*(0.5 + (y*y)*(-0.5 - z) + z); 
 
  437         outputValues(17,i0, 3) = -0.5*x*(1 + x)*z*(1 + z); 
 
  438         outputValues(17,i0, 4) = x*(y*(-0.5 - z) ) + (x*x)*(y*(-0.5 - z) ); 
 
  439         outputValues(17,i0, 5) = 0.5*x*(1 + x)*(1. - y)*(1. + y); 
 
  441         outputValues(18,i0, 0) = -0.5*y*(1 + y)*z*(1 + z); 
 
  442         outputValues(18,i0, 1) = (x*(-0.5 - y) )*z + (x*(-0.5 - y) )*(z*z); 
 
  443         outputValues(18,i0, 2) = y*(x*(-0.5 - z) ) + (y*y)*(x*(-0.5 - z) ); 
 
  444         outputValues(18,i0, 3) = 0.5*(1. - x)*(1. + x)*z*(1 + z); 
 
  445         outputValues(18,i0, 4) = 0.25 + (x*x)*(-0.25 + y*(-0.5 - z) - 0.5*z) + 0.5*z + y*(0.5 + z); 
 
  446         outputValues(18,i0, 5) = 0.5*(1. - x)*(1. + x)*y*(1 + y); 
 
  448         outputValues(19,i0, 0) = 0.5*(1. - y)*(1. + y)*z*(1 + z); 
 
  449         outputValues(19,i0, 1) = (x*(-y) + 0.5*y)*z + (x*(-y) + 0.5*y)*(z*z); 
 
  450         outputValues(19,i0, 2) = -0.25 + (y*y)*(0.25 + 0.5*z) - 0.5*z + x*(0.5 + (y*y)*(-0.5 - z) + z); 
 
  451         outputValues(19,i0, 3) = -0.5*(-1. + x)*x*z*(1 + z); 
 
  452         outputValues(19,i0, 4) = (x*x)*(y*(-0.5 - z) ) + x*(y*(0.5 + z)); 
 
  453         outputValues(19,i0, 5) = 0.5*(-1. + x)*x*(1. - y)*(1. + y); 
 
  455         outputValues(20,i0, 0) = -2.*(1. - y)*(1. + y)*(1. - z)*(1. + z); 
 
  456         outputValues(20,i0, 1) = -4.*x*y*(-1. + z*z);         
 
  457         outputValues(20,i0, 2) = x*((y*y)*(-4.*z) + 4.*z); 
 
  458         outputValues(20,i0, 3) = -2.*(1. - x)*(1. + x)*(1. - z)*(1. + z); 
 
  459         outputValues(20,i0, 4) = (x*x)*(y*(-4.*z) ) + y*(4.*z); 
 
  460         outputValues(20,i0, 5) = -2.*(1. - x)*(1. + x)*(1. - y)*(1. + y); 
 
  462         outputValues(21,i0, 0) = -(1. - y)*(1. + y)*(-1. + z)*z; 
 
  463         outputValues(21,i0, 1) = (x*(-2.*y) )*z + (0.  + x*(2.*y))*(z*z); 
 
  464         outputValues(21,i0, 2) =  x*(1. - 2.*z + (y*y)*(-1. + 2.*z)); 
 
  465         outputValues(21,i0, 3) = -(1. - x)*(1. + x)*(-1. + z)*z; 
 
  466         outputValues(21,i0, 4) = y*(1. - 2.*z)  + (x*x)*(y*(-1. + 2.*z)); 
 
  467         outputValues(21,i0, 5) = (1. - x)*(1. + x)*(1. - y)*(1. + y); 
 
  469         outputValues(22,i0, 0) = -(1. - y)*(1. + y)*z*(1 + z); 
 
  470         outputValues(22,i0, 1) = (0.  + x*(2.*y))*z + (0.  + x*(2.*y))*(z*z); 
 
  471         outputValues(22,i0, 2) = x*(-1. - 2.*z + (y*y)*(1. + 2.*z)); 
 
  472         outputValues(22,i0, 3) = -(1. - x)*(1. + x)*z*(1 + z); 
 
  473         outputValues(22,i0, 4) = y*(-1. - 2.*z) + (x*x)*(y*(1. + 2.*z)); 
 
  474         outputValues(22,i0, 5) = (1. - x)*(1. + x)*(1. - y)*(1. + y); 
 
  476         outputValues(23,i0, 0) = (1. - y)*(1. + y)*(1. - z)*(1. + z); 
 
  477         outputValues(23,i0, 1) = (-1. + 2.*x)*y*(-1. + z*z);
 
  478         outputValues(23,i0, 2) = (-1. + 2.*x)*(-1. + y*y)*z; 
 
  479         outputValues(23,i0, 3) =-(-1. + x)*x*(1. - z)*(1. + z); 
 
  480         outputValues(23,i0, 4) =  2.*(-1. + x)*x*y*z; 
 
  481         outputValues(23,i0, 5) =-(-1. + x)*x*(1. - y)*(1. + y); 
 
  483         outputValues(24,i0, 0) = (1. - y)*(1. + y)*(1. - z)*(1. + z); 
 
  484         outputValues(24,i0, 1) = (1. + 2.*x)*y*(-1. + z*z); 
 
  485         outputValues(24,i0, 2) = (1. + 2.*x)*(-1. + y*y)*z; 
 
  486         outputValues(24,i0, 3) = x*(1. + x)*(-1. + z)*(1. + z); 
 
  487         outputValues(24,i0, 4) = 2.*x*(1. + x)*y*z; 
 
  488         outputValues(24,i0, 5) = x*(1. + x)*(-1. + y)*(1. + y); 
 
  490         outputValues(25,i0, 0) = -(-1. + y)*y*(1. - z)*(1. + z); 
 
  491         outputValues(25,i0, 1) = x*(-1. + 2.*y)*(-1. + z*z); 
 
  492         outputValues(25,i0, 2) = 2.*x*(-1. + y)*y*z; 
 
  493         outputValues(25,i0, 3) = (1. - x)*(1. + x)*(1. - z)*(1. + z); 
 
  494         outputValues(25,i0, 4) = (-1. + x*x)*(-1. + 2.*y)*z; 
 
  495         outputValues(25,i0, 5) =-(1. - x)*(1. + x)*(-1. + y)*y; 
 
  497         outputValues(26,i0, 0) =  y*(1. + y)*(-1. + z)*(1. + z);
 
  498         outputValues(26,i0, 1) =  x*(1. + 2.*y)*(-1. + z*z);
 
  499         outputValues(26,i0, 2) =  2.*x*y*(1. + y)*z;
 
  500         outputValues(26,i0, 3) =  (-1. + x)*(1. + x)*(-1. + z)*(1. + z);
 
  501         outputValues(26,i0, 4) =  (-1. + x*x)*(1. + 2.*y)*z;
 
  502         outputValues(26,i0, 5) =  (-1. + x)*(1. + x)*y*(1. + y);
 
  507       for (
int i0 = 0; i0 < dim0; i0++) {
 
  508         x = inputPoints(i0,0);
 
  509         y = inputPoints(i0,1);
 
  510         z = inputPoints(i0,2);
 
  512         outputValues(0,i0, 0) = 0.;
 
  513         outputValues(0,i0, 1) = ((-1.+ 2.*y)*(-1.+ z)*z)/4.;
 
  514         outputValues(0,i0, 2) = ((-1.+ y)*y*(-1.+ 2.*z))/4.;
 
  515         outputValues(0,i0, 3) = ((-1.+ 2.*x)*(-1.+ z)*z)/4.;
 
  516         outputValues(0,i0, 4) = ((-1.+ 2.*x)*(-1.+ 2.*y)*(-1.+ 2.*z))/8.;
 
  517         outputValues(0,i0, 5) = ((-1.+ 2.*x)*(-1.+ y)*y)/4.;
 
  518         outputValues(0,i0, 6) = 0.;    
 
  519         outputValues(0,i0, 7) = ((-1.+ x)*x*(-1.+ 2.*z))/4.;
 
  520         outputValues(0,i0, 8) = ((-1.+ x)*x*(-1.+ 2.*y))/4.;
 
  521         outputValues(0,i0, 9) = 0.;
 
  523         outputValues(1, i0, 0) = 0.;
 
  524         outputValues(1, i0, 1) = ((-1.+ 2.*y)*(-1.+ z)*z)/4.;
 
  525         outputValues(1, i0, 2) = ((-1.+ y)*y*(-1.+ 2.*z))/4.;
 
  526         outputValues(1, i0, 3) = ((1.+ 2.*x)*(-1.+ z)*z)/4.;
 
  527         outputValues(1, i0, 4) = ((1.+ 2.*x)*(-1.+ 2.*y)*(-1.+ 2.*z))/8.;
 
  528         outputValues(1, i0, 5) = ((1.+ 2.*x)*(-1.+ y)*y)/4.;
 
  529         outputValues(1, i0, 6) = 0.;
 
  530         outputValues(1, i0, 7) = (x*(1.+ x)*(-1.+ 2.*z))/4.;
 
  531         outputValues(1, i0, 8) = (x*(1.+ x)*(-1.+ 2.*y))/4.;
 
  532         outputValues(1, i0, 9) = 0.;
 
  534         outputValues(2, i0, 0) = 0.;
 
  535         outputValues(2, i0, 1) = ((1.+ 2.*y)*(-1.+ z)*z)/4.;
 
  536         outputValues(2, i0, 2) = (y*(1.+ y)*(-1.+ 2.*z))/4.;
 
  537         outputValues(2, i0, 3) = ((1.+ 2.*x)*(-1.+ z)*z)/4.;
 
  538         outputValues(2, i0, 4) = ((1.+ 2.*x)*(1.+ 2.*y)*(-1.+ 2.*z))/8.;
 
  539         outputValues(2, i0, 5) = ((1.+ 2.*x)*y*(1.+ y))/4.;
 
  540         outputValues(2, i0, 6) = 0.;
 
  541         outputValues(2, i0, 7) = (x*(1.+ x)*(-1.+ 2.*z))/4.;
 
  542         outputValues(2, i0, 8) = (x*(1.+ x)*(1.+ 2.*y))/4.;
 
  543         outputValues(2, i0, 9) = 0.;
 
  545         outputValues(3, i0, 0) = 0.;
 
  546         outputValues(3, i0, 1) = ((1.+ 2.*y)*(-1.+ z)*z)/4.;
 
  547         outputValues(3, i0, 2) = (y*(1.+ y)*(-1.+ 2.*z))/4.;
 
  548         outputValues(3, i0, 3) = ((-1.+ 2.*x)*(-1.+ z)*z)/4.;
 
  549         outputValues(3, i0, 4) = ((-1.+ 2.*x)*(1.+ 2.*y)*(-1.+ 2.*z))/8.;
 
  550         outputValues(3, i0, 5) = ((-1.+ 2.*x)*y*(1.+ y))/4.;
 
  551         outputValues(3, i0, 6) = 0.;
 
  552         outputValues(3, i0, 7) = ((-1.+ x)*x*(-1.+ 2.*z))/4.;
 
  553         outputValues(3, i0, 8) = ((-1.+ x)*x*(1.+ 2.*y))/4.;
 
  554         outputValues(3, i0, 9) = 0.;
 
  556         outputValues(4, i0, 0) = 0.;
 
  557         outputValues(4, i0, 1) = ((-1.+ 2.*y)*z*(1.+ z))/4.;
 
  558         outputValues(4, i0, 2) = ((-1.+ y)*y*(1.+ 2.*z))/4.;
 
  559         outputValues(4, i0, 3) = ((-1.+ 2.*x)*z*(1.+ z))/4.;
 
  560         outputValues(4, i0, 4) = ((-1.+ 2.*x)*(-1.+ 2.*y)*(1.+ 2.*z))/8.;
 
  561         outputValues(4, i0, 5) = ((-1.+ 2.*x)*(-1.+ y)*y)/4.;
 
  562         outputValues(4, i0, 6) = 0.;
 
  563         outputValues(4, i0, 7) = ((-1.+ x)*x*(1.+ 2.*z))/4.;
 
  564         outputValues(4, i0, 8) = ((-1.+ x)*x*(-1.+ 2.*y))/4.;
 
  565         outputValues(4, i0, 9) = 0.;
 
  567         outputValues(5, i0, 0) = 0.;
 
  568         outputValues(5, i0, 1) = ((-1.+ 2.*y)*z*(1.+ z))/4.;
 
  569         outputValues(5, i0, 2) = ((-1.+ y)*y*(1.+ 2.*z))/4.;
 
  570         outputValues(5, i0, 3) = ((1.+ 2.*x)*z*(1.+ z))/4.;
 
  571         outputValues(5, i0, 4) = ((1.+ 2.*x)*(-1.+ 2.*y)*(1.+ 2.*z))/8.;
 
  572         outputValues(5, i0, 5) = ((1.+ 2.*x)*(-1.+ y)*y)/4.;
 
  573         outputValues(5, i0, 6) = 0.;
 
  574         outputValues(5, i0, 7) = (x*(1.+ x)*(1.+ 2.*z))/4.;
 
  575         outputValues(5, i0, 8) = (x*(1.+ x)*(-1.+ 2.*y))/4.;
 
  576         outputValues(5, i0, 9) = 0.;
 
  578         outputValues(6, i0, 0) = 0.;
 
  579         outputValues(6, i0, 1) = ((1.+ 2.*y)*z*(1.+ z))/4.;
 
  580         outputValues(6, i0, 2) = (y*(1.+ y)*(1.+ 2.*z))/4.;
 
  581         outputValues(6, i0, 3) = ((1.+ 2.*x)*z*(1.+ z))/4.;
 
  582         outputValues(6, i0, 4) = ((1.+ 2.*x)*(1.+ 2.*y)*(1.+ 2.*z))/8.;
 
  583         outputValues(6, i0, 5) = ((1.+ 2.*x)*y*(1.+ y))/4.;
 
  584         outputValues(6, i0, 6) = 0.;
 
  585         outputValues(6, i0, 7) = (x*(1.+ x)*(1.+ 2.*z))/4.;
 
  586         outputValues(6, i0, 8) = (x*(1.+ x)*(1.+ 2.*y))/4.;
 
  587         outputValues(6, i0, 9) = 0.;
 
  589         outputValues(7, i0, 0) = 0.;
 
  590         outputValues(7, i0, 1) = ((1.+ 2.*y)*z*(1.+ z))/4.;
 
  591         outputValues(7, i0, 2) = (y*(1.+ y)*(1.+ 2.*z))/4.;
 
  592         outputValues(7, i0, 3) = ((-1.+ 2.*x)*z*(1.+ z))/4.;
 
  593         outputValues(7, i0, 4) = ((-1.+ 2.*x)*(1.+ 2.*y)*(1.+ 2.*z))/8.;
 
  594         outputValues(7, i0, 5) = ((-1.+ 2.*x)*y*(1.+ y))/4.;
 
  595         outputValues(7, i0, 6) = 0.;
 
  596         outputValues(7, i0, 7) = ((-1.+ x)*x*(1.+ 2.*z))/4.;
 
  597         outputValues(7, i0, 8) = ((-1.+ x)*x*(1.+ 2.*y))/4.;
 
  598         outputValues(7, i0, 9) = 0.; 
 
  600         outputValues(8, i0, 0) = 0.;
 
  601         outputValues(8, i0, 1) = -((-1.+ 2.*y)*(-1.+ z)*z)/2.;
 
  602         outputValues(8, i0, 2) = -((-1.+ y)*y*(-1.+ 2.*z))/2.;
 
  603         outputValues(8, i0, 3) = -(x*(-1.+ z)*z);
 
  604         outputValues(8, i0, 4) = -(x*(-1.+ 2.*y)*(-1.+ 2.*z))/2.;
 
  605         outputValues(8, i0, 5) = -(x*(-1.+ y)*y);
 
  606         outputValues(8, i0, 6) = 0.;
 
  607         outputValues(8, i0, 7) = -((-1.+ (x*x))*(-1.+ 2.*z))/2.;    
 
  608         outputValues(8, i0, 8) = -((-1.+ (x*x))*(-1.+ 2.*y))/2.;
 
  609         outputValues(8, i0, 9) = 0.;
 
  611         outputValues(9, i0, 0) = 0.;
 
  612         outputValues(9, i0, 1) = -(y*(-1.+ z)*z);
 
  613         outputValues(9, i0, 2) = -((-1.+ (y*y))*(-1.+ 2.*z))/2.;
 
  614         outputValues(9, i0, 3) = -((1.+ 2.*x)*(-1.+ z)*z)/2.;
 
  615         outputValues(9, i0, 4) = -((1.+ 2.*x)*y*(-1.+ 2.*z))/2.;
 
  616         outputValues(9, i0, 5) = -((1.+ 2.*x)*(-1.+ (y*y)))/2.;
 
  617         outputValues(9, i0, 6) = 0.;
 
  618         outputValues(9, i0, 7) = -(x*(1.+ x)*(-1.+ 2.*z))/2.;
 
  619         outputValues(9, i0, 8) = -(x*(1.+ x)*y);
 
  620         outputValues(9, i0, 9) = 0.; 
 
  622         outputValues(10,i0, 0) = 0.;
 
  623         outputValues(10,i0, 1) = -((1.+ 2.*y)*(-1.+ z)*z)/2.;
 
  624         outputValues(10,i0, 2) = -(y*(1.+ y)*(-1.+ 2.*z))/2.;
 
  625         outputValues(10,i0, 3) = -(x*(-1.+ z)*z);
 
  626         outputValues(10,i0, 4) = -(x*(1.+ 2.*y)*(-1.+ 2.*z))/2.;
 
  627         outputValues(10,i0, 5) = -(x*y*(1.+ y));
 
  628         outputValues(10,i0, 6) = 0.;
 
  629         outputValues(10,i0, 7) =  -((-1.+ (x*x))*(-1.+ 2.*z))/2.;    
 
  630         outputValues(10,i0, 8) = -((-1.+ (x*x))*(1.+ 2.*y))/2.;
 
  631         outputValues(10,i0, 9) = 0.;
 
  633         outputValues(11,i0, 0) = 0.;
 
  634         outputValues(11,i0, 1) = -(y*(-1.+ z)*z);
 
  635         outputValues(11,i0, 2) = -((-1.+ (y*y))*(-1.+ 2.*z))/2.;
 
  636         outputValues(11,i0, 3) = -((-1.+ 2.*x)*(-1.+ z)*z)/2.;
 
  637         outputValues(11,i0, 4) = -((-1.+ 2.*x)*y*(-1.+ 2.*z))/2.;
 
  638         outputValues(11,i0, 5) = -((-1.+ 2.*x)*(-1.+ (y*y)))/2.;
 
  639         outputValues(11,i0, 6) = 0.;
 
  640         outputValues(11,i0, 7) = -((-1.+ x)*x*(-1.+ 2.*z))/2.;
 
  641         outputValues(11,i0, 8) = -((-1.+ x)*x*y);
 
  642         outputValues(11,i0, 9) = 0.;   
 
  644         outputValues(12,i0, 0) = 0.;
 
  645         outputValues(12,i0, 1) = -((-1.+ 2.*y)*(-1.+ (z*z)))/2.;
 
  646         outputValues(12,i0, 2) = -((-1.+ y)*y*z);
 
  647         outputValues(12,i0, 3) = -((-1.+ 2.*x)*(-1.+ (z*z)))/2.;
 
  648         outputValues(12,i0, 4) = -((-1.+ 2.*x)*(-1.+ 2.*y)*z)/2.;
 
  649         outputValues(12,i0, 5) = -((-1.+ 2.*x)*(-1.+ y)*y)/2.;
 
  650         outputValues(12,i0, 6) = 0.;
 
  651         outputValues(12,i0, 7) = -((-1.+ x)*x*z);    
 
  652         outputValues(12,i0, 8) = -((-1.+ x)*x*(-1.+ 2.*y))/2.;
 
  653         outputValues(12,i0, 9) = 0.;
 
  655         outputValues(13,i0, 0) = 0.;
 
  656         outputValues(13,i0, 1) = -((-1.+ 2.*y)*(-1.+ (z*z)))/2.;
 
  657         outputValues(13,i0, 2) = -((-1.+ y)*y*z);
 
  658         outputValues(13,i0, 3) = -((1.+ 2.*x)*(-1.+ (z*z)))/2.;
 
  659         outputValues(13,i0, 4) = -((1.+ 2.*x)*(-1.+ 2.*y)*z)/2.;
 
  660         outputValues(13,i0, 5) = -((1.+ 2.*x)*(-1.+ y)*y)/2.;
 
  661         outputValues(13,i0, 6) = 0.;
 
  662         outputValues(13,i0, 7) = -(x*(1.+ x)*z);
 
  663         outputValues(13,i0, 8) = -(x*(1.+ x)*(-1.+ 2.*y))/2.;
 
  664         outputValues(13,i0, 9) = 0.; 
 
  666         outputValues(14,i0, 0) = 0.;
 
  667         outputValues(14,i0, 1) = -((1.+ 2.*y)*(-1.+ (z*z)))/2.;
 
  668         outputValues(14,i0, 2) = -(y*(1.+ y)*z);
 
  669         outputValues(14,i0, 3) = -((1.+ 2.*x)*(-1.+ (z*z)))/2.;
 
  670         outputValues(14,i0, 4) = -((1.+ 2.*x)*(1.+ 2.*y)*z)/2.;
 
  671         outputValues(14,i0, 5) = -((1.+ 2.*x)*y*(1.+ y))/2.;
 
  672         outputValues(14,i0, 6) = 0.;
 
  673         outputValues(14,i0, 7) = -(x*(1.+ x)*z);    
 
  674         outputValues(14,i0, 8) = -(x*(1.+ x)*(1.+ 2.*y))/2.;
 
  675         outputValues(14,i0, 9) = 0.;
 
  677         outputValues(15,i0, 0) = 0.;
 
  678         outputValues(15,i0, 1) = -((1.+ 2.*y)*(-1.+ (z*z)))/2.;
 
  679         outputValues(15,i0, 2) = -(y*(1.+ y)*z);
 
  680         outputValues(15,i0, 3) = -((-1.+ 2.*x)*(-1.+ (z*z)))/2.;
 
  681         outputValues(15,i0, 4) = -((-1.+ 2.*x)*(1.+ 2.*y)*z)/2.;
 
  682         outputValues(15,i0, 5) = -((-1.+ 2.*x)*y*(1.+ y))/2.;
 
  683         outputValues(15,i0, 6) = 0.;
 
  684         outputValues(15,i0, 7) = -((-1.+ x)*x*z);
 
  685         outputValues(15,i0, 8) = -((-1.+ x)*x*(1.+ 2.*y))/2.;
 
  686         outputValues(15,i0, 9) = 0.; 
 
  688         outputValues(16,i0, 0) = 0.;
 
  689         outputValues(16,i0, 1) = -((-1.+ 2.*y)*z*(1.+ z))/2.;
 
  690         outputValues(16,i0, 2) = -((-1.+ y)*y*(1.+ 2.*z))/2.;
 
  691         outputValues(16,i0, 3) = -(x*z*(1.+ z));
 
  692         outputValues(16,i0, 4) = -(x*(-1.+ 2.*y)*(1.+ 2.*z))/2.;
 
  693         outputValues(16,i0, 5) = -(x*(-1.+ y)*y);
 
  694         outputValues(16,i0, 6) = 0.;
 
  695         outputValues(16,i0, 7) = -((-1.+ (x*x))*(1.+ 2.*z))/2.;    
 
  696         outputValues(16,i0, 8) = -((-1.+ (x*x))*(-1.+ 2.*y))/2.;
 
  697         outputValues(16,i0, 9) = 0.;
 
  699         outputValues(17,i0, 0) = 0.;
 
  700         outputValues(17,i0, 1) = -(y*z*(1.+ z));
 
  701         outputValues(17,i0, 2) = -((-1.+ (y*y))*(1.+ 2.*z))/2.;
 
  702         outputValues(17,i0, 3) = -((1.+ 2.*x)*z*(1.+ z))/2.;
 
  703         outputValues(17,i0, 4) = -((1.+ 2.*x)*y*(1.+ 2.*z))/2.;
 
  704         outputValues(17,i0, 5) = -((1.+ 2.*x)*(-1.+ (y*y)))/2.;
 
  705         outputValues(17,i0, 6) = 0.;
 
  706         outputValues(17,i0, 7) = -(x*(1.+ x)*(1.+ 2.*z))/2.;
 
  707         outputValues(17,i0, 8) = -(x*(1.+ x)*y);
 
  708         outputValues(17,i0, 9) = 0.;
 
  710         outputValues(18,i0, 0) = 0.;
 
  711         outputValues(18,i0, 1) = -((1.+ 2.*y)*z*(1.+ z))/2.;
 
  712         outputValues(18,i0, 2) = -(y*(1.+ y)*(1.+ 2.*z))/2.;
 
  713         outputValues(18,i0, 3) = -(x*z*(1.+ z));
 
  714         outputValues(18,i0, 4) = -(x*(1.+ 2.*y)*(1.+ 2.*z))/2.;
 
  715         outputValues(18,i0, 5) = -(x*y*(1.+ y));
 
  716         outputValues(18,i0, 6) = 0.;
 
  717         outputValues(18,i0, 7) = -((-1.+ (x*x))*(1.+ 2.*z))/2.;    
 
  718         outputValues(18,i0, 8) = -((-1.+ (x*x))*(1.+ 2.*y))/2.;
 
  719         outputValues(18,i0, 9) = 0.;
 
  721         outputValues(19,i0, 0) = 0.;
 
  722         outputValues(19,i0, 1) = -(y*z*(1.+ z));
 
  723         outputValues(19,i0, 2) = -((-1.+ (y*y))*(1.+ 2.*z))/2.;
 
  724         outputValues(19,i0, 3) = -((-1.+ 2.*x)*z*(1.+ z))/2.;
 
  725         outputValues(19,i0, 4) = -((-1.+ 2.*x)*y*(1.+ 2.*z))/2.;
 
  726         outputValues(19,i0, 5) = -((-1.+ 2.*x)*(-1.+ (y*y)))/2.;
 
  727         outputValues(19,i0, 6) = 0.;
 
  728         outputValues(19,i0, 7) = -((-1.+ x)*x*(1.+ 2.*z))/2.;
 
  729         outputValues(19,i0, 8) = -((-1.+ x)*x*y);
 
  730         outputValues(19,i0, 9) = 0.;
 
  732         outputValues(20,i0, 0) = 0.;
 
  733         outputValues(20,i0, 1) = -4*y*(-1.+ (z*z));
 
  734         outputValues(20,i0, 2) = -4*(-1.+ (y*y))*z;
 
  735         outputValues(20,i0, 3) = -4*x*(-1.+ (z*z));
 
  736         outputValues(20,i0, 4) = -8*x*y*z;
 
  737         outputValues(20,i0, 5) = -4*x*(-1.+ (y*y));
 
  738         outputValues(20,i0, 6) = 0.;
 
  739         outputValues(20,i0, 7) = -4*(-1.+ (x*x))*z;
 
  740         outputValues(20,i0, 8) = -4*(-1.+ (x*x))*y;
 
  741         outputValues(20,i0, 9) = 0.;    
 
  743         outputValues(21,i0, 0) = 0.;
 
  744         outputValues(21,i0, 1) = 2.*y*(-1.+ z)*z;
 
  745         outputValues(21,i0, 2) = (-1.+ (y*y))*(-1.+ 2.*z);
 
  746         outputValues(21,i0, 3) = 2.*x*(-1.+ z)*z;
 
  747         outputValues(21,i0, 4) = 2.*x*y*(-1.+ 2.*z);
 
  748         outputValues(21,i0, 5) = 2.*x*(-1.+ (y*y));
 
  749         outputValues(21,i0, 6) = 0.;
 
  750         outputValues(21,i0, 7) = (-1.+ (x*x))*(-1.+ 2.*z);
 
  751         outputValues(21,i0, 8) = 2.*(-1.+ (x*x))*y;
 
  752         outputValues(21,i0, 9) = 0.;    
 
  754         outputValues(22,i0, 0) = 0.;
 
  755         outputValues(22,i0, 1) = 2.*y*z*(1.+ z);
 
  756         outputValues(22,i0, 2) = (-1.+ (y*y))*(1.+ 2.*z);
 
  757         outputValues(22,i0, 3) = 2.*x*z*(1.+ z);
 
  758         outputValues(22,i0, 4) = 2.*x*y*(1.+ 2.*z);
 
  759         outputValues(22,i0, 5) = 2.*x*(-1.+ (y*y));
 
  760         outputValues(22,i0, 6) = 0.;
 
  761         outputValues(22,i0, 7) = (-1.+ (x*x))*(1.+ 2.*z);
 
  762         outputValues(22,i0, 8) = 2.*(-1.+ (x*x))*y;
 
  763         outputValues(22,i0, 9) = 0.;    
 
  765         outputValues(23,i0, 0) = 0.;
 
  766         outputValues(23,i0, 1) = 2.*y*(-1.+ (z*z));
 
  767         outputValues(23,i0, 2) = 2.*(-1.+ (y*y))*z;
 
  768         outputValues(23,i0, 3) = (-1.+ 2.*x)*(-1.+ (z*z));
 
  769         outputValues(23,i0, 4) = 2.*(-1.+ 2.*x)*y*z;
 
  770         outputValues(23,i0, 5) = (-1.+ 2.*x)*(-1.+ (y*y));
 
  771         outputValues(23,i0, 6) = 0.;
 
  772         outputValues(23,i0, 7) = 2.*(-1.+ x)*x*z;
 
  773         outputValues(23,i0, 8) = 2.*(-1.+ x)*x*y;
 
  774         outputValues(23,i0, 9) = 0.;
 
  776         outputValues(24,i0, 0) = 0.;
 
  777         outputValues(24,i0, 1) = 2.*y*(-1.+ (z*z));
 
  778         outputValues(24,i0, 2) = 2.*(-1.+ (y*y))*z;
 
  779         outputValues(24,i0, 3) = (1.+ 2.*x)*(-1.+ (z*z));
 
  780         outputValues(24,i0, 4) = 2.*(1.+ 2.*x)*y*z;
 
  781         outputValues(24,i0, 5) = (1.+ 2.*x)*(-1.+ (y*y));
 
  782         outputValues(24,i0, 6) = 0.;
 
  783         outputValues(24,i0, 7) = 2.*x*(1.+ x)*z;
 
  784         outputValues(24,i0, 8) = 2.*x*(1.+ x)*y;
 
  785         outputValues(24,i0, 9) = 0.;   
 
  787         outputValues(25,i0, 0) = 0.;
 
  788         outputValues(25,i0, 1) = (-1.+ 2.*y)*(-1.+ (z*z));
 
  789         outputValues(25,i0, 2) = 2.*(-1.+ y)*y*z;
 
  790         outputValues(25,i0, 3) = 2.*x*(-1.+ (z*z));
 
  791         outputValues(25,i0, 4) = 2.*x*(-1.+ 2.*y)*z;
 
  792         outputValues(25,i0, 5) = 2.*x*(-1.+ y)*y;
 
  793         outputValues(25,i0, 6) = 0.;
 
  794         outputValues(25,i0, 7) = 2.*(-1.+ (x*x))*z;
 
  795         outputValues(25,i0, 8) = (-1.+ (x*x))*(-1.+ 2.*y);
 
  796         outputValues(25,i0, 9) = 0.;  
 
  798         outputValues(26,i0, 0) = 0.;
 
  799         outputValues(26,i0, 1) = (1.+ 2.*y)*(-1.+ (z*z));    
 
  800         outputValues(26,i0, 2) = 2.*y*(1.+ y)*z;
 
  801         outputValues(26,i0, 3) = 2.*x*(-1.+ (z*z));
 
  802         outputValues(26,i0, 4) = 2.*x*(1.+ 2.*y)*z;
 
  803         outputValues(26,i0, 5) = 2.*x*y*(1.+ y);
 
  804         outputValues(26,i0, 6) = 0.;
 
  805         outputValues(26,i0, 7) = 2.*(-1.+ (x*x))*z;
 
  806         outputValues(26,i0, 8) = (-1.+ (x*x))*(1.+ 2.*y);
 
  807         outputValues(26,i0, 9) = 0.;
 
  815         int DkCardinality = Intrepid::getDkCardinality(operatorType, 
this -> basisCellTopology_.getDimension() );
 
  816         for(
int dofOrd = 0; dofOrd < 
this -> basisCardinality_; dofOrd++) {
 
  817           for (
int i0 = 0; i0 < dim0; i0++) {
 
  818             for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
 
  819               outputValues(dofOrd, i0, dkOrd) = 0.0;
 
  824         for (
int i0 = 0; i0 < dim0; i0++) {
 
  825           x = inputPoints(i0,0);
 
  826           y = inputPoints(i0,1);
 
  827           z = inputPoints(i0,2);
 
  829           outputValues(0, i0, 3) = ((-1.+ z)*z)/2.;
 
  830           outputValues(0, i0, 4) = ((-1.+ 2.*y)*(-1.+ 2.*z))/4.; 
 
  831           outputValues(0, i0, 5) = ((-1.+ y)*y)/2.;
 
  832           outputValues(0, i0, 7) = ((-1.+ 2.*x)*(-1.+ 2.*z))/4.;
 
  833           outputValues(0, i0, 8) = ((-1.+ 2.*x)*(-1.+ 2.*y))/4.;
 
  834           outputValues(0, i0, 12)= ((-1.+ x)*x)/2.;
 
  836           outputValues(1, i0, 3) = ((-1.+ z)*z)/2.;
 
  837           outputValues(1, i0, 4) = ((-1.+ 2.*y)*(-1.+ 2.*z))/4.;
 
  838           outputValues(1, i0, 5) = ((-1.+ y)*y)/2.;
 
  839           outputValues(1, i0, 7) = ((1. + 2.*x)*(-1.+ 2.*z))/4.;
 
  840           outputValues(1, i0, 8) = ((1. + 2.*x)*(-1.+ 2.*y))/4.;
 
  841           outputValues(1, i0, 12)= (x*(1. + x))/2.;
 
  843           outputValues(2, i0, 3) = ((-1.+ z)*z)/2.;
 
  844           outputValues(2, i0, 4) = ((1. + 2.*y)*(-1.+ 2.*z))/4.;
 
  845           outputValues(2, i0, 5) = (y*(1. + y))/2.;
 
  846           outputValues(2, i0, 7) = ((1. + 2.*x)*(-1.+ 2.*z))/4.;
 
  847           outputValues(2, i0, 8) =  ((1. + 2.*x)*(1. + 2.*y))/4.;
 
  848           outputValues(2, i0, 12)= (x*(1. + x))/2.;
 
  850           outputValues(3, i0, 3) = ((-1.+ z)*z)/2.;
 
  851           outputValues(3, i0, 4) = ((1. + 2.*y)*(-1.+ 2.*z))/4.;
 
  852           outputValues(3, i0, 5) = (y*(1. + y))/2.;
 
  853           outputValues(3, i0, 7) = ((-1.+ 2.*x)*(-1.+ 2.*z))/4.;
 
  854           outputValues(3, i0, 8) = ((-1.+ 2.*x)*(1. + 2.*y))/4.;
 
  855           outputValues(3, i0, 12)= ((-1.+ x)*x)/2.;
 
  857           outputValues(4, i0, 3) = (z*(1. + z))/2.;
 
  858           outputValues(4, i0, 4) = ((-1.+ 2.*y)*(1. + 2.*z))/4.;
 
  859           outputValues(4, i0, 5) = ((-1.+ y)*y)/2.;
 
  860           outputValues(4, i0, 7) = ((-1.+ 2.*x)*(1. + 2.*z))/4.;
 
  861           outputValues(4, i0, 8) = ((-1.+ 2.*x)*(-1.+ 2.*y))/4.;
 
  862           outputValues(4, i0, 12)= ((-1.+ x)*x)/2.;
 
  864           outputValues(5, i0, 3) = (z*(1. + z))/2.;
 
  865           outputValues(5, i0, 4) = ((-1.+ 2.*y)*(1. + 2.*z))/4.;
 
  866           outputValues(5, i0, 5) = ((-1.+ y)*y)/2.;
 
  867           outputValues(5, i0, 7) = ((1. + 2.*x)*(1. + 2.*z))/4.; 
 
  868           outputValues(5, i0, 8) = ((1. + 2.*x)*(-1.+ 2.*y))/4.;
 
  869           outputValues(5, i0, 12)= (x*(1. + x))/2.;
 
  871           outputValues(6, i0, 3) = (z*(1. + z))/2.;
 
  872           outputValues(6, i0, 4) = ((1. + 2.*y)*(1. + 2.*z))/4.;
 
  873           outputValues(6, i0, 5) = (y*(1. + y))/2.;
 
  874           outputValues(6, i0, 7) = ((1. + 2.*x)*(1. + 2.*z))/4.;
 
  875           outputValues(6, i0, 8) = ((1. + 2.*x)*(1. + 2.*y))/4.;
 
  876           outputValues(6, i0, 12)=  (x*(1. + x))/2.; 
 
  878           outputValues(7, i0, 3) = (z*(1. + z))/2.;
 
  879           outputValues(7, i0, 4) = ((1. + 2.*y)*(1. + 2.*z))/4.;
 
  880           outputValues(7, i0, 5) = (y*(1. + y))/2.;
 
  881           outputValues(7, i0, 7) = ((-1.+ 2.*x)*(1. + 2.*z))/4.;
 
  882           outputValues(7, i0, 8) = ((-1.+ 2.*x)*(1. + 2.*y))/4.; 
 
  883           outputValues(7, i0, 12)= ((-1.+ x)*x)/2.;
 
  885           outputValues(8, i0, 3) = -((-1.+ z)*z);
 
  886           outputValues(8, i0, 4) = -0.5 + y + z - 2.*y*z;
 
  887           outputValues(8, i0, 5) = -((-1.+ y)*y);
 
  888           outputValues(8, i0, 7) = x - 2.*x*z;  
 
  889           outputValues(8, i0, 8) = x - 2.*x*y;
 
  890           outputValues(8, i0, 12)= 1. - x*x;  
 
  892           outputValues(9, i0, 3) = -((-1.+ z)*z);
 
  893           outputValues(9, i0, 4) = y - 2.*y*z;   
 
  894           outputValues(9, i0, 5) = 1 - y*y;
 
  895           outputValues(9, i0, 7) = 0.5 + x - z - 2.*x*z;
 
  896           outputValues(9, i0, 8) = -((1. + 2.*x)*y);
 
  897           outputValues(9, i0, 12)= -(x*(1. + x)); 
 
  899           outputValues(10,i0, 3) = -((-1.+ z)*z);
 
  900           outputValues(10,i0, 4) = 0.5 + y - z - 2.*y*z; 
 
  901           outputValues(10,i0, 5) = -(y*(1. + y));
 
  902           outputValues(10,i0, 7) = x - 2.*x*z; 
 
  903           outputValues(10,i0, 8) = -(x*(1. + 2.*y)); 
 
  904           outputValues(10,i0, 12)=  1. - x*x;   
 
  906           outputValues(11,i0, 3) = -((-1.+ z)*z);
 
  907           outputValues(11,i0, 4) =  y - 2.*y*z;   
 
  908           outputValues(11,i0, 5) =  1. - y*y;   
 
  909           outputValues(11,i0, 7) = -0.5 + x + z - 2.*x*z;
 
  910           outputValues(11,i0, 8) =  y - 2.*x*y;
 
  911           outputValues(11,i0, 12)= -((-1.+ x)*x);
 
  913           outputValues(12,i0, 3) = 1. - z*z;
 
  914           outputValues(12,i0, 4) = z - 2.*y*z;
 
  915           outputValues(12,i0, 5) = -((-1.+ y)*y);
 
  916           outputValues(12,i0, 7) =  z - 2.*x*z;
 
  917           outputValues(12,i0, 8) = -0.5 + x + y - 2.*x*y;
 
  918           outputValues(12,i0, 12)= -((-1.+ x)*x); 
 
  920           outputValues(13,i0, 3) =  1. - z*z;  
 
  921           outputValues(13,i0, 4) = z - 2.*y*z;
 
  922           outputValues(13,i0, 5) = -((-1.+ y)*y);
 
  923           outputValues(13,i0, 7) =  -((1. + 2.*x)*z); 
 
  924           outputValues(13,i0, 8) = 0.5 + x - y - 2.*x*y; 
 
  925           outputValues(13,i0, 12)= -(x*(1. + x));
 
  927           outputValues(14,i0, 3) = 1. - z*z;
 
  928           outputValues(14,i0, 4) = -((1. + 2.*y)*z);
 
  929           outputValues(14,i0, 5) = -(y*(1. + y));
 
  930           outputValues(14,i0, 7) = -((1. + 2.*x)*z);
 
  931           outputValues(14,i0, 8) = -((1. + 2.*x)*(1. + 2.*y))/2.;
 
  932           outputValues(14,i0, 12)= -(x*(1. + x)); 
 
  934           outputValues(15,i0, 3) =  1. - z*z;
 
  935           outputValues(15,i0, 4) = -((1. + 2.*y)*z);
 
  936           outputValues(15,i0, 5) = -(y*(1. + y));
 
  937           outputValues(15,i0, 7) = z - 2.*x*z; 
 
  938           outputValues(15,i0, 8) = 0.5 + y - x*(1. + 2.*y); 
 
  939           outputValues(15,i0, 12)= -((-1.+ x)*x);
 
  941           outputValues(16,i0, 3) = -(z*(1. + z)); 
 
  942           outputValues(16,i0, 4) = 0.5 + z - y*(1. + 2.*z);
 
  943           outputValues(16,i0, 5) = -((-1.+ y)*y);
 
  944           outputValues(16,i0, 7) = -(x*(1. + 2.*z));
 
  945           outputValues(16,i0, 8) = x - 2.*x*y;
 
  946           outputValues(16,i0, 12)= 1. - x*x;  
 
  948           outputValues(17,i0, 3) = -(z*(1. + z));
 
  949           outputValues(17,i0, 4) = -(y*(1. + 2.*z));
 
  950           outputValues(17,i0, 5) = 1. - y*y;
 
  951           outputValues(17,i0, 7) = -((1. + 2.*x)*(1. + 2.*z))/2.;
 
  952           outputValues(17,i0, 8) = -((1. + 2.*x)*y); 
 
  953           outputValues(17,i0, 12)= -(x*(1. + x));
 
  955           outputValues(18,i0, 3) = -(z*(1. + z));
 
  956           outputValues(18,i0, 4) = -((1. + 2.*y)*(1. + 2.*z))/2.;
 
  957           outputValues(18,i0, 5) = -(y*(1. + y));
 
  958           outputValues(18,i0, 7) =  -(x*(1. + 2.*z)); 
 
  959           outputValues(18,i0, 8) =  -(x*(1. + 2.*y)); 
 
  960           outputValues(18,i0, 12)= 1. - x*x; 
 
  962           outputValues(19,i0, 3) = -(z*(1. + z));
 
  963           outputValues(19,i0, 4) = -(y*(1. + 2.*z));
 
  964           outputValues(19,i0, 5) = 1. - y*y; 
 
  965           outputValues(19,i0, 7) = 0.5 + z - x*(1. + 2.*z);
 
  966           outputValues(19,i0, 8) = y - 2.*x*y;
 
  967           outputValues(19,i0, 12)= -((-1.+ x)*x); 
 
  969           outputValues(20,i0, 3) = 4. - 4.*z*z;
 
  970           outputValues(20,i0, 4) = -8.*y*z;
 
  971           outputValues(20,i0, 5) = 4. - 4.*y*y; 
 
  972           outputValues(20,i0, 7) = -8.*x*z;
 
  973           outputValues(20,i0, 8) = -8.*x*y; 
 
  974           outputValues(20,i0, 12)= 4. - 4.*x*x; 
 
  976           outputValues(21,i0, 3) = 2.*(-1.+ z)*z;
 
  977           outputValues(21,i0, 4) = 2.*y*(-1.+ 2.*z);  
 
  978           outputValues(21,i0, 5) = 2.*(-1.+ y*y);
 
  979           outputValues(21,i0, 7) = 2.*x*(-1.+ 2.*z);  
 
  980           outputValues(21,i0, 8) = 4.*x*y;  
 
  981           outputValues(21,i0, 12)= 2.*(-1.+ x*x); 
 
  983           outputValues(22,i0, 3) = 2.*z*(1. + z);
 
  984           outputValues(22,i0, 4) = 2.*(y + 2.*y*z);
 
  985           outputValues(22,i0, 5) = 2.*(-1.+ y*y);
 
  986           outputValues(22,i0, 7) = 2.*(x + 2.*x*z); 
 
  987           outputValues(22,i0, 8) = 4.*x*y;
 
  988           outputValues(22,i0, 12)= 2.*(-1.+ x*x);
 
  990           outputValues(23,i0, 3) = 2.*(-1.+ z*z); 
 
  991           outputValues(23,i0, 4) = 4.*y*z; 
 
  992           outputValues(23,i0, 5) = 2.*(-1.+ y*y);
 
  993           outputValues(23,i0, 7) = 2.*(-1.+ 2.*x)*z;
 
  994           outputValues(23,i0, 8) = 2.*(-1.+ 2.*x)*y; 
 
  995           outputValues(23,i0, 12)= 2.*(-1.+ x)*x; 
 
  997           outputValues(24,i0, 3) = 2.*(-1.+ z*z);
 
  998           outputValues(24,i0, 4) = 4.*y*z; 
 
  999           outputValues(24,i0, 5) = 2.*(-1.+ y*y);
 
 1000           outputValues(24,i0, 7) = 2.*(z + 2.*x*z); 
 
 1001           outputValues(24,i0, 8) = 2.*(y + 2.*x*y);
 
 1002           outputValues(24,i0, 12)= 2.*x*(1. + x);
 
 1004           outputValues(25,i0, 3) =  2.*(-1.+ z*z); 
 
 1005           outputValues(25,i0, 4) = 2.*(-1.+ 2.*y)*z;
 
 1006           outputValues(25,i0, 5) = 2.*(-1.+ y)*y;
 
 1007           outputValues(25,i0, 7) = 4.*x*z;  
 
 1008           outputValues(25,i0, 8) = 2.*x*(-1.+ 2.*y);  
 
 1009           outputValues(25,i0, 12)= 2.*(-1.+ x*x);
 
 1011           outputValues(26,i0, 3) = 2.*(-1.+ z*z);
 
 1012           outputValues(26,i0, 4) = 2.*(z + 2.*y*z);
 
 1013           outputValues(26,i0, 5) = 2.*y*(1. + y);
 
 1014           outputValues(26,i0, 7) =  4.*x*z;
 
 1015           outputValues(26,i0, 8) = 2.*(x + 2.*x*y); 
 
 1016           outputValues(26,i0, 12)= 2.*(-1.+ x*x);   
 
 1023       TEUCHOS_TEST_FOR_EXCEPTION( 
true, std::invalid_argument,
 
 1024                           ">>> ERROR (Basis_HGRAD_HEX_C2_FEM): operator not supported");
 
 1033         int DkCardinality = Intrepid::getDkCardinality(operatorType, 
 
 1034                                                        this -> basisCellTopology_.getDimension() );
 
 1035         for(
int dofOrd = 0; dofOrd < 
this -> basisCardinality_; dofOrd++) {
 
 1036           for (
int i0 = 0; i0 < dim0; i0++) {
 
 1037             for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
 
 1038               outputValues(dofOrd, i0, dkOrd) = 0.0;
 
 1046       TEUCHOS_TEST_FOR_EXCEPTION( !( Intrepid::isValidOperator(operatorType) ), std::invalid_argument,
 
 1047                           ">>> ERROR (Basis_HGRAD_HEX_C2_FEM): Invalid operator type");
 
 1053 template<
class Scalar, 
class ArrayScalar>
 
 1055                                                             const ArrayScalar &    inputPoints,
 
 1056                                                             const ArrayScalar &    cellVertices,
 
 1057                                                             const EOperator        operatorType)
 const {
 
 1058   TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
 
 1059                       ">>> ERROR (Basis_HGRAD_HEX_C2_FEM): FEM Basis calling an FVD member function");
 
 1062 template<
class Scalar, 
class ArrayScalar>
 
 1064 #ifdef HAVE_INTREPID_DEBUG 
 1066   TEUCHOS_TEST_FOR_EXCEPTION( !(DofCoords.rank() == 2), std::invalid_argument,
 
 1067                       ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_C2_FEM::getDofCoords) rank = 2 required for DofCoords array");
 
 1069   TEUCHOS_TEST_FOR_EXCEPTION( !( DofCoords.dimension(0) == 
this -> basisCardinality_ ), std::invalid_argument,
 
 1070                       ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_C2_FEM::getDofCoords) mismatch in number of DoF and 0th dimension of DofCoords array");
 
 1072   TEUCHOS_TEST_FOR_EXCEPTION( !( DofCoords.dimension(1) == (int)(
this -> basisCellTopology_.getDimension()) ), std::invalid_argument,
 
 1073                       ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_C2_FEM::getDofCoords) incorrect reference cell (1st) dimension in DofCoords array");
 
 1076   DofCoords(0,0) = -1.0;   DofCoords(0,1) = -1.0; DofCoords(0,2) = -1.0;  
 
 1077   DofCoords(1,0) =  1.0;   DofCoords(1,1) = -1.0; DofCoords(1,2) = -1.0;  
 
 1078   DofCoords(2,0) =  1.0;   DofCoords(2,1) =  1.0; DofCoords(2,2) = -1.0;  
 
 1079   DofCoords(3,0) = -1.0;   DofCoords(3,1) =  1.0; DofCoords(3,2) = -1.0;  
 
 1080   DofCoords(4,0) = -1.0;   DofCoords(4,1) = -1.0; DofCoords(4,2) =  1.0;  
 
 1081   DofCoords(5,0) =  1.0;   DofCoords(5,1) = -1.0; DofCoords(5,2) =  1.0;  
 
 1082   DofCoords(6,0) =  1.0;   DofCoords(6,1) =  1.0; DofCoords(6,2) =  1.0;  
 
 1083   DofCoords(7,0) = -1.0;   DofCoords(7,1) =  1.0; DofCoords(7,2) =  1.0;  
 
 1085   DofCoords(8,0) =   0.0;   DofCoords(8,1) =  -1.0; DofCoords(8,2) =  -1.0;  
 
 1086   DofCoords(9,0) =   1.0;   DofCoords(9,1) =   0.0; DofCoords(9,2) =  -1.0;  
 
 1087   DofCoords(10,0) =  0.0;   DofCoords(10,1) =  1.0; DofCoords(10,2) = -1.0;  
 
 1088   DofCoords(11,0) = -1.0;   DofCoords(11,1) =  0.0; DofCoords(11,2) = -1.0;  
 
 1089   DofCoords(12,0) = -1.0;   DofCoords(12,1) = -1.0; DofCoords(12,2) =  0.0;  
 
 1090   DofCoords(13,0) =  1.0;   DofCoords(13,1) = -1.0; DofCoords(13,2) =  0.0;  
 
 1091   DofCoords(14,0) =  1.0;   DofCoords(14,1) =  1.0; DofCoords(14,2) =  0.0;  
 
 1092   DofCoords(15,0) = -1.0;   DofCoords(15,1) =  1.0; DofCoords(15,2) =  0.0;  
 
 1093   DofCoords(16,0) =  0.0;   DofCoords(16,1) = -1.0; DofCoords(16,2) =  1.0;  
 
 1094   DofCoords(17,0) =  1.0;   DofCoords(17,1) =  0.0; DofCoords(17,2) =  1.0;  
 
 1095   DofCoords(18,0) =  0.0;   DofCoords(18,1) =  1.0; DofCoords(18,2) =  1.0;  
 
 1096   DofCoords(19,0) = -1.0;   DofCoords(19,1) =  0.0; DofCoords(19,2) =  1.0;  
 
 1098   DofCoords(20,0) =  0.0;   DofCoords(20,1) =  0.0; DofCoords(20,2) =  0.0;  
 
 1100   DofCoords(21,0) =  0.0;   DofCoords(21,1) =  0.0; DofCoords(21,2) = -1.0;  
 
 1101   DofCoords(22,0) =  0.0;   DofCoords(22,1) =  0.0; DofCoords(22,2) =  1.0;  
 
 1102   DofCoords(23,0) = -1.0;   DofCoords(23,1) =  0.0; DofCoords(23,2) =  0.0;  
 
 1103   DofCoords(24,0) =  1.0;   DofCoords(24,1) =  0.0; DofCoords(24,2) =  0.0;  
 
 1104   DofCoords(25,0) =  0.0;   DofCoords(25,1) = -1.0; DofCoords(25,2) =  0.0;  
 
 1105   DofCoords(26,0) =  0.0;   DofCoords(26,1) =  1.0; DofCoords(26,2) =  0.0;  
 
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const 
Evaluation of a FEM basis on a reference Hexahedron cell. 
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays. 
Basis_HGRAD_HEX_C2_FEM()
Constructor. 
void getDofCoords(ArrayScalar &DofCoords) const 
Returns spatial locations (coordinates) of degrees of freedom on a reference Quadrilateral.