DDC 0.8.0
Loading...
Searching...
No Matches
ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver > Class Template Reference

A class for creating a 3D spline approximation of a function. More...

#include <spline_builder_3d.hpp>

Collaboration diagram for ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >:
Collaboration graph

Public Types

using exec_space = ExecSpace
 The type of the Kokkos execution space used by this class.
 
using memory_space = MemorySpace
 The type of the Kokkos memory space used by this class.
 
using builder_type1 = ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline1, DDimI1, BcLower1, BcUpper1, Solver >
 The type of the SplineBuilder used by this class to spline-approximate along first dimension.
 
using builder_type2 = ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline2, DDimI2, BcLower2, BcUpper2, Solver >
 The type of the SplineBuilder used by this class to spline-approximate along second dimension.
 
using builder_type3 = ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline3, DDimI3, BcLower3, BcUpper3, Solver >
 The type of the SplineBuilder used by this class to spline-approximate along third dimension.
 
using builder_deriv_type1 = ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline1, DDimI1, BcLower1, BcUpper1, Solver >
 The type of the SplineBuilder used by this class to spline-approximate the second-dimension-derivatives along first dimension.
 
using builder_deriv_type2 = ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline2, DDimI2, BcLower2, BcUpper2, Solver >
 The type of the SplineBuilder used by this class to spline-approximate the third-dimension-derivatives along second dimension.
 
using continuous_dimension_type1 = typename builder_type1::continuous_dimension_type
 The type of the first interpolation continuous dimension.
 
using continuous_dimension_type2 = typename builder_type2::continuous_dimension_type
 The type of the second interpolation continuous dimension.
 
using continuous_dimension_type3 = typename builder_type3::continuous_dimension_type
 The type of the third interpolation continuous dimension.
 
using interpolation_discrete_dimension_type1 = typename builder_type1::interpolation_discrete_dimension_type
 The type of the first interpolation discrete dimension.
 
using interpolation_discrete_dimension_type2 = typename builder_type2::interpolation_discrete_dimension_type
 The type of the second interpolation discrete dimension.
 
using interpolation_discrete_dimension_type3 = typename builder_type3::interpolation_discrete_dimension_type
 The type of the third interpolation discrete dimension.
 
using bsplines_type1 = typename builder_type1::bsplines_type
 The type of the B-splines in the first dimension.
 
using bsplines_type2 = typename builder_type2::bsplines_type
 The type of the B-splines in the second dimension.
 
using bsplines_type3 = typename builder_type3::bsplines_type
 The type of the B-splines in the third dimension.
 
using deriv_type1 = typename builder_type1::deriv_type
 The type of the Deriv domain on boundaries in the first dimension.
 
using deriv_type2 = typename builder_type2::deriv_type
 The type of the Deriv domain on boundaries in the second dimension.
 
using deriv_type3 = typename builder_type3::deriv_type
 The type of the Deriv domain on boundaries in the third dimension.
 
using interpolation_domain_type1 = typename builder_type1::interpolation_discrete_dimension_type
 The type of the domain for the interpolation mesh in the first dimension.
 
using interpolation_domain_type2 = typename builder_type2::interpolation_discrete_dimension_type
 The type of the domain for the interpolation mesh in the second dimension.
 
using interpolation_domain_type3 = typename builder_type3::interpolation_discrete_dimension_type
 The type of the domain for the interpolation mesh in the third dimension.
 
using interpolation_domain_type = ddc::DiscreteDomain< interpolation_discrete_dimension_type1, interpolation_discrete_dimension_type2, interpolation_discrete_dimension_type3 >
 The type of the domain for the interpolation mesh in the 3D dimension.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_interpolation_domain_type = BatchedInterpolationDDom
 The type of the whole domain representing interpolation points.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batch_domain_type = ddc::remove_dims_of_t< BatchedInterpolationDDom, interpolation_discrete_dimension_type1, interpolation_discrete_dimension_type2, interpolation_discrete_dimension_type3 >
 The type of the batch domain (obtained by removing the dimensions of interest from the whole domain).
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_spline_domain_type = ddc::detail::convert_type_seq_to_discrete_domain_t< ddc::type_seq_replace_t< ddc::to_type_seq_t< BatchedInterpolationDDom >, ddc::detail::TypeSeq< interpolation_discrete_dimension_type1, interpolation_discrete_dimension_type2, interpolation_discrete_dimension_type3 >, ddc::detail::TypeSeq< bsplines_type1, bsplines_type2, bsplines_type3 > > >
 The type of the whole spline domain (cartesian product of 3D spline domain and batch domain) preserving the order of dimensions.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_derivs_domain_type1 = typename builder_type1::template batched_derivs_domain_type< BatchedInterpolationDDom >
 The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the first dimension, preserving the order of dimensions.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_derivs_domain_type2 = ddc::replace_dim_of_t< BatchedInterpolationDDom, interpolation_discrete_dimension_type2, deriv_type2 >
 The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the second dimension, preserving the order of dimensions.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_derivs_domain_type3 = ddc::replace_dim_of_t< BatchedInterpolationDDom, interpolation_discrete_dimension_type3, deriv_type3 >
 The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the third dimension, preserving the order of dimensions.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using batched_derivs_domain_type = ddc::detail::convert_type_seq_to_discrete_domain_t< ddc::type_seq_replace_t< ddc::to_type_seq_t< BatchedInterpolationDDom >, ddc::detail::TypeSeq< interpolation_discrete_dimension_type1, interpolation_discrete_dimension_type2, interpolation_discrete_dimension_type3 >, ddc::detail::TypeSeq< deriv_type1, deriv_type2, deriv_type3 > > >
 The type of the whole Derivs domain (cartesian product of the 3D Deriv domain and the batch domain), preserving the order of dimensions.
 

Public Member Functions

 SplineBuilder3D (interpolation_domain_type const &interpolation_domain, std::optional< std::size_t > cols_per_chunk=std::nullopt, std::optional< unsigned int > preconditioner_max_block_size=std::nullopt)
 Build a SplineBuilder3D acting on interpolation_domain.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
 SplineBuilder3D (BatchedInterpolationDDom const &batched_interpolation_domain, std::optional< std::size_t > cols_per_chunk=std::nullopt, std::optional< unsigned int > preconditioner_max_block_size=std::nullopt)
 Build a SplineBuilder3D acting on the interpolation domain contained in batched_interpolation_domain.
 
 SplineBuilder3D (SplineBuilder3D const &x)=delete
 Copy-constructor is deleted.
 
 SplineBuilder3D (SplineBuilder3D &&x)=default
 Move-constructs.
 
 ~SplineBuilder3D ()=default
 Destructs.
 
SplineBuilder3Doperator= (SplineBuilder3D const &x)=delete
 Copy-assignment is deleted.
 
SplineBuilder3Doperator= (SplineBuilder3D &&x)=default
 Move-assigns.
 
interpolation_domain_type interpolation_domain () const noexcept
 Get the domain for the 3D interpolation mesh used by this class.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
BatchedInterpolationDDom batched_interpolation_domain (BatchedInterpolationDDom const &batched_interpolation_domain) const noexcept
 Get the whole domain representing interpolation points.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
batch_domain_type< BatchedInterpolationDDombatch_domain (BatchedInterpolationDDom const &batched_interpolation_domain) const noexcept
 Get the batch domain.
 
ddc::DiscreteDomain< bsplines_type1, bsplines_type2, bsplines_type3spline_domain () const noexcept
 Get the 3D domain on which spline coefficients are defined.
 
template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
batched_spline_domain_type< BatchedInterpolationDDombatched_spline_domain (BatchedInterpolationDDom const &batched_interpolation_domain) const noexcept
 Get the whole domain on which spline coefficients are defined.
 
template<class Layout , class BatchedInterpolationDDom >
void operator() (ddc::ChunkSpan< double, batched_spline_domain_type< BatchedInterpolationDDom >, Layout, memory_space > spline, ddc::ChunkSpan< double const, BatchedInterpolationDDom, Layout, memory_space > vals, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1< BatchedInterpolationDDom >, Layout, memory_space > > derivs_min1=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1< BatchedInterpolationDDom >, Layout, memory_space > > derivs_max1=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2< BatchedInterpolationDDom >, Layout, memory_space > > derivs_min2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2< BatchedInterpolationDDom >, Layout, memory_space > > derivs_max2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type3< BatchedInterpolationDDom >, Layout, memory_space > > derivs_min3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type3< BatchedInterpolationDDom >, Layout, memory_space > > derivs_max3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_min1_min2_min3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_max1_min2_min3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_min1_max2_min3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_max1_max2_min3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_min1_min2_max3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_max1_min2_max3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_min1_max2_max3=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > > mixed_derivs_max1_max2_max3=std::nullopt) const
 Compute a 3D spline approximation of a function.
 

Detailed Description

template<class ExecSpace, class MemorySpace, class BSpline1, class BSpline2, class BSpline3, class DDimI1, class DDimI2, class DDimI3, ddc::BoundCond BcLower1, ddc::BoundCond BcUpper1, ddc::BoundCond BcLower2, ddc::BoundCond BcUpper2, ddc::BoundCond BcLower3, ddc::BoundCond BcUpper3, ddc::SplineSolver Solver>
class ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >

A class for creating a 3D spline approximation of a function.

A class which contains an operator () which can be used to build a 3D spline approximation of a function. A 3D spline approximation uses a cross-product between three 1D SplineBuilder.

See also
SplineBuilder

Definition at line 42 of file spline_builder_3d.hpp.

Member Typedef Documentation

◆ exec_space

The type of the Kokkos execution space used by this class.

Definition at line 46 of file spline_builder_3d.hpp.

◆ memory_space

The type of the Kokkos memory space used by this class.

Definition at line 49 of file spline_builder_3d.hpp.

◆ builder_type1

The type of the SplineBuilder used by this class to spline-approximate along first dimension.

Definition at line 52 of file spline_builder_3d.hpp.

◆ builder_type2

The type of the SplineBuilder used by this class to spline-approximate along second dimension.

Definition at line 56 of file spline_builder_3d.hpp.

◆ builder_type3

The type of the SplineBuilder used by this class to spline-approximate along third dimension.

Definition at line 60 of file spline_builder_3d.hpp.

◆ builder_deriv_type1

The type of the SplineBuilder used by this class to spline-approximate the second-dimension-derivatives along first dimension.

Definition at line 64 of file spline_builder_3d.hpp.

◆ builder_deriv_type2

The type of the SplineBuilder used by this class to spline-approximate the third-dimension-derivatives along second dimension.

Definition at line 68 of file spline_builder_3d.hpp.

◆ continuous_dimension_type1

◆ continuous_dimension_type2

◆ continuous_dimension_type3

◆ interpolation_discrete_dimension_type1

◆ interpolation_discrete_dimension_type2

◆ interpolation_discrete_dimension_type3

◆ bsplines_type1

◆ bsplines_type2

◆ bsplines_type3

◆ deriv_type1

◆ deriv_type2

◆ deriv_type3

◆ interpolation_domain_type1

The type of the domain for the interpolation mesh in the first dimension.

Definition at line 111 of file spline_builder_3d.hpp.

◆ interpolation_domain_type2

The type of the domain for the interpolation mesh in the second dimension.

Definition at line 115 of file spline_builder_3d.hpp.

◆ interpolation_domain_type3

The type of the domain for the interpolation mesh in the third dimension.

Definition at line 119 of file spline_builder_3d.hpp.

◆ interpolation_domain_type

◆ batched_interpolation_domain_type

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::batched_interpolation_domain_type = BatchedInterpolationDDom

The type of the whole domain representing interpolation points.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Definition at line 136 of file spline_builder_3d.hpp.

◆ batch_domain_type

The type of the batch domain (obtained by removing the dimensions of interest from the whole domain).

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y and Z, this is DiscreteDomain<T>.

Definition at line 150 of file spline_builder_3d.hpp.

◆ batched_spline_domain_type

The type of the whole spline domain (cartesian product of 3D spline domain and batch domain) preserving the order of dimensions.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y and Z (associated to B-splines tags BSplinesX, BSplinesY and BSplinesZ), this is DiscreteDomain<BSplinesX, BSplinesY, BSplinesZ, T>

Definition at line 168 of file spline_builder_3d.hpp.

◆ batched_derivs_domain_type1

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
using ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::batched_derivs_domain_type1 = typename builder_type1::template batched_derivs_domain_type<BatchedInterpolationDDom>

The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the first dimension, preserving the order of dimensions.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y and Z, this is DiscreteDomain<Deriv<X>, Y, Z, T>.

Definition at line 189 of file spline_builder_3d.hpp.

◆ batched_derivs_domain_type2

The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the second dimension, preserving the order of dimensions.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y, and Z this is DiscreteDomain<X, Deriv<Y>, Z, T>.

Definition at line 204 of file spline_builder_3d.hpp.

◆ batched_derivs_domain_type3

The type of the whole Derivs domain (cartesian product of the 1D Deriv domain and the associated batch domain) in the third dimension, preserving the order of dimensions.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y, and Z this is DiscreteDomain<X, Y, Deriv<Z>, T>.

Definition at line 221 of file spline_builder_3d.hpp.

◆ batched_derivs_domain_type

The type of the whole Derivs domain (cartesian product of the 3D Deriv domain and the batch domain), preserving the order of dimensions.

Template Parameters
Thebatched discrete domain on which the interpolation points are defined.

Example: For batched_interpolation_domain_type = DiscreteDomain<X,Y,Z,T> and dimensions of interest X, Y and Z, this is DiscreteDomain<Deriv<X>, Deriv<Y>, Deriv<Z>, T>.

Definition at line 238 of file spline_builder_3d.hpp.

Constructor & Destructor Documentation

◆ SplineBuilder3D() [1/4]

ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::SplineBuilder3D ( interpolation_domain_type const interpolation_domain,
std::optional< std::size_t >  cols_per_chunk = std::nullopt,
std::optional< unsigned int preconditioner_max_block_size = std::nullopt 
)
inlineexplicit

Build a SplineBuilder3D acting on interpolation_domain.

Parameters
interpolation_domainThe domain on which the interpolation points are defined, without the batch dimensions.
cols_per_chunkA parameter used by the slicer (internal to the solver) to define the size of a chunk of right-hand-sides of the linear problem to be computed in parallel (chunks are treated by the linear solver one-after-the-other). This value is optional. If no value is provided then the default value is chosen by the requested solver.
preconditioner_max_block_sizeA parameter used by the slicer (internal to the solver) to define the size of a block used by the Block-Jacobi preconditioner. This value is optional. If no value is provided then the default value is chosen by the requested solver.
See also
SplinesLinearProblemSparse

Definition at line 271 of file spline_builder_3d.hpp.

◆ SplineBuilder3D() [2/4]

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::SplineBuilder3D ( BatchedInterpolationDDom const batched_interpolation_domain,
std::optional< std::size_t >  cols_per_chunk = std::nullopt,
std::optional< unsigned int preconditioner_max_block_size = std::nullopt 
)
inlineexplicit

Build a SplineBuilder3D acting on the interpolation domain contained in batched_interpolation_domain.

Parameters
batched_interpolation_domainThe domain on which the interpolation points are defined.
cols_per_chunkA parameter used by the slicer (internal to the solver) to define the size of a chunk of right-hand-sides of the linear problem to be computed in parallel (chunks are treated by the linear solver one-after-the-other). This value is optional. If no value is provided then the default value is chosen by the requested solver.
preconditioner_max_block_sizeA parameter used by the slicer (internal to the solver) to define the size of a block used by the Block-Jacobi preconditioner. This value is optional. If no value is provided then the default value is chosen by the requested solver.
See also
SplinesLinearProblemSparse

Definition at line 302 of file spline_builder_3d.hpp.

◆ SplineBuilder3D() [3/4]

◆ SplineBuilder3D() [4/4]

◆ ~SplineBuilder3D()

Member Function Documentation

◆ operator=() [1/2]

◆ operator=() [2/2]

◆ interpolation_domain()

Get the domain for the 3D interpolation mesh used by this class.

This is 3D because it is defined along the dimensions of interest.

Returns
The 3D domain for the interpolation mesh.

Definition at line 343 of file spline_builder_3d.hpp.

◆ batched_interpolation_domain()

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
BatchedInterpolationDDom ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::batched_interpolation_domain ( BatchedInterpolationDDom const batched_interpolation_domain) const
inlinenoexcept

Get the whole domain representing interpolation points.

Values of the function must be provided on this domain in order to build a spline representation of the function (cartesian product of 3D interpolation_domain and batch_domain).

Parameters
batched_interpolation_domainThe whole domain on which the interpolation points are defined.
Returns
The domain for the interpolation mesh.

Definition at line 367 of file spline_builder_3d.hpp.

◆ batch_domain()

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
batch_domain_type< BatchedInterpolationDDom > ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::batch_domain ( BatchedInterpolationDDom const batched_interpolation_domain) const
inlinenoexcept

Get the batch domain.

Obtained by removing the dimensions of interest from the whole interpolation domain.

Parameters
batched_interpolation_domainThe whole domain on which the interpolation points are defined.
Returns
The batch domain.

Definition at line 386 of file spline_builder_3d.hpp.

◆ spline_domain()

Get the 3D domain on which spline coefficients are defined.

The 3D spline domain corresponding to the dimensions of interest.

Returns
The 3D domain for the spline coefficients.

Definition at line 400 of file spline_builder_3d.hpp.

◆ batched_spline_domain()

template<class BatchedInterpolationDDom , class = std::enable_if_t<ddc::is_discrete_domain_v<BatchedInterpolationDDom>>>
batched_spline_domain_type< BatchedInterpolationDDom > ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::batched_spline_domain ( BatchedInterpolationDDom const batched_interpolation_domain) const
inlinenoexcept

Get the whole domain on which spline coefficients are defined.

Spline approximations (spline-transformed functions) are computed on this domain.

Parameters
batched_interpolation_domainThe whole domain on which the interpolation points are defined.
Returns
The domain for the spline coefficients.

Definition at line 421 of file spline_builder_3d.hpp.

◆ operator()()

void ddc::SplineBuilder3D< ExecSpace, MemorySpace, BSpline1, BSpline2, BSpline3, DDimI1, DDimI2, DDimI3, BcLower1, BcUpper1, BcLower2, BcUpper2, BcLower3, BcUpper3, Solver >::operator() ( ddc::ChunkSpan< double, batched_spline_domain_type< BatchedInterpolationDDom >, Layout, memory_space spline,
ddc::ChunkSpan< double const, BatchedInterpolationDDom, Layout, memory_space vals,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_min1 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_max1 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_min2 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_max2 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type3< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_min3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type3< BatchedInterpolationDDom >, Layout, memory_space > >  derivs_max3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_min1_min2_min3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_max1_min2_min3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_min1_max2_min3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_max1_max2_min3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_min1_min2_max3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_max1_min2_max3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_min1_max2_max3 = std::nullopt,
std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type< BatchedInterpolationDDom >, Layout, memory_space > >  mixed_derivs_max1_max2_max3 = std::nullopt 
) const

Compute a 3D spline approximation of a function.

Use the values of a function (defined on SplineBuilder3D::batched_interpolation_domain) and the derivatives of the function at the boundaries (in the case of BoundCond::HERMITE only) to calculate a 3D spline approximation of this function.

The spline approximation is stored as a ChunkSpan of coefficients associated with B-splines.

Parameters
[out]splineThe coefficients of the spline computed by this SplineBuilder.
[in]valsThe values of the function at the interpolation mesh.
[in]derivs_min1The values of the derivatives at the lower boundary in the first dimension.
[in]derivs_max1The values of the derivatives at the upper boundary in the first dimension.
[in]derivs_min2The values of the derivatives at the lower boundary in the second dimension.
[in]derivs_max2The values of the derivatives at the upper boundary in the second dimension.
[in]derivs_min3The values of the derivatives at the lower boundary in the third dimension.
[in]derivs_max3The values of the derivatives at the upper boundary in the third dimension.
[in]mixed_derivs_min1_min2_min3The values of the the cross-derivatives at the lower boundary in the first dimension, the lower boundary in the second dimension and the lower boundary in the third dimension.
[in]mixed_derivs_max1_min2_min3The values of the the cross-derivatives at the upper boundary in the first dimension, the lower boundary in the second dimension and the lower boundary in the third dimension.
[in]mixed_derivs_min1_max2_min3The values of the the cross-derivatives at the lower boundary in the first dimension, the upper boundary in the second dimension and the lower boundary in the third dimension.
[in]mixed_derivs_max1_max2_min3The values of the the cross-derivatives at the upper boundary in the first dimension, the upper boundary in the second dimension and the lower boundary in the third dimension.
[in]mixed_derivs_min1_min2_max3The values of the the cross-derivatives at the lower boundary in the first dimension, the lower boundary in the second dimension and the upper boundary in the third dimension.
[in]mixed_derivs_max1_min2_max3The values of the the cross-derivatives at the upper boundary in the first dimension, the lower boundary in the second dimension and the upper boundary in the third dimension.
[in]mixed_derivs_min1_max2_max3The values of the the cross-derivatives at the lower boundary in the first dimension, the upper boundary in the second dimension and the upper boundary in the third dimension.
[in]mixed_derivs_max1_max2_max3The values of the the cross-derivatives at the upper boundary in the first dimension, the upper boundary in the second dimension and the upper boundary in the third dimension.

Definition at line 605 of file spline_builder_3d.hpp.


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