Gyselalib++
 
Loading...
Searching...
No Matches
TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace > Class Template Reference

The Impl class holds the implementation of the TriangularBernsteinPolynomialBasis. More...

Public Types

using discrete_dimension_type = TriangularBernsteinPolynomialBasis
 The tag which identifies the basis.
 
using discrete_element_type = ddc::DiscreteElement< DDim >
 The type of an index of an element of the basis.
 
using discrete_domain_type = ddc::DiscreteDomain< DDim >
 The type of the index range of the basis.
 
using discrete_vector_type = ddc::DiscreteVector< DDim >
 The type of an index step from one element of the basis to another.
 

Public Member Functions

 Impl (CartesianToBarycentric< X, Y, Corner1Tag, Corner2Tag, Corner3Tag > const &coord_changer)
 Construct the basis from the barycentric coordinate mapping.
 
template<class OriginMemorySpace >
 Impl (Impl< DDim, OriginMemorySpace > const &impl)
 Construct the basis by copy.
 
 Impl (Impl const &x)=default
 Construct the basis by copy.
 
 Impl (Impl &&x)=default
 Construct the basis from an r-value.
 
Imploperator= (Impl const &x)=default
 Copy-assign the class.
 
Imploperator= (Impl &&x)=default
 Move-assign the class.
 
void eval_basis (ddc::ChunkSpan< double, ddc::DiscreteDomain< DDim > > values, ddc::Coordinate< X, Y > const &x) const
 Evaluate the basis at the given coordinate.
 

Detailed Description

template<class X, class Y, class Corner1Tag, class Corner2Tag, class Corner3Tag, std::size_t D>
template<class DDim, class MemorySpace>
class TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >

The Impl class holds the implementation of the TriangularBernsteinPolynomialBasis.

Template Parameters
MemorySpaceIndicates where the object is saved. This is either on the host or the device.

Constructor & Destructor Documentation

◆ Impl() [1/4]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::Impl ( CartesianToBarycentric< X, Y, Corner1Tag, Corner2Tag, Corner3Tag > const &  coord_changer)
inline

Construct the basis from the barycentric coordinate mapping.

Parameters
[in]coord_changerThe class which converts cartesian coordinates to barycentric coordinates.

◆ Impl() [2/4]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
template<class OriginMemorySpace >
TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::Impl ( Impl< DDim, OriginMemorySpace > const &  impl)
inlineexplicit

Construct the basis by copy.

This constructor is used to create the class on a different memory space.

Parameters
[in]implThe implementation of the origin memory space.

◆ Impl() [3/4]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::Impl ( Impl< DDim, MemorySpace > const &  x)
default

Construct the basis by copy.

Parameters
[in]xThe basis to be copied.

◆ Impl() [4/4]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::Impl ( Impl< DDim, MemorySpace > &&  x)
default

Construct the basis from an r-value.

Parameters
[in]xThe temporary basis to be copied.

Member Function Documentation

◆ operator=() [1/2]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
Impl & TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::operator= ( Impl< DDim, MemorySpace > const &  x)
default

Copy-assign the class.

Parameters
xAn reference to another Impl.
Returns
A reference to this object.

◆ operator=() [2/2]

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
Impl & TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::operator= ( Impl< DDim, MemorySpace > &&  x)
default

Move-assign the class.

Parameters
xAn rvalue to another Impl.
Returns
A reference to this object.

◆ eval_basis()

template<class X , class Y , class Corner1Tag , class Corner2Tag , class Corner3Tag , std::size_t D>
template<class DDim , class MemorySpace >
void TriangularBernsteinPolynomialBasis< X, Y, Corner1Tag, Corner2Tag, Corner3Tag, D >::Impl< DDim, MemorySpace >::eval_basis ( ddc::ChunkSpan< double, ddc::DiscreteDomain< DDim > >  values,
ddc::Coordinate< X, Y > const &  x 
) const

Evaluate the basis at the given coordinate.

Parameters
[out]valuesThe values of the basis functions at the coordinate.
[in]xThe coordinate where the polynomials should be evaluated.

The documentation for this class was generated from the following file: