35#ifndef NEKTAR_LIBRARY_COLLECTIONS_HELMHOLTZ_H 
   36#define NEKTAR_LIBRARY_COLLECTIONS_HELMHOLTZ_H 
   43void QuadIProduct(
bool colldir0, 
bool colldir1, 
int numElmt, 
int nquad0,
 
   44                  int nquad1, 
int nmodes0, 
int nmodes1,
 
   45                  const Array<OneD, const NekDouble> &base0,
 
   46                  const Array<OneD, const NekDouble> &base1,
 
   47                  const Array<OneD, const NekDouble> &jac,
 
   48                  const Array<OneD, const NekDouble> &input,
 
   49                  Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   51void TriIProduct(
bool sortTopVertex, 
int numElmt, 
int nquad0, 
int nquad1,
 
   52                 int nmodes0, 
int nmodes1,
 
   53                 const Array<OneD, const NekDouble> &base0,
 
   54                 const Array<OneD, const NekDouble> &base1,
 
   55                 const Array<OneD, const NekDouble> &jac,
 
   56                 const Array<OneD, const NekDouble> &input,
 
   57                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   59void HexIProduct(
bool colldir0, 
bool colldir1, 
bool colldir2, 
int numElmt,
 
   60                 int nquad0, 
int nquad1, 
int nquad2, 
int nmodes0, 
int nmodes1,
 
   61                 int nmodes2, 
const Array<OneD, const NekDouble> &base0,
 
   62                 const Array<OneD, const NekDouble> &base1,
 
   63                 const Array<OneD, const NekDouble> &base2,
 
   64                 const Array<OneD, const NekDouble> &jac,
 
   65                 const Array<OneD, const NekDouble> &input,
 
   66                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   68void PrismIProduct(
bool sortTopVert, 
int numElmt, 
int nquad0, 
int nquad1,
 
   69                   int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   70                   const Array<OneD, const NekDouble> &base0,
 
   71                   const Array<OneD, const NekDouble> &base1,
 
   72                   const Array<OneD, const NekDouble> &base2,
 
   73                   const Array<OneD, const NekDouble> &jac,
 
   74                   const Array<OneD, const NekDouble> &input,
 
   75                   Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   77void PyrIProduct(
bool sortTopVert, 
int numElmt, 
int nquad0, 
int nquad1,
 
   78                 int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   79                 const Array<OneD, const NekDouble> &base0,
 
   80                 const Array<OneD, const NekDouble> &base1,
 
   81                 const Array<OneD, const NekDouble> &base2,
 
   82                 const Array<OneD, const NekDouble> &jac,
 
   83                 const Array<OneD, const NekDouble> &input,
 
   84                 Array<OneD, NekDouble> &output, Array<OneD, NekDouble> &wsp);
 
   86void TetIProduct(
bool sortTopEdge, 
int numElmt, 
int nquad0, 
int nquad1,
 
   87                 int nquad2, 
int nmodes0, 
int nmodes1, 
int nmodes2,
 
   88                 const Array<OneD, const NekDouble> &base0,
 
   89                 const Array<OneD, const NekDouble> &base1,
 
   90                 const Array<OneD, const NekDouble> &base2,
 
   91                 const Array<OneD, const NekDouble> &jac,
 
   92                 const Array<OneD, const NekDouble> &input,
 
   93                 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)