44 namespace LibUtilities
55 ASSERTL0(!(npts % 2),
"Fourier points need to be of even order");
64 for (
unsigned int i = 0; i < npts; ++i)
83 for (
unsigned int i = 0; i < npts; ++i)
97 for (
unsigned int i = 1; i < npts; ++i)
102 for (
unsigned int i = 1; i < npts; ++i)
106 cos(M_PI * i / npts) /
107 sin(M_PI * i / npts));
110 for (
unsigned int i = 1; i < npts; ++i)
112 for (
unsigned int j = 0; j < npts; ++j)
122 std::shared_ptr<Points<NekDouble>> returnval(
125 returnval->Initialize();
139 return GetI(numpoints, xpoints);
146 "Fourier Points can only interp to other 1d point distributions");
157 return GetI(numpoints, x);
169 std::shared_ptr<NekMatrix<NekDouble>> returnval(
181 for (
unsigned int i = 0; i < npts; ++i)
200 if (fabs(x) > 1.0e-12)
202 y = sin(M_PI * x / (M_PI * h)) / ((2.0 / h) * tan(0.5 * x));
#define ASSERTL0(condition, msg)
virtual void v_CalculatePoints() override
std::shared_ptr< NekMatrix< NekDouble > > CreateMatrix(const PointsKey &pkey)
virtual const MatrixSharedPtrType v_GetI(const PointsKey &pkey) override
static std::shared_ptr< PointsBaseType > Create(const PointsKey &key)
void CalculateInterpMatrix(unsigned int npts, const Array< OneD, const NekDouble > &xpoints, Array< OneD, NekDouble > &interp)
virtual void v_CalculateWeights() override
NekDouble PeriodicSincFunction(const NekDouble x, const NekDouble h)
static bool initPointsManager[]
virtual 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...
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()
PointsKey m_pointsKey
Points type for this points distributions.
unsigned int GetNumPoints() const
Array< OneD, DataType > m_weights
Quadrature weights for the weights.
virtual void v_CalculateDerivMatrix()
const MatrixSharedPtrType GetI(const PointsKey &key)
virtual void v_CalculateWeights()
Defines a specification for a set of points.
unsigned int GetPointsDim() const
unsigned int 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
The above copyright notice and this permission notice shall be included.