49 size_t index = 0, isum = 0;
50 const size_t offset = 3;
55 for (
size_t i = 0; i < numPoints - 2; ++i)
75 for (
size_t j = 0; j < 3; ++j)
88 for (
size_t j = 0; j < 3; ++j)
101 for (
size_t j = 0; j < 6; ++j)
116 "sum not equal to npts");
139 PointsBaseType::v_CalculateDerivMatrix();
155 std::shared_ptr<NekMatrix<NekDouble>> mat =
156 m_util->GetInterpolationMatrix(xi);
157 Vmath::Vcopy(mat->GetRows() * mat->GetColumns(), mat->GetRawPtr(), 1,
163 std::shared_ptr<PointsBaseType> returnval(
165 returnval->Initialize();
175 const size_t nVerts = 3;
177 const size_t nBoundaryPoints = 3 * nEdgeInteriorPoints + 3;
179 if (nEdgeInteriorPoints == 0)
186 for (i = cnt = istart; i < nBoundaryPoints; i++)
197 iend = istart + nEdgeInteriorPoints;
198 for (i = istart; i < iend; i++)
200 for (j = istart + 1; j < iend; j++)
212 for (i = cnt = istart; i < nBoundaryPoints; i++)
223 iend = istart + nEdgeInteriorPoints;
224 for (i = istart; i < iend; i++)
226 for (j = istart + 1; j < iend; j++)
238 for (i = cnt = istart; i < nBoundaryPoints; i++)
248 iend = istart + nEdgeInteriorPoints;
249 for (i = istart; i < iend; i++)
251 for (j = istart + 1; j < iend; j++)
290 for (i = 0; i < xc.size() - 1; i++)
292 if (yc[i] > yc[i + 1])
294 std::swap(xc[i], xc[i + 1]);
295 std::swap(yc[i], yc[i + 1]);
309 for (i = offset; i < offset + npl - 1; i++)
311 if (xc[i] > xc[i + 1])
313 std::swap(xc[i], xc[i + 1]);
314 std::swap(yc[i], yc[i + 1]);
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
size_type size() const
Returns the array's size.
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...
virtual void v_CalculateWeights() override final
virtual void v_CalculateDerivMatrix() override final
static std::shared_ptr< PointsBaseType > Create(const PointsKey &key)
void NodalPointReorder2d()
static bool initPointsManager[]
std::shared_ptr< NodalUtilTriangle > m_util
void CalculateInterpMatrix(const Array< OneD, const NekDouble > &xia, const Array< OneD, const NekDouble > &yia, Array< OneD, NekDouble > &interp)
virtual void v_CalculatePoints() override final
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.
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.
virtual void v_CalculateWeights()
Defines a specification for a set of points.
size_t GetTotNumPoints() const
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
static const size_t perm3A_2d[3][3]
static const NekDouble NodalTriElecData[][6]
static const size_t NodalTriElecNPTS[NodalTriElecAvailable]
PointsManagerT & PointsManager(void)
static const size_t perm6_2d[6][3]
@ eNodalTriElec
2D Nodal Electrostatic Points on a Triangle
static const size_t perm3B_2d[3][3]
static const NekDouble kNekZeroTol
std::vector< double > w(NPUPPER)
The above copyright notice and this permission notice shall be included.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)