49 ASSERTL0(!(npts % 2),
"Fourier points need to be of even order");
52 for (
size_t i = 0; i < npts; ++i)
64 for (
size_t i = 0; i < npts; ++i)
77 for (
size_t i = 1; i < npts; ++i)
82 for (
size_t i = 1; i < npts; ++i)
86 cos(M_PI * i / npts) /
87 sin(M_PI * i / npts));
90 for (
size_t i = 1; i < npts; ++i)
92 for (
size_t j = 0; j < npts; ++j)
102 std::shared_ptr<Points<NekDouble>> returnval(
105 returnval->Initialize();
119 return GetI(numpoints, xpoints);
126 "Fourier Points can only interp to other 1d point distributions");
134 size_t numpoints = 1;
137 return GetI(numpoints, x);
149 std::shared_ptr<NekMatrix<NekDouble>> returnval(
161 for (
size_t i = 0; i < npts; ++i)
180 if (fabs(x) > 1.0e-12)
182 y = sin(M_PI * x / (M_PI * h)) / ((2.0 / h) * tan(0.5 * x));
#define ASSERTL0(condition, msg)
void v_CalculatePoints() override
std::shared_ptr< NekMatrix< NekDouble > > CreateMatrix(const PointsKey &pkey)
static std::shared_ptr< PointsBaseType > Create(const PointsKey &key)
void CalculateInterpMatrix(size_t npts, const Array< OneD, const NekDouble > &xpoints, Array< OneD, NekDouble > &interp)
const MatrixSharedPtrType v_GetI(const PointsKey &pkey) final
void v_CalculateWeights() override
NekDouble PeriodicSincFunction(const NekDouble x, const NekDouble h)
static bool initPointsManager[]
void v_CalculateDerivMatrix() override
bool RegisterCreator(const KeyType &key, const CreateFuncType &createFunc)
Register the given function and associate it with the key. The return value is just to facilitate cal...
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
virtual void v_CalculatePoints()
size_t GetNumPoints() const
PointsKey m_pointsKey
Points type for this points distributions.
Array< OneD, DataType > m_weights
Quadrature weights for the weights.
const MatrixSharedPtrType GetI(const PointsKey &key)
virtual void v_CalculateWeights()
Defines a specification for a set of points.
size_t GetPointsDim() const
size_t GetNumPoints() const
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
PointsManagerT & PointsManager(void)
@ eFourierEvenlySpaced
1D Evenly-spaced points using Fourier Fit