36#ifndef NEKTAR_LIBRARY_COLLECTIONS_LINEARADVECTIONDIFFUSIONREACTION_H 
   37#define NEKTAR_LIBRARY_COLLECTIONS_LINEARADVECTIONDIFFUSIONREACTION_H 
   44void QuadIProduct(
bool colldir0, 
bool colldir1, 
int numElmt, 
int nquad0,
 
   45                  int nquad1, 
int nmodes0, 
int nmodes1,
 
   46                  const Array<OneD, const NekDouble> &base0,
 
   47                  const Array<OneD, const NekDouble> &base1,
 
   48                  const Array<OneD, const NekDouble> &jac,
 
   49                  const Array<OneD, const NekDouble> &input,
 
   50                  Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   52void TriIProduct(
bool sortTopVertex, 
int numElmt, 
int nquad0, 
int nquad1,
 
   53                 int nmodes0, 
int nmodes1,
 
   54                 const Array<OneD, const NekDouble> &base0,
 
   55                 const Array<OneD, const NekDouble> &base1,
 
   56                 const Array<OneD, const NekDouble> &jac,
 
   57                 const Array<OneD, const NekDouble> &input,
 
   58                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   60void HexIProduct(
bool colldir0, 
bool colldir1, 
bool colldir2, 
int numElmt,
 
   61                 int nquad0, 
int nquad1, 
int nquad2, 
int nmodes0, 
int nmodes1,
 
   62                 int nmodes2, 
const Array<OneD, const NekDouble> &base0,
 
   63                 const Array<OneD, const NekDouble> &base1,
 
   64                 const Array<OneD, const NekDouble> &base2,
 
   65                 const Array<OneD, const NekDouble> &jac,
 
   66                 const Array<OneD, const NekDouble> &input,
 
   67                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   69void PrismIProduct(
bool sortTopVert, 
int numElmt, 
int nquad0, 
int nquad1,
 
   70                   int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   71                   const Array<OneD, const NekDouble> &base0,
 
   72                   const Array<OneD, const NekDouble> &base1,
 
   73                   const Array<OneD, const NekDouble> &base2,
 
   74                   const Array<OneD, const NekDouble> &jac,
 
   75                   const Array<OneD, const NekDouble> &input,
 
   76                   Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   78void PyrIProduct(
bool sortTopVert, 
int numElmt, 
int nquad0, 
int nquad1,
 
   79                 int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   80                 const Array<OneD, const NekDouble> &base0,
 
   81                 const Array<OneD, const NekDouble> &base1,
 
   82                 const Array<OneD, const NekDouble> &base2,
 
   83                 const Array<OneD, const NekDouble> &jac,
 
   84                 const Array<OneD, const NekDouble> &input,
 
   85                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   87void TetIProduct(
bool sortTopEdge, 
int numElmt, 
int nquad0, 
int nquad1,
 
   88                 int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   89                 const Array<OneD, const NekDouble> &base0,
 
   90                 const Array<OneD, const NekDouble> &base1,
 
   91                 const Array<OneD, const NekDouble> &base2,
 
   92                 const Array<OneD, const NekDouble> &jac,
 
   93                 const Array<OneD, const NekDouble> &input,
 
   94                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
void TetIProduct(bool sortTopEdge, int numElmt, int nquad0, int nquad1, int nquad2, int nmodes0, int nmodes1, int nmodes2, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
 
void PyrIProduct(bool sortTopVert, int numElmt, int nquad0, int nquad1, int nquad2, int nmodes0, int nmodes1, int nmodes2, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
 
void TriIProduct(bool sortTopVertex, int numElmt, int nquad0, int nquad1, int nmodes0, int nmodes1, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
 
void QuadIProduct(bool colldir0, bool colldir1, int numElmt, int nquad0, int nquad1, int nmodes0, int nmodes1, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
 
void PrismIProduct(bool sortTopVert, int numElmt, int nquad0, int nquad1, int nquad2, int nmodes0, int nmodes1, int nmodes2, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
 
void HexIProduct(bool colldir0, bool colldir1, bool colldir2, int numElmt, int nquad0, int nquad1, int nquad2, int nmodes0, int nmodes1, int nmodes2, const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &jac, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)