35 #ifndef NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
36 #define NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
38 #include <boost/core/ignore_unused.hpp>
52 namespace LibUtilities
133 return (*
this == *y);
138 return (!(*
this == y));
143 return (!(*
this == *y));
190 "This method cannot be implemented");
204 "This method cannot be implemented");
213 "This method cannot be implemented");
341 boost::ignore_unused(key);
343 std::shared_ptr<NekMatrix<NekDouble>> returnval(
350 boost::ignore_unused(x);
352 std::shared_ptr<NekMatrix<NekDouble>> returnval(
360 boost::ignore_unused(x);
362 std::shared_ptr<NekMatrix<NekDouble>> returnval(
370 boost::ignore_unused(x, y);
372 std::shared_ptr<NekMatrix<NekDouble>> returnval(
381 boost::ignore_unused(x, y, z);
383 std::shared_ptr<NekMatrix<NekDouble>> returnval(
391 boost::ignore_unused(pkey);
393 std::shared_ptr<NekMatrix<NekDouble>> returnval(
420 for (
unsigned int i = 0; i < pointsDim; ++i)
449 for (
unsigned int i = 0; i < totNumPoints; ++i)
451 for (
unsigned int j = 0; j < totNumPoints; ++j)
472 totNumPoints, totNumPoints);
484 boost::ignore_unused(pts);
486 "Copy Constructor for Points should not be called");
491 "Default Constructor for Points should not be called");
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define LIB_UTILITIES_EXPORT
1D Array of constant elements with garbage collection and bounds checking.
Stores a set of points of datatype DataT, defined by a PointKey.
Array< OneD, DataType > m_points[3]
Storage for the point locations, allowing for up to a 3D points storage.
MatrixSharedPtrType m_derivmatrix[3]
Derivative matrices.
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLess > m_InterpManager
const MatrixSharedPtrType & GetD(Direction dir=xDir) const
virtual void CalculateWeights()
void GetPoints(Array< OneD, const DataType > &x, Array< OneD, const DataType > &y) const
virtual const MatrixSharedPtrType GetGalerkinProjection(const PointsKey &pkey)
virtual void CalculateDerivMatrix()
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLess > m_GalerkinProjectionManager
PointsKey m_pointsKey
Points type for this points distributions.
void GetZW(Array< OneD, const DataType > &z, Array< OneD, const DataType > &w) const
unsigned int GetNumPoints() const
void GetPoints(Array< OneD, const DataType > &x) const
void GetPoints(Array< OneD, const DataType > &x, Array< OneD, const DataType > &y, Array< OneD, const DataType > &z) const
PointsType GetPointsType() const
Points(const PointsKey &key)
std::shared_ptr< NekMatrix< DataType > > MatrixSharedPtrType
virtual const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y, const Array< OneD, const DataType > &z)
virtual void Initialize(void)
const Array< OneD, const DataType > & GetW() const
virtual void CalculatePoints()
virtual const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y)
virtual const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x)
unsigned int GetTotNumPoints() const
unsigned int GetPointsDim() const
Array< OneD, DataType > m_weights
Quadrature weights for the weights.
const Array< OneD, const DataType > & GetZ() const
virtual void CalculateBaryWeights()
This function calculates the barycentric weights used for enhanced interpolation speed.
Points(const Points &pts)
Array< OneD, DataType > m_bcweights
Barycentric weights.
virtual const MatrixSharedPtrType GetI(unsigned int, const Array< OneD, const DataType > &x)
virtual const MatrixSharedPtrType GetI(const PointsKey &key)
const Array< OneD, const NekDouble > & GetBaryWeights() const
Defines a specification for a set of points.
unsigned int m_numpoints
number of the points (as appropriately defined for PointsType)
unsigned int GetTotNumPoints() const
bool operator==(const PointsKey *y)
PointsType GetPointsType() const
friend bool operator<(const PointsKey &lhs, const PointsKey &rhs)
PointsType m_pointstype
Type of Points.
PointsKey & operator=(const PointsKey &key)
PointsKey(const int &numpoints, const PointsType &pointstype, const NekDouble factor=NekConstants::kNekUnsetDouble)
Constructor defining the number and distribution of points.
unsigned int GetPointsDim() const
bool operator==(const PointsKey &key)
PointsKey(const PointsKey &key)
Copy constructor.
NekDouble GetFactor() const
NekDouble m_factor
optional factor
unsigned int GetNumPoints() const
virtual ~PointsKey()
Destructor.
bool operator!=(const PointsKey &y)
PointsKey(void)
Default constructor.
bool operator!=(const PointsKey *y)
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
bool operator==(const BasisKey &x, const BasisKey &y)
bool operator<(const BasisKey &lhs, const BasisKey &rhs)
std::vector< PointsKey > PointsKeyVector
std::ostream & operator<<(std::ostream &os, const BasisKey &rhs)
@ eNodalPrismEvenlySpaced
3D Evenly-spaced points on a Prism
@ eNodalTriFekete
2D Nodal Fekete Points on a Triangle
@ eNodalPrismSPI
3D prism SPI
@ eNodalTriElec
2D Nodal Electrostatic Points on a Triangle
@ eNodalTriEvenlySpaced
2D Evenly-spaced points on a Triangle
@ eNodalHexElec
3D GLL for hex
@ eNodalQuadElec
2D GLL for quad
@ eNodalTetEvenlySpaced
3D Evenly-spaced points on a Tetrahedron
@ eNodalTetSPI
3D Nodal Symmetric positive internal tet (Whitherden, Vincent)
@ eNodalPrismElec
3D electrostatically spaced points on a Prism
@ eNodalTetElec
3D Nodal Electrostatic Points on a Tetrahedron
@ eNodalTriSPI
2D Nodal Symmetric positive internal triangle (Whitherden, Vincent)
static const PointsKey NullPointsKey(0, eNoPointsType)
static const NekDouble kNekUnsetDouble
static const NekDouble kNekZeroTol
The above copyright notice and this permission notice shall be included.
bool operator()(const PointsKey &lhs, const PointsKey &rhs) const