Nektar++
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
Nektar::LibUtilities::Points< DataT > Class Template Reference

Stores a set of points of datatype DataT, defined by a PointKey. More...

#include <Points.h>

Public Types

typedef DataT DataType
 
typedef std::shared_ptr< NekMatrix< DataType > > MatrixSharedPtrType
 

Public Member Functions

virtual ~Points ()
 
virtual void Initialize (void)
 
unsigned int GetPointsDim () const
 
unsigned int GetNumPoints () const
 
unsigned int GetTotNumPoints () const
 
PointsType GetPointsType () const
 
const Array< OneD, const DataType > & GetZ () const
 
const Array< OneD, const DataType > & GetW () const
 
void GetZW (Array< OneD, const DataType > &z, Array< OneD, const DataType > &w) const
 
const Array< OneD, const NekDouble > & GetBaryWeights () const
 
void GetPoints (Array< OneD, const DataType > &x) const
 
void GetPoints (Array< OneD, const DataType > &x, Array< OneD, const DataType > &y) const
 
void GetPoints (Array< OneD, const DataType > &x, Array< OneD, const DataType > &y, Array< OneD, const DataType > &z) const
 
const MatrixSharedPtrTypeGetD (Direction dir=xDir) const
 
virtual const MatrixSharedPtrType GetI (const PointsKey &key)
 
virtual const MatrixSharedPtrType GetI (const Array< OneD, const DataType > &x)
 
virtual const MatrixSharedPtrType GetI (unsigned int, const Array< OneD, const DataType > &x)
 
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, const Array< OneD, const DataType > &y, const Array< OneD, const DataType > &z)
 
virtual const MatrixSharedPtrType GetGalerkinProjection (const PointsKey &pkey)
 

Protected Member Functions

virtual void CalculatePoints ()
 
virtual void CalculateWeights ()
 
virtual void CalculateBaryWeights ()
 This function calculates the barycentric weights used for enhanced interpolation speed. More...
 
virtual void CalculateDerivMatrix ()
 
 Points (const PointsKey &key)
 

Protected Attributes

PointsKey m_pointsKey
 Points type for this points distributions. More...
 
Array< OneD, DataTypem_points [3]
 Storage for the point locations, allowing for up to a 3D points storage. More...
 
Array< OneD, DataTypem_weights
 Quadrature weights for the weights. More...
 
Array< OneD, DataTypem_bcweights
 Barycentric weights. More...
 
MatrixSharedPtrType m_derivmatrix [3]
 Derivative matrices. More...
 
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLessm_InterpManager
 
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLessm_GalerkinProjectionManager
 

Private Member Functions

 Points (const Points &pts)
 
 Points ()
 

Detailed Description

template<typename DataT>
class Nektar::LibUtilities::Points< DataT >

Stores a set of points of datatype DataT, defined by a PointKey.

This encapsulates a set of points, specified by a PointKey. The class stores not only the point coordinates, but also the integration weights and derivative matrix coefficients. Memory is allocated from the memory pool if in use.

Definition at line 253 of file Points.h.

Member Typedef Documentation

◆ DataType

template<typename DataT >
typedef DataT Nektar::LibUtilities::Points< DataT >::DataType

Definition at line 256 of file Points.h.

◆ MatrixSharedPtrType

template<typename DataT >
typedef std::shared_ptr<NekMatrix<DataType> > Nektar::LibUtilities::Points< DataT >::MatrixSharedPtrType

Definition at line 257 of file Points.h.

Constructor & Destructor Documentation

◆ ~Points()

template<typename DataT >
virtual Nektar::LibUtilities::Points< DataT >::~Points ( )
inlinevirtual

Definition at line 259 of file Points.h.

260  {
261  }

◆ Points() [1/3]

template<typename DataT >
Nektar::LibUtilities::Points< DataT >::Points ( const PointsKey key)
inlineprotected

Definition at line 476 of file Points.h.

476  : m_pointsKey(key)
477  {
478  }
PointsKey m_pointsKey
Points type for this points distributions.
Definition: Points.h:400

◆ Points() [2/3]

template<typename DataT >
Nektar::LibUtilities::Points< DataT >::Points ( const Points< DataT > &  pts)
inlineprivate

Definition at line 482 of file Points.h.

483  {
484  boost::ignore_unused(pts);
486  "Copy Constructor for Points should not be called");
487  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
Definition: ErrorUtil.hpp:209

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ Points() [3/3]

template<typename DataT >
Nektar::LibUtilities::Points< DataT >::Points ( )
inlineprivate

Definition at line 488 of file Points.h.

489  {
491  "Default Constructor for Points should not be called");
492  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

Member Function Documentation

◆ CalculateBaryWeights()

template<typename DataT >
virtual void Nektar::LibUtilities::Points< DataT >::CalculateBaryWeights ( )
inlineprotectedvirtual

This function calculates the barycentric weights used for enhanced interpolation speed.

For the points distribution \( z_i \) with \f% 1\leq z_i \leq N

Definition at line 442 of file Points.h.

443  {
444  const unsigned int totNumPoints = m_pointsKey.GetNumPoints();
445  m_bcweights = Array<OneD, DataType>(totNumPoints, 1.0);
446 
447  Array<OneD, DataType> z = m_points[0];
448 
449  for (unsigned int i = 0; i < totNumPoints; ++i)
450  {
451  for (unsigned int j = 0; j < totNumPoints; ++j)
452  {
453  if (i == j)
454  {
455  continue;
456  }
457 
458  m_bcweights[i] *= (z[i] - z[j]);
459  }
460 
461  m_bcweights[i] = 1.0 / m_bcweights[i];
462  }
463  }
Array< OneD, DataType > m_points[3]
Storage for the point locations, allowing for up to a 3D points storage.
Definition: Points.h:403
Array< OneD, DataType > m_bcweights
Barycentric weights.
Definition: Points.h:407
unsigned int GetNumPoints() const
Definition: Points.h:104

References Nektar::LibUtilities::PointsKey::GetNumPoints(), Nektar::LibUtilities::Points< DataT >::m_bcweights, Nektar::LibUtilities::Points< DataT >::m_points, and Nektar::LibUtilities::Points< DataT >::m_pointsKey.

Referenced by Nektar::LibUtilities::Points< DataT >::Initialize().

◆ CalculateDerivMatrix()

template<typename DataT >
virtual void Nektar::LibUtilities::Points< DataT >::CalculateDerivMatrix ( )
inlineprotectedvirtual

Reimplemented in Nektar::LibUtilities::PolyEPoints, Nektar::LibUtilities::NodalTriSPI, Nektar::LibUtilities::NodalTriFekete, Nektar::LibUtilities::NodalTriEvenlySpaced, Nektar::LibUtilities::NodalTriElec, Nektar::LibUtilities::NodalTetSPI, Nektar::LibUtilities::NodalTetEvenlySpaced, Nektar::LibUtilities::NodalTetElec, Nektar::LibUtilities::NodalQuadElec, Nektar::LibUtilities::NodalPrismSPI, Nektar::LibUtilities::NodalPrismEvenlySpaced, Nektar::LibUtilities::NodalPrismElec, Nektar::LibUtilities::NodalHexElec, Nektar::LibUtilities::GaussPoints, Nektar::LibUtilities::FourierSingleModePoints, Nektar::LibUtilities::FourierPoints, and Nektar::LibUtilities::BLPoints.

Definition at line 465 of file Points.h.

466  {
467  int totNumPoints = GetTotNumPoints();
468  for (unsigned int i = 0; i < m_pointsKey.GetPointsDim(); ++i)
469  {
470  m_derivmatrix[i] =
471  MemoryManager<NekMatrix<DataType>>::AllocateSharedPtr(
472  totNumPoints, totNumPoints);
473  }
474  }
MatrixSharedPtrType m_derivmatrix[3]
Derivative matrices.
Definition: Points.h:409
unsigned int GetTotNumPoints() const
Definition: Points.h:281
unsigned int GetPointsDim() const
Definition: Points.h:147

References Nektar::LibUtilities::PointsKey::GetPointsDim(), Nektar::LibUtilities::Points< DataT >::GetTotNumPoints(), Nektar::LibUtilities::Points< DataT >::m_derivmatrix, and Nektar::LibUtilities::Points< DataT >::m_pointsKey.

Referenced by Nektar::LibUtilities::BLPoints::CalculateDerivMatrix(), Nektar::LibUtilities::FourierPoints::CalculateDerivMatrix(), Nektar::LibUtilities::FourierSingleModePoints::CalculateDerivMatrix(), and Nektar::LibUtilities::Points< DataT >::Initialize().

◆ CalculatePoints()

template<typename DataT >
virtual void Nektar::LibUtilities::Points< DataT >::CalculatePoints ( )
inlineprotectedvirtual

◆ CalculateWeights()

template<typename DataT >
virtual void Nektar::LibUtilities::Points< DataT >::CalculateWeights ( )
inlineprotectedvirtual

◆ GetBaryWeights()

template<typename DataT >
const Array<OneD, const NekDouble>& Nektar::LibUtilities::Points< DataT >::GetBaryWeights ( ) const
inline

Definition at line 308 of file Points.h.

309  {
310  return m_bcweights;
311  }

References Nektar::LibUtilities::Points< DataT >::m_bcweights.

◆ GetD()

template<typename DataT >
const MatrixSharedPtrType& Nektar::LibUtilities::Points< DataT >::GetD ( Direction  dir = xDir) const
inline

Definition at line 334 of file Points.h.

335  {
336  return m_derivmatrix[(int)dir];
337  }

References Nektar::LibUtilities::Points< DataT >::m_derivmatrix.

◆ GetGalerkinProjection()

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetGalerkinProjection ( const PointsKey pkey)
inlinevirtual

Reimplemented in Nektar::LibUtilities::GaussPoints.

Definition at line 388 of file Points.h.

390  {
391  boost::ignore_unused(pkey);
392  NEKERROR(ErrorUtil::efatal, "Method not implemented ");
393  std::shared_ptr<NekMatrix<NekDouble>> returnval(
394  MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
395  return returnval;
396  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ GetI() [1/5]

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetI ( const Array< OneD, const DataType > &  x)
inlinevirtual

Reimplemented in Nektar::LibUtilities::PolyEPoints, Nektar::LibUtilities::GaussPoints, Nektar::LibUtilities::FourierSingleModePoints, Nektar::LibUtilities::FourierPoints, and Nektar::LibUtilities::BLPoints.

Definition at line 348 of file Points.h.

349  {
350  boost::ignore_unused(x);
351  NEKERROR(ErrorUtil::efatal, "Method not implemented");
352  std::shared_ptr<NekMatrix<NekDouble>> returnval(
353  MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
354  return returnval;
355  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ GetI() [2/5]

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetI ( const Array< OneD, const DataType > &  x,
const Array< OneD, const DataType > &  y 
)
inlinevirtual

Reimplemented in Nektar::LibUtilities::NodalTriFekete, Nektar::LibUtilities::NodalTriEvenlySpaced, and Nektar::LibUtilities::NodalTriElec.

Definition at line 367 of file Points.h.

369  {
370  boost::ignore_unused(x, y);
371  NEKERROR(ErrorUtil::efatal, "Method not implemented");
372  std::shared_ptr<NekMatrix<NekDouble>> returnval(
373  MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
374  return returnval;
375  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ GetI() [3/5]

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetI ( const Array< OneD, const DataType > &  x,
const Array< OneD, const DataType > &  y,
const Array< OneD, const DataType > &  z 
)
inlinevirtual

Reimplemented in Nektar::LibUtilities::NodalTetEvenlySpaced, Nektar::LibUtilities::NodalTetElec, Nektar::LibUtilities::NodalPrismEvenlySpaced, and Nektar::LibUtilities::NodalPrismElec.

Definition at line 377 of file Points.h.

380  {
381  boost::ignore_unused(x, y, z);
382  NEKERROR(ErrorUtil::efatal, "Method not implemented");
383  std::shared_ptr<NekMatrix<NekDouble>> returnval(
384  MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
385  return returnval;
386  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ GetI() [4/5]

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetI ( const PointsKey key)
inlinevirtual

◆ GetI() [5/5]

template<typename DataT >
virtual const MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::GetI ( unsigned int  ,
const Array< OneD, const DataType > &  x 
)
inlinevirtual

Reimplemented in Nektar::LibUtilities::PolyEPoints, Nektar::LibUtilities::GaussPoints, Nektar::LibUtilities::FourierSingleModePoints, Nektar::LibUtilities::FourierPoints, and Nektar::LibUtilities::BLPoints.

Definition at line 357 of file Points.h.

359  {
360  boost::ignore_unused(x);
361  NEKERROR(ErrorUtil::efatal, "Method not implemented");
362  std::shared_ptr<NekMatrix<NekDouble>> returnval(
363  MemoryManager<NekMatrix<NekDouble>>::AllocateSharedPtr());
364  return returnval;
365  }

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ GetNumPoints()

template<typename DataT >
unsigned int Nektar::LibUtilities::Points< DataT >::GetNumPoints ( ) const
inline

◆ GetPoints() [1/3]

template<typename DataT >
void Nektar::LibUtilities::Points< DataT >::GetPoints ( Array< OneD, const DataType > &  x) const
inline

Definition at line 313 of file Points.h.

314  {
315  x = m_points[0];
316  }

References Nektar::LibUtilities::Points< DataT >::m_points.

◆ GetPoints() [2/3]

template<typename DataT >
void Nektar::LibUtilities::Points< DataT >::GetPoints ( Array< OneD, const DataType > &  x,
Array< OneD, const DataType > &  y 
) const
inline

Definition at line 318 of file Points.h.

320  {
321  x = m_points[0];
322  y = m_points[1];
323  }

References Nektar::LibUtilities::Points< DataT >::m_points.

◆ GetPoints() [3/3]

template<typename DataT >
void Nektar::LibUtilities::Points< DataT >::GetPoints ( Array< OneD, const DataType > &  x,
Array< OneD, const DataType > &  y,
Array< OneD, const DataType > &  z 
) const
inline

Definition at line 325 of file Points.h.

328  {
329  x = m_points[0];
330  y = m_points[1];
331  z = m_points[2];
332  }

References Nektar::LibUtilities::Points< DataT >::m_points.

◆ GetPointsDim()

template<typename DataT >
unsigned int Nektar::LibUtilities::Points< DataT >::GetPointsDim ( ) const
inline

◆ GetPointsType()

template<typename DataT >
PointsType Nektar::LibUtilities::Points< DataT >::GetPointsType ( ) const
inline

Definition at line 286 of file Points.h.

287  {
288  return m_pointsKey.GetPointsType();
289  }
PointsType GetPointsType() const
Definition: Points.h:109

References Nektar::LibUtilities::PointsKey::GetPointsType(), and Nektar::LibUtilities::Points< DataT >::m_pointsKey.

◆ GetTotNumPoints()

template<typename DataT >
unsigned int Nektar::LibUtilities::Points< DataT >::GetTotNumPoints ( ) const
inline

◆ GetW()

template<typename DataT >
const Array<OneD, const DataType>& Nektar::LibUtilities::Points< DataT >::GetW ( ) const
inline

Definition at line 296 of file Points.h.

297  {
298  return m_weights;
299  }

References Nektar::LibUtilities::Points< DataT >::m_weights.

◆ GetZ()

template<typename DataT >
const Array<OneD, const DataType>& Nektar::LibUtilities::Points< DataT >::GetZ ( ) const
inline

Definition at line 291 of file Points.h.

292  {
293  return m_points[0];
294  }

References Nektar::LibUtilities::Points< DataT >::m_points.

◆ GetZW()

template<typename DataT >
void Nektar::LibUtilities::Points< DataT >::GetZW ( Array< OneD, const DataType > &  z,
Array< OneD, const DataType > &  w 
) const
inline

Definition at line 301 of file Points.h.

303  {
304  z = m_points[0];
305  w = m_weights;
306  }

References Nektar::LibUtilities::Points< DataT >::m_points, and Nektar::LibUtilities::Points< DataT >::m_weights.

◆ Initialize()

template<typename DataT >
virtual void Nektar::LibUtilities::Points< DataT >::Initialize ( void  )
inlinevirtual

Definition at line 263 of file Points.h.

264  {
265  CalculatePoints();
269  }
virtual void CalculateWeights()
Definition: Points.h:426
virtual void CalculateDerivMatrix()
Definition: Points.h:465
virtual void CalculatePoints()
Definition: Points.h:415
virtual void CalculateBaryWeights()
This function calculates the barycentric weights used for enhanced interpolation speed.
Definition: Points.h:442

References Nektar::LibUtilities::Points< DataT >::CalculateBaryWeights(), Nektar::LibUtilities::Points< DataT >::CalculateDerivMatrix(), Nektar::LibUtilities::Points< DataT >::CalculatePoints(), and Nektar::LibUtilities::Points< DataT >::CalculateWeights().

Member Data Documentation

◆ m_bcweights

template<typename DataT >
Array<OneD, DataType> Nektar::LibUtilities::Points< DataT >::m_bcweights
protected

◆ m_derivmatrix

template<typename DataT >
MatrixSharedPtrType Nektar::LibUtilities::Points< DataT >::m_derivmatrix[3]
protected

◆ m_GalerkinProjectionManager

template<typename DataT >
NekManager<PointsKey, NekMatrix<DataType>, PointsKey::opLess> Nektar::LibUtilities::Points< DataT >::m_GalerkinProjectionManager
protected

Definition at line 413 of file Points.h.

◆ m_InterpManager

template<typename DataT >
NekManager<PointsKey, NekMatrix<DataType>, PointsKey::opLess> Nektar::LibUtilities::Points< DataT >::m_InterpManager
protected

Definition at line 411 of file Points.h.

◆ m_points

template<typename DataT >
Array<OneD, DataType> Nektar::LibUtilities::Points< DataT >::m_points[3]
protected

◆ m_pointsKey

template<typename DataT >
PointsKey Nektar::LibUtilities::Points< DataT >::m_pointsKey
protected

◆ m_weights

template<typename DataT >
Array<OneD, DataType> Nektar::LibUtilities::Points< DataT >::m_weights
protected