35 #ifndef INTREPID_TENSORPRODUCTSPACETOOLS_HPP 
   36 #define INTREPID_TENSORPRODUCTSPACETOOLS_HPP 
   40 #include "Teuchos_Array.hpp" 
   41 #include "Teuchos_RCP.hpp" 
   72   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
   74   static void evaluate(  ArrayTypeOut &vals ,
 
   75                          const ArrayTypeCoeffs &coeffs ,
 
   76                          const Array<RCP<ArrayTypeBasis> > &bases );
 
  117   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  118            class ArrayTypeBasis>
 
  120                                    const ArrayTypeCoeffs &coeffs ,
 
  121                                    const Array<RCP<ArrayTypeBasis> > &bases );
 
  138   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  139            class ArrayTypeBasis>
 
  141                                  const ArrayTypeCoeffs &coeffs ,
 
  142                                  const Array<RCP<ArrayTypeBasis> > &bases ,
 
  143                                  const Array<RCP<ArrayTypeBasis> > &Dbases );
 
  162   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  163            class ArrayTypeBasis>
 
  165                                           const ArrayTypeCoeffs &coeffs ,
 
  166                                           const Array<RCP<ArrayTypeBasis> > &bases ,
 
  167                                           const Array<RCP<ArrayTypeBasis> > &Dbases );
 
  179   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  180            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  181   static void moments( ArrayTypeOut &vals ,
 
  182                        const ArrayTypeData &data ,
 
  183                        const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  184                        const Array<RCP<ArrayTypeWeights> > &wts );
 
  197   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  198            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  200                                  const ArrayTypeData &data ,
 
  201                                  const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  202                        const Array<RCP<ArrayTypeWeights> > &wts );
 
  216   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  217            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  219                            const ArrayTypeData &data ,
 
  220                            const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  221                            const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  222                            const Array<RCP<ArrayTypeWeights> > &wts );
 
  237   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  238            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  240                                      const ArrayTypeData &data ,
 
  241                                      const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  242                                      const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  243                                      const Array<RCP<ArrayTypeWeights> > &wts );
 
  247   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  248            class ArrayTypeBasis>
 
  249   static void evaluate2D( ArrayTypeOut &vals ,
 
  250                           const ArrayTypeCoeffs &coeffs ,
 
  251                           const Array<RCP<ArrayTypeBasis> > &basisVals );
 
  253   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  254            class ArrayTypeBasis>
 
  255   static void evaluate3D( ArrayTypeOut &vals ,
 
  256                           const ArrayTypeCoeffs &coeffs ,
 
  257                           const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  259   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  260            class ArrayTypeBasis>
 
  261   static void evaluateCollocated2D( ArrayTypeOut &vals ,
 
  262                                     const ArrayTypeCoeffs &coeffs ,
 
  263                                     const Array<RCP<ArrayTypeBasis> > &basisVals );
 
  265   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  266            class ArrayTypeBasis>
 
  267   static void evaluateCollocated3D( ArrayTypeOut &vals ,
 
  268                                     const ArrayTypeCoeffs &coeffs ,
 
  269                                     const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  271   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  272            class ArrayTypeBasis>
 
  273   static void evaluateGradient2D( ArrayTypeOut &vals ,
 
  274                                   const ArrayTypeCoeffs &coeffs ,
 
  275                                   const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  276                                   const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  278   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  279            class ArrayTypeBasis>
 
  280   static void evaluateGradient3D( ArrayTypeOut &vals ,
 
  281                                   const ArrayTypeCoeffs &coeffs ,
 
  282                                   const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  283                                   const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  286   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  287            class ArrayTypeBasis>
 
  288   static void evaluateGradientCollocated2D( ArrayTypeOut &vals ,
 
  289                                   const ArrayTypeCoeffs &coeffs ,
 
  290                                   const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  291                                   const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  293   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeCoeffs,
 
  294            class ArrayTypeBasis>
 
  295   static void evaluateGradientCollocated3D( ArrayTypeOut &vals ,
 
  296                                   const ArrayTypeCoeffs &coeffs ,
 
  297                                   const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  298                                   const Array<RCP<ArrayTypeBasis> > &basisDVals );
 
  300   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  301            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  302   static void moments2D( ArrayTypeOut &vals ,
 
  303                          const ArrayTypeData &data ,
 
  304                          const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  305                          const Array<RCP<ArrayTypeWeights> > &wts );
 
  307   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  308            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  309   static void moments3D( ArrayTypeOut &vals ,
 
  310                          const ArrayTypeData &data ,
 
  311                          const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  312                          const Array<RCP<ArrayTypeWeights> > &wts );
 
  314   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  315            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  316   static void momentsCollocated2D( ArrayTypeOut &vals ,
 
  317                          const ArrayTypeData &data ,
 
  318                          const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  319                          const Array<RCP<ArrayTypeWeights> > &wts );
 
  321   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  322            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  323   static void momentsCollocated3D( ArrayTypeOut &vals ,
 
  324                          const ArrayTypeData &data ,
 
  325                          const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  326                          const Array<RCP<ArrayTypeWeights> > &wts );
 
  328   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  329            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  330   static void momentsGradCollocated2D( ArrayTypeOut &vals ,
 
  331                              const ArrayTypeData &data ,
 
  332                              const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  333                              const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  334                              const Array<RCP<ArrayTypeWeights> > &wts );
 
  336   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  337            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  338   static void momentsGradCollocated3D( ArrayTypeOut &vals ,
 
  339                              const ArrayTypeData &data ,
 
  340                              const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  341                              const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  342                              const Array<RCP<ArrayTypeWeights> > &wts );
 
  344  template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  345            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  346   static void momentsGrad2D( ArrayTypeOut &vals ,
 
  347                              const ArrayTypeData &data ,
 
  348                              const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  349                              const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  350                              const Array<RCP<ArrayTypeWeights> > &wts );
 
  352   template<
class Scalar, 
class ArrayTypeOut, 
class ArrayTypeData,
 
  353            class ArrayTypeBasis, 
class ArrayTypeWeights>
 
  354   static void momentsGrad3D( ArrayTypeOut &vals ,
 
  355                              const ArrayTypeData &data ,
 
  356                              const Array<RCP<ArrayTypeBasis> > &basisVals ,
 
  357                              const Array<RCP<ArrayTypeBasis> > &basisDVals ,
 
  358                              const Array<RCP<ArrayTypeWeights> > &wts );
 
Header file for utility class to provide multidimensional containers. 
Header file for the abstract base class Intrepid::Basis. 
Implementation of a templated lexicographical container for a multi-indexed scalar quantity...