132 case eGaussRadauMAlpha0Beta2:
137 case eGaussRadauMAlpha1Beta0:
142 case eGaussRadauMAlpha2Beta0:
147 case eGaussKronrodLegendre:
169 "Unknown Gauss quadrature point distribution requested");
181 PointsBaseType::v_CalculateDerivMatrix();
187 NekDouble *dmtemp = dmtempSharedArray.data();
227 case eGaussRadauMAlpha0Beta2:
231 case eGaussRadauMAlpha1Beta0:
235 case eGaussRadauMAlpha2Beta0:
239 case eGaussKronrodLegendre:
259 "Unknown Gauss quadrature point distribution requested");
262 std::copy(dmtemp, dmtemp + totpoints * totpoints,
317 case eGaussRadauMAlpha0Beta2:
322 case eGaussRadauMAlpha1Beta0:
327 case eGaussRadauMAlpha2Beta0:
332 case eGaussKronrodLegendre:
337 for (
size_t i = 0; i < npts; ++i)
341 interp[i + j * npts] =
351 "Unknown Gauss quadrature point distribution requested");
357 std::shared_ptr<Points<NekDouble>> returnval(
360 returnval->Initialize();
374 return GetI(numpoints, xpoints);
381 "Gauss Points can only interp to other 1d point distributions");
389 size_t numpoints = 1;
392 return GetI(numpoints, x);
404 std::shared_ptr<NekMatrix<NekDouble>> returnval(
420 std::shared_ptr<NekMatrix<NekDouble>> returnval =
437 std::shared_ptr<NekMatrix<NekDouble>> Interp =
GetI(pkey);
443 for (
size_t i = 0; i < numpointsto; ++i)
445 Vmath::Vmul(numpointsfrom, Interp->GetPtr().get() + i * numpointsfrom,
446 1, &weightsfrom[0], 1, &GalProj[0] + i, numpointsto);
448 numpointsto, &GalProj[0] + i, numpointsto);
452 std::shared_ptr<NekMatrix<NekDouble>> returnval(
454 numpointsto, numpointsfrom, t));
#define ASSERTL0(condition, msg)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
static std::shared_ptr< Points< NekDouble > > Create(const PointsKey &pkey)
std::shared_ptr< NekMatrix< NekDouble > > CreateGPMatrix(const PointsKey &pkey)
virtual const std::shared_ptr< NekMatrix< NekDouble > > v_GetGalerkinProjection(const PointsKey &pkey) override
virtual void v_CalculateWeights() override final
virtual void v_CalculateDerivMatrix() override final
virtual void v_CalculatePoints() override final
std::shared_ptr< NekMatrix< NekDouble > > CreateMatrix(const PointsKey &pkey)
virtual const std::shared_ptr< NekMatrix< NekDouble > > v_GetI(const PointsKey &pkey) override
void CalculateInterpMatrix(size_t npts, const Array< OneD, const NekDouble > &xpoints, Array< OneD, NekDouble > &interp)
static bool initPointsManager[]
std::shared_ptr< NekMatrix< NekDouble > > CalculateGalerkinProjectionMatrix(const PointsKey &pkey)
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
NekManager< PointsKey, NekMatrix< DataType >, PointsKey::opLess > m_GalerkinProjectionManager
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
PointsType GetPointsType() const
size_t GetTotNumPoints() const
size_t GetNumPoints() const
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
PointsManagerT & PointsManager(void)
@ eGaussRadauMLegendre
1D Gauss-Radau-Legendre quadrature points, pinned at x=-1
@ eGaussRadauMAlpha0Beta1
Gauss Radau pinned at x=-1,.
@ eGaussRadauKronrodMLegendre
1D Gauss-Radau-Kronrod-Legendre quadrature points, pinned at x=-1
@ eGaussLobattoChebyshev
1D Gauss-Lobatto-Legendre quadrature points
@ eGaussRadauPChebyshev
1D Gauss-Radau-Chebyshev quadrature points, pinned at x=1
@ eGaussRadauMChebyshev
1D Gauss-Radau-Chebyshev quadrature points, pinned at x=-1
@ eGaussRadauKronrodMAlpha1Beta0
1D Gauss-Radau-Kronrod-Legendre pinned at x=-1,
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eGaussGaussChebyshev
1D Gauss-Gauss-Chebyshev quadrature points
@ eGaussLobattoKronrodLegendre
1D Lobatto Kronrod quadrature points
@ eGaussGaussLegendre
1D Gauss-Gauss-Legendre quadrature points
@ eGaussRadauPLegendre
1D Gauss-Radau-Legendre quadrature points, pinned at x=1
The above copyright notice and this permission notice shall be included.
double laginterpderiv(double z, int k, const double *zj, int np)
void Dgj(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix and its transpose associated with the Gauss-Jacobi zeros.
void zwgrjm(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=-1.
void zwgrjp(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=1.
double laginterp(double z, int j, const double *zj, int np)
void Dglj(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix associated with the Gauss-Lobatto-Jacobi zeros.
void Imgrjp(double *im, const double *zgrj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Radau-Jacobi points (including z=1) to an arbitrary distrubtion at ...
void zwglj(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Lobatto-Jacobi zeros and weights with end point at z=-1,1.
void zwgj(double *z, double *w, const int np, const double alpha, const double beta)
Gauss-Jacobi zeros and weights.
void Imgj(double *im, const double *zgj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Jacobi points to an arbitrary distribution at points zm.
void Imgrjm(double *im, const double *zgrj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Radau-Jacobi points (including z=-1) to an arbitrary distrubtion at...
void zwgk(double *z, double *w, const int npt, const double alpha, const double beta)
Gauss-Kronrod-Jacobi zeros and weights.
void Dgrjm(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix and its transpose associated with the Gauss-Radau-Jacobi zeros with a z...
void Dgrjp(double *D, const double *z, const int np, const double alpha, const double beta)
Compute the Derivative Matrix associated with the Gauss-Radau-Jacobi zeros with a zero at z=1.
void zwrk(double *z, double *w, const int npt, const double alpha, const double beta)
Gauss-Radau-Kronrod-Jacobi zeros and weights.
void Imglj(double *im, const double *zglj, const double *zm, const int nz, const int mz, const double alpha, const double beta)
Interpolation Operator from Gauss-Lobatto-Jacobi points to an arbitrary distrubtion at points zm.
void zwlk(double *z, double *w, const int npt, const double alpha, const double beta)
Gauss-Lobatto-Kronrod-Jacobi zeros and weights.
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.