55 return py::make_tuple(pts->GetZ(), pts->GetW());
66 return pts->GetD(dir);
76 "Characterise the type of points.\n" 78 "Sample usage: PointsType.GaussLobattoLegendre\n" 80 "Available point types:\n" 81 "\tNoPointsType: No points type.\n" 82 "\tGaussGaussLegendre: 1D Gauss-Gauss-Legendre quadrature points.\n" 83 "\tGaussRadauMLegendre: 1D Gauss-Radau-Legendre quadrature points,\n" 84 "\t\tpinned at x=-1.\n" 85 "\tGaussRadauPLegendre: 1D Gauss-Radau-Legendre quadrature points,\n" 86 "\t\tpinned at x=1.\n" 87 "\tGaussLobattoLegendre: 1D Gauss-Lobatto-Legendre quadrature points.\n" 88 "\tGaussGaussChebyshev: 1D Gauss-Gauss-Chebyshev quadrature points.\n" 89 "\tGaussRadauMChebyshev: 1D Gauss-Radau-Chebyshev quadrature points,\n" 90 "\t\tpinned at x=-1.\n" 91 "\tGaussRadauPChebyshev: 1D Gauss-Radau-Chebyshev quadrature points,\n" 92 "\t\tpinned at x=1.\n" 93 "\tGaussLobattoChebyshev: 1D Gauss-Lobatto-Legendre quadrature points\n" 94 "\tGaussRadauMAlpha0Beta1: Gauss Radau pinned at x=-1,\n" 95 "\t\talpha = 0, beta = 1\n" 96 "\tGaussRadauMAlpha0Beta2: Gauss Radau pinned at x=-1,\n" 97 "\t\talpha = 0, beta = 2\n" 98 "\tGaussRadauMAlpha1Beta0: Gauss Radau pinned at x=-1,\n" 99 "\t\talpha = 1, beta = 0\n" 100 "\tGaussRadauMAlpha2Beta0: Gauss Radau pinned at x=-1,\n" 101 "\t\talpha = 2, beta = 0\n" 102 "\tGaussKronrodLegendre: 1D Gauss-Kronrod-Legendre quadrature points.\n" 103 "\tGaussRadauKronrodMLegendre: 1D Gauss-Radau-Kronrod-Legendre quadrature\n" 104 "\t\tpoints, pinned at x=-1.\n" 105 "\tGaussRadauKronrodMAlpha1Beta0: 1D Gauss-Radau-Kronrod-Legendre\n" 106 "\t\tpinned at x=-1, alpha = 1, beta = 0\n" 107 "\tGaussLobattoKronrodLegendre: 1D Lobatto Kronrod quadrature points.\n" 108 "\tPolyEvenlySpaced: 1D Evenly-spaced points using Lagrange polynomial.\n" 109 "\tFourierEvenlySpaced: 1D Evenly-spaced points using Fourier Fit.\n" 110 "\tFourierSingleModeSpaced: 1D Non Evenly-spaced points for Single Mode\n" 112 "\tBoundaryLayerPoints: 1D power law distribution for boundary layer points.\n" 113 "\tBoundaryLayerPointsRev: 1D power law distribution for boundary layer\n" 115 "\tNodalTriElec: 2D Nodal Electrostatic Points on a Triangle.\n" 116 "\tNodalTriFekete: 2D Nodal Fekete Points on a Triangle.\n" 117 "\tNodalTriEvenlySpaced: 2D Evenly-spaced points on a Triangle.\n" 118 "\tNodalTetEvenlySpaced: 3D Evenly-spaced points on a Tetrahedron.\n" 119 "\tNodalTetElec: 3D Nodal Electrostatic Points on a Tetrahedron.\n" 120 "\tNodalPrismEvenlySpaced: 3D Evenly-spaced points on a Prism.\n" 121 "\tNodalPrismElec: 3D electrostatically spaced points on a Prism.\n" 122 "\tNodalTriSPI: 2D Nodal Symmetric positive internal triangle\n" 123 "\t\t(Whitherden, Vincent).\n" 124 "\tNodalTetSPI: 3D Nodal Symmetric positive internal tet\n" 125 "\t\t(Whitherden, Vincent).\n" 126 "\tNodalPrismSPI: 3D prism SPI.\n" 127 "\tNodalQuadElec: 2D GLL for quad.\n" 128 "\tNodalHexElec: 3D GLL for hex");
130 py::class_<PointsKey>(
"PointsKey",
131 "Create a PointsKey which uniquely defines quadrature points.\n" 134 "\tnQuadPoints (integer): The number of quadrature points.\n" 135 "\tpointsType (PointsType object): The type of quadrature points.",
136 py::init<const int, const PointsType&>())
139 "Get the number of quadrature points in PointsKey.\n" 144 "\tInteger defining the number of quadrature points in PointsKey.")
146 "Get the type of points in PointsKey.\n" 151 "\tPointsType object specifying the type of points in PointsKey.")
153 "Get the dimension of the PointsKey.\n" 158 "\tInteger characterising the dimension of the PointsKey (e.g. 2\n" 159 "\tfor 2D PointsKey).")
161 "Get the total number of points in PointsKey.\n" 166 "\tInteger defining the total number of points in PointsKey.")
169 py::class_<Points<double>,
170 std::shared_ptr<Points<double> >,
173 "Create a set of points which can be used to calculate\n" 174 "quadrature zeros, weights etc." 180 "Create a Points object using PointsKey.\n" 183 "\tpointsKey (PointsKey object): The PointsKey to be used to\n" 186 "\tPoints object created with the given PointsKey.")
187 .staticmethod(
"Create")
190 "Initialise Points object by calculating points, weights\n" 191 "and differentiation matrix.\n" 198 "Get the dimension of the Points object.\n" 203 "\tInteger characterising the dimension of the Points object\n" 204 "\t(e.g. 2 for 2D Points object).")
206 "Get the type of points in Points object.\n" 211 "\tPointsType object specifying the type of points in Points\n" 214 "Get the number of quadrature points in Points object.\n" 219 "\tInteger defining the number of quadrature points in Points\n" 222 "Get the total number of points in Points object.\n" 227 "\tInteger defining the total number of points in Points\n" 231 py::return_value_policy<py::copy_const_reference>(),
232 "Get quadrature zeros.\n" 237 "\tNumPy ndarray of length equal to the number of quadrature\n" 238 "\tpoints, containing quadrature zeros.")
240 py::return_value_policy<py::copy_const_reference>(),
241 "Get quadrature weights.\n" 246 "\tNumPy ndarray of length equal to the number of quadrature\n" 247 "\tpoints, containing quadrature weights.")
249 "Get quadrature zeros and weights.\n" 254 "\tTuple containing the quadrature zeros and quadrature weights,\n" 255 "\ti.e. (Points.GetZ(), Points.GetW()).")
257 "Get the differentiation matrix.\n" 262 "\tNumPy ndarray of n x n dimensions, where n is equal to\n" 263 "\tthe number of quadrature points, containing the\n" 264 "\tdifferentiation matrix.")
266 "Get the differentiation matrix.\n" 269 "\tdir (Direction object): The direction of the desired\n" 270 "\tdifferentiation matrix.\n" 272 "\tNumPy ndarray of n x n dimensions, where n is equal to\n" 273 "\tthe number of quadrature points containing the\n" 274 "\tdifferentiation matrix.")
std::shared_ptr< NekMatrix< NekDouble > > MatrixSharedPtrType
PointsType GetPointsType() const
const std::string kPointsTypeStr[]
MatrixSharedPtrType Points_GetD(PointsSharedPtr pts)
#define NEKPY_WRAP_ENUM_STRING_DOCS(ENUMNAME, MAPNAME, DOCSTRING)
MatrixSharedPtrType Points_GetD2(PointsSharedPtr pts, Direction dir)
unsigned int GetPointsDim() const
Stores a set of points of datatype DataT, defined by a PointKey.
py::tuple Points_GetZW(PointsSharedPtr pts)
std::shared_ptr< Points< NekDouble > > PointsSharedPtr
PointsManagerT & PointsManager(void)
unsigned int GetTotNumPoints() const
void export_Points()
Points exports.
Defines a specification for a set of points.
PointsSharedPtr Points_Create(const PointsKey &pts)
unsigned int GetNumPoints() const