35#ifndef NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
36#define NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
114 return (*
this == *y);
119 return (!(*
this == y));
124 return (!(*
this == *y));
130 size_t dimpoints = 1;
171 "This method cannot be implemented");
185 "This method cannot be implemented");
194 "This method cannot be implemented");
330 return v_GetI(uint, x);
343 return v_GetI(x, y,
z);
348 return v_GetGalerkinProjection(pkey);
372 v_CalculateBaryWeights();
373 v_CalculateDerivMatrix();
381 for (
size_t i = 0; i < pointsDim; ++i)
403 virtual void v_CalculateBaryWeights()
410 for (
size_t i = 0; i < totNumPoints; ++i)
412 for (
size_t j = 0; j < totNumPoints; ++j)
426 virtual void v_CalculateDerivMatrix()
432 MemoryManager<NekMatrix<DataType>>::AllocateSharedPtr(
433 totNumPoints, totNumPoints);
442 [[maybe_unused]]
const PointsKey &key)
445 std::shared_ptr<NekMatrix<NekDouble>> returnval(
446 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
451 [[maybe_unused]]
const Array<OneD, const DataType> &x)
454 std::shared_ptr<NekMatrix<NekDouble>> returnval(
455 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
460 size_t, [[maybe_unused]]
const Array<OneD, const DataType> &x)
463 std::shared_ptr<NekMatrix<NekDouble>> returnval(
464 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
469 [[maybe_unused]]
const Array<OneD, const DataType> &x,
470 [[maybe_unused]]
const Array<OneD, const DataType> &y)
473 std::shared_ptr<NekMatrix<NekDouble>> returnval(
474 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
479 [[maybe_unused]]
const Array<OneD, const DataType> &x,
480 [[maybe_unused]]
const Array<OneD, const DataType> &y,
481 [[maybe_unused]]
const Array<OneD, const DataType> &
z)
484 std::shared_ptr<NekMatrix<NekDouble>> returnval(
485 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
490 [[maybe_unused]]
const PointsKey &pkey)
493 std::shared_ptr<NekMatrix<NekDouble>> returnval(
494 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
499 Points(
const Points &pts) =
delete;
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define LIB_UTILITIES_EXPORT
std::shared_ptr< NekMatrix< NekDouble > > MatrixSharedPtrType
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
size_t GetPointsDim() const
void GetPoints(Array< OneD, const DataType > &x, Array< OneD, const DataType > &y) const
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLess > m_GalerkinProjectionManager
virtual void v_CalculatePoints()
const MatrixSharedPtrType GetI(size_t uint, const Array< OneD, const DataType > &x)
size_t GetNumPoints() const
PointsKey m_pointsKey
Points type for this points distributions.
void GetZW(Array< OneD, const DataType > &z, Array< OneD, const DataType > &w) 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
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x)
const Array< OneD, const DataType > & GetW() const
const Array< OneD, const NekDouble > & GetBaryWeights() const
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y, const Array< OneD, const DataType > &z)
size_t GetTotNumPoints() const
std::shared_ptr< NekMatrix< DataType > > MatrixSharedPtrType
const MatrixSharedPtrType & GetD(Direction dir=xDir) const
Array< OneD, DataType > m_weights
Quadrature weights for the weights.
const MatrixSharedPtrType GetI(const Array< OneD, const DataType > &x, const Array< OneD, const DataType > &y)
const MatrixSharedPtrType GetI(const PointsKey &key)
const Array< OneD, const DataType > & GetZ() const
virtual void v_CalculateWeights()
const MatrixSharedPtrType GetGalerkinProjection(const PointsKey &pkey)
Array< OneD, DataType > m_bcweights
Barycentric weights.
Defines a specification for a set of points.
size_t m_numpoints
number of the points (as appropriately defined for PointsType)
bool operator==(const PointsKey *y)
size_t GetPointsDim() const
PointsKey(const PointsKey &key)=default
Copy constructor.
PointsType GetPointsType() const
PointsKey & operator=(const PointsKey &key)=default
friend bool operator<(const PointsKey &lhs, const PointsKey &rhs)
PointsType m_pointstype
Type of Points.
PointsKey(const size_t &numpoints, const PointsType &pointstype, const NekDouble factor=NekConstants::kNekUnsetDouble)
Constructor defining the number and distribution of points.
size_t GetTotNumPoints() const
bool operator==(const PointsKey &key)
size_t GetNumPoints() const
NekDouble GetFactor() const
NekDouble m_factor
optional factor
virtual ~PointsKey()
Destructor.
bool operator!=(const PointsKey &y)
PointsKey(void)
Default constructor.
bool operator!=(const PointsKey *y)
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
std::vector< double > w(NPUPPER)
std::vector< double > z(NPUPPER)
bool operator()(const PointsKey &lhs, const PointsKey &rhs) const