The Impl class holds the implementation of the PolarBSplines. More...
Classes | |
struct | Corner1Tag |
The tag for the first corner of the Barycentric coordinates. More... | |
struct | Corner2Tag |
The tag for the second corner of the Barycentric coordinates. More... | |
struct | Corner3Tag |
The tag for the third corner of the Barycentric coordinates. More... | |
struct | IntermediateBernsteinBasis |
Public Types | |
using | discrete_dimension_type = PolarBSplines |
The tag which should be used to create a Chunk whose contents are each associated with a PolarBSpline. | |
using | discrete_element_type = ddc::DiscreteElement< DDim > |
The type of an index associated with a PolarBSpline. | |
using | discrete_domain_type = ddc::DiscreteDomain< DDim > |
The type of a index range of PolarBSplines. | |
using | discrete_vector_type = ddc::DiscreteVector< DDim > |
The type of a vector associated with a PolarBSpline. | |
Public Member Functions | |
template<class DiscreteMapping > | |
Impl (const DiscreteMapping &curvilinear_to_cartesian) | |
A constructor for the PolarBSplines. | |
template<class OriginMemorySpace > | |
Impl (Impl< DDim, OriginMemorySpace > const &impl) | |
A copy constructor for the PolarBSplines. | |
Impl (Impl const &x)=default | |
A copy constructor for the PolarBSplines. | |
Impl (Impl &&x)=default | |
A copy constructor for the PolarBSplines taking a temporary r-value. | |
~Impl ()=default | |
The destructor for the PolarBSplines. | |
Impl & | operator= (Impl const &x)=default |
A copy operator for the PolarBSplines. | |
Impl & | operator= (Impl &&x)=default |
A copy operator for the PolarBSplines taking a temporary r-value. | |
tensor_product_index_type | eval_basis (DSpan1D singular_values, DSpan2D values, ddc::Coordinate< DimR, DimTheta > p) const |
Evaluate the polar basis splines at the coordinate p. | |
tensor_product_index_type | eval_deriv_r (DSpan1D singular_derivs, DSpan2D derivs, ddc::Coordinate< DimR, DimTheta > p) const |
Evaluate the radial derivative of the polar basis splines at the coordinate p. | |
tensor_product_index_type | eval_deriv_theta (DSpan1D singular_derivs, DSpan2D derivs, ddc::Coordinate< DimR, DimTheta > p) const |
Evaluate the poloidal derivative of the polar basis splines at the coordinate p. | |
tensor_product_index_type | eval_deriv_r_and_theta (DSpan1D singular_derivs, DSpan2D derivs, ddc::Coordinate< DimR, DimTheta > p) const |
Evaluate the second order derivative of the polar basis splines in the radial and poloidal directions, at the coordinate p. | |
template<class MemorySpace2 > | |
void | integrals (PolarSplineSpan< DDim, MemorySpace2 > int_vals) const |
Calculate the integrals of each of the basis splines. | |
std::size_t | nbasis () const noexcept |
Get the total number of basis functions. | |
discrete_domain_type | full_domain () const noexcept |
Returns the index range containing the indices of all the polar b-splines. | |
discrete_domain_type | tensor_bspline_idx_range () const noexcept |
Returns the ddc::DiscreteDomain containing the indices of the b-splines which don't traverse the singular point and can be expressed as a tensor-product of 1D b-splines. | |
Friends | |
template<class ExecSpace , class PBSpl , class OMemorySpace > | |
PolarSplineSpan< PBSpl, OMemorySpace > | integrals (ExecSpace const &execution_space, PolarSplineSpan< PBSpl, OMemorySpace > int_vals) |
The Impl class holds the implementation of the PolarBSplines.
The implementation is specific to the memory space so that the Chunks can be defined with index ranges related to instances of this class.
MemorySpace | Indicates where the object is saved. This is either on the host or the device. |
struct PolarBSplines::Impl::Corner1Tag |
The tag for the first corner of the Barycentric coordinates.
struct PolarBSplines::Impl::Corner2Tag |
The tag for the second corner of the Barycentric coordinates.
struct PolarBSplines::Impl::Corner3Tag |
The tag for the third corner of the Barycentric coordinates.
|
inline |
A constructor for the PolarBSplines.
curvilinear_to_cartesian | A mapping from curvilinear to cartesian coordinates. This is used to find the singular point and determine the Barycentric coordinates which are used to define the new basis splines which cross the singular point. |
|
inlineexplicit |
A copy constructor for the PolarBSplines.
impl | The PolarBSplines being copied. |
|
default |
A copy constructor for the PolarBSplines.
x | The PolarBSplines being copied. |
|
default |
A copy constructor for the PolarBSplines taking a temporary r-value.
x | The PolarBSplines being copied. |
|
default |
A copy operator for the PolarBSplines.
x | The PolarBSplines being copied. |
|
default |
A copy operator for the PolarBSplines taking a temporary r-value.
x | The PolarBSplines being copied. |
ddc::DiscreteElement< BSplinesR, BSplinesTheta > PolarBSplines< BSplinesR, BSplinesTheta, C >::Impl< DDim, MemorySpace >::eval_basis | ( | DSpan1D | singular_values, |
DSpan2D | values, | ||
ddc::Coordinate< DimR, DimTheta > | p | ||
) | const |
Evaluate the polar basis splines at the coordinate p.
Evaluate all the b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, as well as the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines.
[out] | singular_values | The value of the b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, evaluated at the coordinate p. |
[out] | values | The value of the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines. |
[in] | p | The coordinate where the basis functions are evaluated. |
ddc::DiscreteElement< BSplinesR, BSplinesTheta > PolarBSplines< BSplinesR, BSplinesTheta, C >::Impl< DDim, MemorySpace >::eval_deriv_r | ( | DSpan1D | singular_derivs, |
DSpan2D | derivs, | ||
ddc::Coordinate< DimR, DimTheta > | p | ||
) | const |
Evaluate the radial derivative of the polar basis splines at the coordinate p.
Evaluate the radial derivative of all the b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, as well as the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines.
[out] | singular_derivs | The value of the radial derivative b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, evaluated at the coordinate p. |
[out] | derivs | The value of the radial derivative of the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines. |
[in] | p | The coordinate where the basis functions are evaluated. |
ddc::DiscreteElement< BSplinesR, BSplinesTheta > PolarBSplines< BSplinesR, BSplinesTheta, C >::Impl< DDim, MemorySpace >::eval_deriv_theta | ( | DSpan1D | singular_derivs, |
DSpan2D | derivs, | ||
ddc::Coordinate< DimR, DimTheta > | p | ||
) | const |
Evaluate the poloidal derivative of the polar basis splines at the coordinate p.
Evaluate the poloidal derivative of all the b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, as well as the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines.
[out] | singular_derivs | The value of the poloidal derivative b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, evaluated at the coordinate p. |
[out] | derivs | The value of the poloidal derivative of the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines. |
[in] | p | The coordinate where the basis functions are evaluated. |
ddc::DiscreteElement< BSplinesR, BSplinesTheta > PolarBSplines< BSplinesR, BSplinesTheta, C >::Impl< DDim, MemorySpace >::eval_deriv_r_and_theta | ( | DSpan1D | singular_derivs, |
DSpan2D | derivs, | ||
ddc::Coordinate< DimR, DimTheta > | p | ||
) | const |
Evaluate the second order derivative of the polar basis splines in the radial and poloidal directions, at the coordinate p.
Evaluate the 2nd order derivative of all the b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, as well as the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines.
[out] | singular_derivs | The value of the 2nd order derivative b-spline elements near the singular point which cannot be expressed as a tensor product of 1D bsplines, evaluated at the coordinate p. |
[out] | derivs | The value of the 2nd order derivative of the non-zero b-spline elements which can be expressed as a tensor product of 1D bsplines. |
[in] | p | The coordinate where the basis functions are evaluated. |
void PolarBSplines< BSplinesR, BSplinesTheta, C >::Impl< DDim, MemorySpace >::integrals | ( | PolarSplineSpan< DDim, MemorySpace2 > | int_vals | ) | const |
Calculate the integrals of each of the basis splines.
[out] | int_vals | The integrals of the basis splines. |
|
inlinenoexcept |
Get the total number of basis functions.
|
inlinenoexcept |
Returns the index range containing the indices of all the polar b-splines.
|
inlinenoexcept |
Returns the ddc::DiscreteDomain containing the indices of the b-splines which don't traverse the singular point and can be expressed as a tensor-product of 1D b-splines.