35#ifndef NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
36#define NEKTAR_LIB_UTILITIES_FOUNDATIONS_POINTS_H
38#include <boost/core/ignore_unused.hpp>
119 return (*
this == *y);
124 return (!(*
this == y));
129 return (!(*
this == *y));
135 size_t dimpoints = 1;
176 "This method cannot be implemented");
190 "This method cannot be implemented");
199 "This method cannot be implemented");
335 return v_GetI(uint, x);
348 return v_GetI(x, y,
z);
353 return v_GetGalerkinProjection(pkey);
377 v_CalculateBaryWeights();
378 v_CalculateDerivMatrix();
386 for (
size_t i = 0; i < pointsDim; ++i)
408 virtual void v_CalculateBaryWeights()
415 for (
size_t i = 0; i < totNumPoints; ++i)
417 for (
size_t j = 0; j < totNumPoints; ++j)
431 virtual void v_CalculateDerivMatrix()
437 MemoryManager<NekMatrix<DataType>>::AllocateSharedPtr(
438 totNumPoints, totNumPoints);
448 boost::ignore_unused(key);
450 std::shared_ptr<NekMatrix<NekDouble>> returnval(
451 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
456 const Array<OneD, const DataType> &x)
458 boost::ignore_unused(x);
460 std::shared_ptr<NekMatrix<NekDouble>> returnval(
461 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
466 size_t,
const Array<OneD, const DataType> &x)
468 boost::ignore_unused(x);
470 std::shared_ptr<NekMatrix<NekDouble>> returnval(
471 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
476 const Array<OneD, const DataType> &x,
477 const Array<OneD, const DataType> &y)
479 boost::ignore_unused(x, y);
481 std::shared_ptr<NekMatrix<NekDouble>> returnval(
482 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
487 const Array<OneD, const DataType> &x,
488 const Array<OneD, const DataType> &y,
489 const Array<OneD, const DataType> &
z)
491 boost::ignore_unused(x, y,
z);
493 std::shared_ptr<NekMatrix<NekDouble>> returnval(
494 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
499 const PointsKey &pkey)
501 boost::ignore_unused(pkey);
503 std::shared_ptr<NekMatrix<NekDouble>> returnval(
504 MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
509 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)
The above copyright notice and this permission notice shall be included.
bool operator()(const PointsKey &lhs, const PointsKey &rhs) const