52 namespace LibUtilities
133 const int dir,
const int mode) = 0;
190 const int dir,
const int mode);
201 return 2.0 * sqrt(2.0);
216 typedef std::tuple<int, int, int>
Mode;
239 const int dir,
const int mode);
250 return 8.0 * sqrt(2.0) / 3.0;
265 typedef std::tuple<int, int, int>
Mode;
288 const int dir,
const int mode);
299 return 4.0 * sqrt(2.0);
329 const int dir,
const int mode);
354 typedef std::tuple<int, int, int>
Mode;
373 const int dir,
const int mode);
std::vector< Mode > m_ordering
Mapping from the indexing of the basis to a continuous ordering.
virtual NekDouble v_ModeZeroIntegral()
Return the value of the integral of the zero-th mode for this element.
virtual ~NodalUtilPrism()
std::tuple< int, int, int > Mode
virtual int v_NumModes()
Calculate the number of degrees of freedom for this element.
A class to assist in the construction of nodal simplex and hybrid elements in two and three dimension...
Specialisation of the NodalUtil class to support nodal triangular elements.
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct a NodalUtil object of the appropriate element type for a given set of points.
virtual NekDouble v_ModeZeroIntegral()
Return the value of the integral of the zero-th mode for this element.
std::shared_ptr< NekMatrix< NekDouble > > SharedMatrix
Array< OneD, Array< OneD, NekDouble > > m_eta
Collapsed coordinates of the nodal points.
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct a NodalUtil object of the appropriate element type for a given set of points.
Array< OneD, Array< OneD, NekDouble > > m_eta
Collapsed coordinates of the nodal points.
SharedMatrix GetVandermondeForDeriv(int dir)
Return the Vandermonde matrix of the derivative of the basis functions for the nodal distribution...
SharedMatrix GetInterpolationMatrix(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct the interpolation matrix used to evaluate the basis at the points xi inside the element...
virtual NekDouble v_ModeZeroIntegral()
Return the value of the integral of the zero-th mode for this element.
std::vector< std::pair< int, int > > m_ordering
Mapping from the indexing of the basis to a continuous ordering.
std::tuple< int, int, int > Mode
int m_degree
Degree of the nodal element.
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct a NodalUtil object of the appropriate element type for a given set of points.
virtual ~NodalUtilTetrahedron()
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)=0
Construct a NodalUtil object of the appropriate element type for a given set of points.
#define LIB_UTILITIES_EXPORT
Specialisation of the NodalUtil class to support nodal hex elements.
virtual NekDouble v_ModeZeroIntegral()
Return the value of the integral of the zero-th mode for this element.
Array< OneD, Array< OneD, NekDouble > > m_eta
Collapsed coordinates of the nodal points.
SharedMatrix GetDerivMatrix(int dir)
Return the derivative matrix for the nodal distribution.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::vector< Mode > m_ordering
Mapping from the indexing of the basis to a continuous ordering.
virtual int v_NumModes()
Calculate the number of degrees of freedom for this element.
NodalUtil(int degree, int dim)
Set up the NodalUtil object.
NekVector< NekDouble > GetWeights()
Obtain the integration weights for the given nodal distribution.
virtual int v_NumModes()
Calculate the number of degrees of freedom for this element.
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct a NodalUtil object of the appropriate element type for a given set of points.
virtual ~NodalUtilTriangle()
std::tuple< int, int, int > Mode
Specialisation of the NodalUtil class to support nodal prismatic elements.
virtual int v_NumModes()
Calculate the number of degrees of freedom for this element.
SharedMatrix GetVandermonde()
Return the Vandermonde matrix for the nodal distribution.
virtual std::shared_ptr< NodalUtil > v_CreateUtil(Array< OneD, Array< OneD, NekDouble > > &xi)
Construct a NodalUtil object of the appropriate element type for a given set of points.
Array< OneD, Array< OneD, NekDouble > > m_xi
Coordinates of the nodal points defining the basis.
std::vector< Mode > m_ordering
Mapping from the indexing of the basis to a continuous ordering.
virtual NekVector< NekDouble > v_OrthoBasis(const int mode)=0
Return the values of the orthogonal basis at the nodal points for a given mode.
virtual int v_NumModes()
Calculate the number of degrees of freedom for this element.
Specialisation of the NodalUtil class to support nodal quad elements.
int m_numPoints
Total number of nodal points.
std::vector< std::pair< int, int > > m_ordering
Mapping from the indexing of the basis to a continuous ordering.
virtual int v_NumModes()=0
Calculate the number of degrees of freedom for this element.
virtual NekVector< NekDouble > v_OrthoBasisDeriv(const int dir, const int mode)=0
Return the values of the derivative of the orthogonal basis at the nodal points for a given mode...
virtual NekDouble v_ModeZeroIntegral()
Return the value of the integral of the zero-th mode for this element.
virtual NekDouble v_ModeZeroIntegral()=0
Return the value of the integral of the zero-th mode for this element.
int m_dim
Dimension of the nodal element.
Specialisation of the NodalUtil class to support nodal tetrahedral elements.