Gyselalib++
 
Loading...
Searching...
No Matches
MultipatchSplineBuilder2D< ExecSpace, MemorySpace, BSpline1OnPatch, BSpline2OnPatch, Grid1OnPatch, Grid2OnPatch, BcLower1, BcUpper1, BcLower2, BcUpper2, BcTransition, Connectivity, Solver, ValuesOnPatch, Patches > Class Template Reference

A class to call all the builders of all the patches once. More...

Public Member Functions

 MultipatchSplineBuilder2D (BuilderOnPatch< Patches > const &... builders)
 Instantiate the MultipatchSplineBuilder from a std::tuple of all the builder on each patch.
 
void operator() (MultipatchSplineCoeffs splines, MultipatchValues const &values, std::optional< MultipatchDerivs1 > derivs_min1=std::nullopt, std::optional< MultipatchDerivs1 > derivs_max1=std::nullopt, std::optional< MultipatchDerivs2 > derivs_min2=std::nullopt, std::optional< MultipatchDerivs2 > derivs_max2=std::nullopt, std::optional< MultipatchDerivs12 > mixed_derivs_min1_min2=std::nullopt, std::optional< MultipatchDerivs12 > mixed_derivs_max1_min2=std::nullopt, std::optional< MultipatchDerivs12 > mixed_derivs_min1_max2=std::nullopt, std::optional< MultipatchDerivs12 > mixed_derivs_max1_max2=std::nullopt) const
 Build the spline representation of each given function.
 

Detailed Description

template<class ExecSpace, class MemorySpace, template< typename P > typename BSpline1OnPatch, template< typename P > typename BSpline2OnPatch, template< typename P > typename Grid1OnPatch, template< typename P > typename Grid2OnPatch, ddc::BoundCond BcLower1, ddc::BoundCond BcUpper1, ddc::BoundCond BcLower2, ddc::BoundCond BcUpper2, ddc::BoundCond BcTransition, class Connectivity, ddc::SplineSolver Solver, template< typename P > typename ValuesOnPatch, class... Patches>
class MultipatchSplineBuilder2D< ExecSpace, MemorySpace, BSpline1OnPatch, BSpline2OnPatch, Grid1OnPatch, Grid2OnPatch, BcLower1, BcUpper1, BcLower2, BcUpper2, BcTransition, Connectivity, Solver, ValuesOnPatch, Patches >

A class to call all the builders of all the patches once.

We need to instantiate all the builders for all the pacthes in the main code. We process the same way for the Field containing the spline coefficients and the values of the function on each patch. The Fields are stored in MultipatchField objects. The builders are stored in this class. This class is instantiated with all the builders. The operator() allows to call all the builders stored in the member of this class in one single line.

This function is useful to avoid calling all the builders individually, especially in a multipatch geometry with several patches.

Template Parameters
ExecSpaceThe space (CPU/GPU) where the calculations are carried out.
MemorySpaceThe space (CPU/GPU) where the coefficients and values are stored.
BSpline1OnPatchA type alias which provides the first BSpline type along which the splines are built.
BSpline2OnPatchA type alias which provides the second BSpline type along which the splines are built.
Grid1OnPatchA type alias which provides the first Grid type along which the interpolation points of the splines are found.
Grid2OnPatchA type alias which provides the second Grid type along which the interpolation points of the splines are found.
BcLower1The lower boundary condition on the first dimension.
BcUpper1The upper boundary condition on the first dimension.
BcLower2The lower boundary condition on the second dimension.
BcUpper2The upper boundary condition on the second dimension.
BcTransitionThe boundary condition used at the interface between 2 patches.
ConnectivityA MultipatchConnectivity object describing the interfaces between patches.
SolverThe SplineSolver giving the backend used to perform the spline approximation. See DDC for more details.
ValuesOnPatchA type alias which provides the field type which will be used to pass the values of the function at the interpolation points. The index range of this field type should contain any batch dimensions.

Constructor & Destructor Documentation

◆ MultipatchSplineBuilder2D()

template<class ExecSpace , class MemorySpace , template< typename P > typename BSpline1OnPatch, template< typename P > typename BSpline2OnPatch, template< typename P > typename Grid1OnPatch, template< typename P > typename Grid2OnPatch, ddc::BoundCond BcLower1, ddc::BoundCond BcUpper1, ddc::BoundCond BcLower2, ddc::BoundCond BcUpper2, ddc::BoundCond BcTransition, class Connectivity , ddc::SplineSolver Solver, template< typename P > typename ValuesOnPatch, class... Patches>
MultipatchSplineBuilder2D< ExecSpace, MemorySpace, BSpline1OnPatch, BSpline2OnPatch, Grid1OnPatch, Grid2OnPatch, BcLower1, BcUpper1, BcLower2, BcUpper2, BcTransition, Connectivity, Solver, ValuesOnPatch, Patches >::MultipatchSplineBuilder2D ( BuilderOnPatch< Patches > const &...  builders)
inlineexplicit

Instantiate the MultipatchSplineBuilder from a std::tuple of all the builder on each patch.

Warning
The builders have to be sorted in the same order as the patches in the tuple.
Parameters
buildersSpline builders for each patch.

Member Function Documentation

◆ operator()()

template<class ExecSpace , class MemorySpace , template< typename P > typename BSpline1OnPatch, template< typename P > typename BSpline2OnPatch, template< typename P > typename Grid1OnPatch, template< typename P > typename Grid2OnPatch, ddc::BoundCond BcLower1, ddc::BoundCond BcUpper1, ddc::BoundCond BcLower2, ddc::BoundCond BcUpper2, ddc::BoundCond BcTransition, class Connectivity , ddc::SplineSolver Solver, template< typename P > typename ValuesOnPatch, class... Patches>
void MultipatchSplineBuilder2D< ExecSpace, MemorySpace, BSpline1OnPatch, BSpline2OnPatch, Grid1OnPatch, Grid2OnPatch, BcLower1, BcUpper1, BcLower2, BcUpper2, BcTransition, Connectivity, Solver, ValuesOnPatch, Patches >::operator() ( MultipatchSplineCoeffs  splines,
MultipatchValues const &  values,
std::optional< MultipatchDerivs1 derivs_min1 = std::nullopt,
std::optional< MultipatchDerivs1 derivs_max1 = std::nullopt,
std::optional< MultipatchDerivs2 derivs_min2 = std::nullopt,
std::optional< MultipatchDerivs2 derivs_max2 = std::nullopt,
std::optional< MultipatchDerivs12 mixed_derivs_min1_min2 = std::nullopt,
std::optional< MultipatchDerivs12 mixed_derivs_max1_min2 = std::nullopt,
std::optional< MultipatchDerivs12 mixed_derivs_min1_max2 = std::nullopt,
std::optional< MultipatchDerivs12 mixed_derivs_max1_max2 = std::nullopt 
) const
inline

Build the spline representation of each given function.

Parameters
[out]splinesMultipatchField of all the Fields pointing to the spline representations.
[in]valuesMultipatchField of all the Fields pointing to the function values.
[in]derivs_min1MultipatchField of all the ConstFields describing the function derivatives in the first dimension at the lower bound of the second dimension.
[in]derivs_max1MultipatchField of all the ConstFields describing the function derivatives in the first dimension at the upper bound of the second dimension.
[in]derivs_min2MultipatchField of all the ConstFields describing the function derivatives in the second dimension at the lower bound of the first dimension.
[in]derivs_max2MultipatchField of all the ConstFields describing the function derivatives in the second dimension at the upper bound of the first dimension.
[in]mixed_derivs_min1_min2The values of the the cross-derivatives at the lower boundary in the first dimension and the lower boundary in the second dimension.
[in]mixed_derivs_max1_min2The values of the the cross-derivatives at the upper boundary in the first dimension and the lower boundary in the second dimension.
[in]mixed_derivs_min1_max2The values of the the cross-derivatives at the lower boundary in the first dimension and the upper boundary in the second dimension.
[in]mixed_derivs_max1_max2The values of the the cross-derivatives at the upper boundary in the first dimension and the upper boundary in the second dimension.

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