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");
400 for (
unsigned int i = 0; i < pointsDim; ++i)
429 for (
unsigned int i = 0; i < totNumPoints; ++i)
431 for (
unsigned int j = 0; j < totNumPoints; ++j)
452 totNumPoints, totNumPoints);
462 boost::ignore_unused(key);
464 std::shared_ptr<NekMatrix<NekDouble>> returnval(
472 boost::ignore_unused(x);
474 std::shared_ptr<NekMatrix<NekDouble>> returnval(
482 boost::ignore_unused(x);
484 std::shared_ptr<NekMatrix<NekDouble>> returnval(
493 boost::ignore_unused(x, y);
495 std::shared_ptr<NekMatrix<NekDouble>> returnval(
505 boost::ignore_unused(x, y, z);
507 std::shared_ptr<NekMatrix<NekDouble>> returnval(
515 boost::ignore_unused(pkey);
517 std::shared_ptr<NekMatrix<NekDouble>> returnval(
526 boost::ignore_unused(pts);
528 "Copy Constructor for Points should not be called");
533 "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
const MatrixSharedPtrType GetI(unsigned int uint, const Array< OneD, const DataType > &x)
void GetPoints(Array< OneD, const DataType > &x, Array< OneD, const DataType > &y) const
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLess > m_GalerkinProjectionManager
virtual const MatrixSharedPtrType v_GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y)
virtual const MatrixSharedPtrType v_GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y, const Array< OneD, const DataType > &z)
virtual void v_CalculatePoints()
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
virtual void v_Initialize(void)
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)
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x)
virtual const MatrixSharedPtrType v_GetI(const Array< OneD, const DataType > &x)
virtual const MatrixSharedPtrType v_GetGalerkinProjection(const PointsKey &pkey)
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y, const Array< OneD, const DataType > &z)
std::shared_ptr< NekMatrix< DataType > > MatrixSharedPtrType
const Array< OneD, const DataType > & GetW() const
virtual const MatrixSharedPtrType v_GetI(unsigned int, const Array< OneD, const DataType > &x)
unsigned int GetTotNumPoints() const
unsigned int GetPointsDim() const
Array< OneD, DataType > m_weights
Quadrature weights for the weights.
virtual void v_CalculateDerivMatrix()
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y)
const MatrixSharedPtrType GetI(const PointsKey &key)
virtual void v_CalculateWeights()
const Array< OneD, const DataType > & GetZ() const
virtual void v_CalculateBaryWeights()
This function calculates the barycentric weights used for enhanced interpolation speed.
Points(const Points &pts)
virtual const MatrixSharedPtrType v_GetI(const PointsKey &key)
const MatrixSharedPtrType GetGalerkinProjection(const PointsKey &pkey)
Array< OneD, DataType > m_bcweights
Barycentric weights.
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