7#include "spline_builder.hpp"
56 std::conditional_t<std::is_same_v<IDimX, IDimI1>,
BSpline1,
IDimX>...>;
66 std::is_same_v<IDimX, IDimI2>,
74 using tag_type1 =
typename builder_type1::bsplines_type::tag_type;
78 using tag_type2 =
typename builder_type2::bsplines_type::tag_type;
120 ddc::detail::TypeSeq<
IDimX...>,
121 ddc::detail::TypeSeq<interpolation_mesh_type1, interpolation_mesh_type2>>>;
125 ddc::detail::TypeSeq<
IDimX...>,
126 ddc::detail::TypeSeq<interpolation_mesh_type1, interpolation_mesh_type2>,
127 ddc::detail::TypeSeq<bsplines_type1, bsplines_type2>>>;
132 ddc::detail::TypeSeq<
IDimX...>,
133 ddc::detail::TypeSeq<interpolation_mesh_type2>,
134 ddc::detail::TypeSeq<deriv_type2>>>;
137 ddc::detail::TypeSeq<
IDimX...>,
138 ddc::detail::TypeSeq<interpolation_mesh_type1, interpolation_mesh_type2>,
139 ddc::detail::TypeSeq<deriv_type1, deriv_type2>>>;
292 template <
class Layout>
344 = std::nullopt)
const;
361template <
class Layout>
427 m_spline_builder_deriv1(
451 m_spline_builder_deriv1(
Definition discrete_domain.hpp:51
A DiscreteElement identifies an element of the discrete dimension.
Definition discrete_element.hpp:146
A DiscreteVector is a vector in the discrete dimension.
Definition discrete_vector.hpp:254
Definition kokkos_allocator.hpp:17
A class for creating a 2D spline approximation of a function.
Definition spline_builder_2d.hpp:33
SplineBuilder2D(batched_interpolation_domain_type const &batched_interpolation_domain, std::optional< int > cols_per_chunk=std::nullopt, std::optional< unsigned int > preconditionner_max_block_size=std::nullopt)
Create a new SplineBuilder2D.
Definition spline_builder_2d.hpp:151
ddc::detail::convert_type_seq_to_discrete_domain< ddc::type_seq_replace_t< ddc::detail::TypeSeq< IDimX... >, ddc::detail::TypeSeq< interpolation_mesh_type1, interpolation_mesh_type2 >, ddc::detail::TypeSeq< deriv_type1, deriv_type2 > > > batched_derivs_domain_type
Definition spline_builder_2d.hpp:131
batched_spline_domain_type batched_spline_domain() const noexcept
Definition spline_builder_2d.hpp:242
interpolation_domain_type interpolation_domain() const noexcept
Get the 2D dimension domain from which the approximation is defined.
Definition spline_builder_2d.hpp:214
batched_interpolation_domain_type batched_interpolation_domain() const noexcept
Definition spline_builder_2d.hpp:201
typename builder_type1::deriv_type deriv_type1
Definition spline_builder_2d.hpp:90
ddc::detail::convert_type_seq_to_discrete_domain< ddc::type_seq_replace_t< ddc::detail::TypeSeq< IDimX... >, ddc::detail::TypeSeq< interpolation_mesh_type1, interpolation_mesh_type2 >, ddc::detail::TypeSeq< bsplines_type1, bsplines_type2 > > > batched_spline_domain_type
Definition spline_builder_2d.hpp:121
typename builder_type2::interpolation_mesh_type interpolation_mesh_type2
The type of the interpolation mesh in the second dimension used by this class.
Definition spline_builder_2d.hpp:100
ExecSpace exec_space
Definition spline_builder_2d.hpp:35
ddc::detail::convert_type_seq_to_discrete_domain< ddc::type_seq_replace_t< ddc::detail::TypeSeq< IDimX... >, ddc::detail::TypeSeq< interpolation_mesh_type2 >, ddc::detail::TypeSeq< deriv_type2 > > > batched_derivs_domain_type2
Definition spline_builder_2d.hpp:127
typename builder_type1::batched_derivs_domain_type batched_derivs_domain_type1
Definition spline_builder_2d.hpp:126
~SplineBuilder2D()=default
void operator()(ddc::ChunkSpan< double, batched_spline_domain_type, Layout, memory_space > spline, ddc::ChunkSpan< double const, batched_interpolation_domain_type, Layout, memory_space > vals, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1, Layout, memory_space > > const derivs_min1=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type1, Layout, memory_space > > const derivs_max1=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2, Layout, memory_space > > const derivs_min2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type2, Layout, memory_space > > const derivs_max2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type, Layout, memory_space > > const mixed_derivs_min1_min2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type, Layout, memory_space > > const mixed_derivs_max1_min2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type, Layout, memory_space > > const mixed_derivs_min1_max2=std::nullopt, std::optional< ddc::ChunkSpan< double const, batched_derivs_domain_type, Layout, memory_space > > const mixed_derivs_max1_max2=std::nullopt) const
Build a 2D spline approximation of a function.
Definition spline_builder_2d.hpp:375
ddc::DiscreteDomain< IDimX... > batched_interpolation_domain_type
Definition spline_builder_2d.hpp:115
batch_domain_type batch_domain() const noexcept
Definition spline_builder_2d.hpp:221
typename builder_type2::deriv_type deriv_type2
Definition spline_builder_2d.hpp:91
typename builder_type1::interpolation_mesh_type interpolation_mesh_type1
The type of the interpolation mesh in the first dimension used by this class.
Definition spline_builder_2d.hpp:96
typename builder_type2::interpolation_mesh_type interpolation_domain_type2
The type of the domain for the interpolation mesh is the second dimension used by this class.
Definition spline_builder_2d.hpp:109
typename builder_type2::bsplines_type bsplines_type2
The type of the BSplines in the second dimension which are compatible with this class.
Definition spline_builder_2d.hpp:88
ddc::DiscreteDomain< bsplines_type1, bsplines_type2 > spline_domain() const noexcept
Get the 2D domain on which the approximation is defined.
Definition spline_builder_2d.hpp:234
MemorySpace memory_space
Definition spline_builder_2d.hpp:37
ddc::detail::convert_type_seq_to_discrete_domain< ddc::type_seq_remove_t< ddc::detail::TypeSeq< IDimX... >, ddc::detail::TypeSeq< interpolation_mesh_type1, interpolation_mesh_type2 > > > batch_domain_type
Definition spline_builder_2d.hpp:117
ddc::DiscreteDomain< interpolation_mesh_type1, interpolation_mesh_type2 > interpolation_domain_type
The type of the domain for the interpolation mesh is the 2D dimension used by this class.
Definition spline_builder_2d.hpp:113
SplineBuilder2D & operator=(SplineBuilder2D const &x)=delete
typename builder_type1::bsplines_type bsplines_type1
The type of the BSplines in the first dimension which are compatible with this class.
Definition spline_builder_2d.hpp:84
typename builder_type1::interpolation_mesh_type interpolation_domain_type1
The type of the domain for the interpolation mesh is the first dimension used by this class.
Definition spline_builder_2d.hpp:105
batched_interpolation_domain_type batched_interpolation_domain() const noexcept
Definition spline_builder.hpp:193
interpolation_domain_type interpolation_domain() const noexcept
Get the domain from which the approximation is defined.
Definition spline_builder.hpp:206
batched_spline_domain_type batched_spline_domain() const noexcept
Get the domain on which the approximation is defined.
Definition spline_builder.hpp:229
IDimI1 interpolation_mesh_type
The type of the interpolation mesh used by this class.
Definition spline_builder.hpp:66
ddc::SplineBuilder< ExecSpace, MemorySpace, BSpline2, IDimI2, BcXmin2, BcXmax2, Solver, std::conditional_t< std::is_same_v< IDimX, IDimI1 >, BSpline1, IDimX >... >::deriv_type ddc::Deriv< tag_type > deriv_type
Definition spline_builder.hpp:73
typename ddc::detail::convert_type_seq_to_discrete_domain< ddc::type_seq_replace_t< ddc::detail::TypeSeq< IDimX... >, ddc::detail::TypeSeq< interpolation_mesh_type >, ddc::detail::TypeSeq< deriv_type > > > batched_derivs_domain_type
Definition spline_builder.hpp:100
BSpline1 bsplines_type
The type of the BSplines which are compatible with this class.
Definition spline_builder.hpp:71
The top-level namespace of DDC.
Definition aligned_allocator.hpp:11
constexpr bool enable_chunk
Definition chunk_traits.hpp:16
BoundCond
Definition spline_boundary_conditions.hpp:11
SplineSolver
Definition spline_builder.hpp:13
KOKKOS_FUNCTION constexpr auto remove_dims_of(DiscreteDomain< DDimsA... > const &DDom_a, DiscreteDomain< DDimsB... > const &DDom_b) noexcept
Definition discrete_domain.hpp:438
KOKKOS_FUNCTION constexpr auto replace_dim_of(DiscreteDomain< DDimsA... > const &DDom_a, DiscreteDomain< DDimsB... > const &DDom_b) noexcept
Definition discrete_domain.hpp:485
Definition chunk_span.hpp:30