130 case eGaussRadauMAlpha0Beta2:
135 case eGaussRadauMAlpha1Beta0:
140 case eGaussRadauMAlpha2Beta0:
145 case eGaussKronrodLegendre:
167 "Unknown Gauss quadrature point distribution requested");
179 PointsBaseType::v_CalculateDerivMatrix();
185 NekDouble *dmtemp = dmtempSharedArray.data();
225 case eGaussRadauMAlpha0Beta2:
229 case eGaussRadauMAlpha1Beta0:
233 case eGaussRadauMAlpha2Beta0:
237 case eGaussKronrodLegendre:
257 "Unknown Gauss quadrature point distribution requested");
260 std::copy(dmtemp, dmtemp + totpoints * totpoints,
315 case eGaussRadauMAlpha0Beta2:
320 case eGaussRadauMAlpha1Beta0:
325 case eGaussRadauMAlpha2Beta0:
330 case eGaussKronrodLegendre:
335 for (
size_t i = 0; i < npts; ++i)
339 interp[i + j * npts] =
349 "Unknown Gauss quadrature point distribution requested");
355 std::shared_ptr<Points<NekDouble>> returnval(
358 returnval->Initialize();
372 return GetI(numpoints, xpoints);
379 "Gauss Points can only interp to other 1d point distributions");
387 size_t numpoints = 1;
390 return GetI(numpoints, x);
402 std::shared_ptr<NekMatrix<NekDouble>> returnval(
418 std::shared_ptr<NekMatrix<NekDouble>> returnval =
435 std::shared_ptr<NekMatrix<NekDouble>> Interp =
GetI(pkey);
441 for (
size_t i = 0; i < numpointsto; ++i)
443 Vmath::Vmul(numpointsfrom, Interp->GetPtr().get() + i * numpointsfrom,
444 1, &weightsfrom[0], 1, &GalProj[0] + i, numpointsto);
446 numpointsto, &GalProj[0] + i, numpointsto);
450 std::shared_ptr<NekMatrix<NekDouble>> returnval(
452 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)
const std::shared_ptr< NekMatrix< NekDouble > > v_GetGalerkinProjection(const PointsKey &pkey) override
void v_CalculateWeights() final
void v_CalculatePoints() final
void v_CalculateDerivMatrix() final
std::shared_ptr< NekMatrix< NekDouble > > CreateMatrix(const PointsKey &pkey)
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
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.