4#include <ddc/kernels/splines.hpp>
6#include <sll/polar_bsplines.hpp>
8#include "ddc_alias_inline_functions.hpp"
9#include "ddc_aliases.hpp"
10#include "ddc_helper.hpp"
11#include "directional_tag.hpp"
12#include "vector_field.hpp"
13#include "vector_field_mem.hpp"
74using CoordR = Coord<R>;
75using CoordTheta = Coord<Theta>;
76using CoordRTheta = Coord<R, Theta>;
78using CoordVr = Coord<Vr>;
79using CoordVtheta = Coord<Vtheta>;
82int constexpr BSDegreeR = 3;
83int constexpr BSDegreeP = 3;
85bool constexpr BsplineOnUniformCellsR =
false;
86bool constexpr BsplineOnUniformCellsP =
false;
90 BsplineOnUniformCellsR,
91 ddc::UniformBSplines<R, BSDegreeR>,
92 ddc::NonUniformBSplines<R, BSDegreeR>>
97 BsplineOnUniformCellsP,
98 ddc::UniformBSplines<Theta, BSDegreeP>,
99 ddc::NonUniformBSplines<Theta, BSDegreeP>>
106ddc::BoundCond
constexpr SplineRBoundary = ddc::BoundCond::GREVILLE;
107ddc::BoundCond
constexpr SplinePBoundary = ddc::BoundCond::PERIODIC;
109using SplineInterpPointsR
110 = ddc::GrevilleInterpolationPoints<BSplinesR, SplineRBoundary, SplineRBoundary>;
111using SplineInterpPointsTheta
112 = ddc::GrevilleInterpolationPoints<BSplinesTheta, SplinePBoundary, SplinePBoundary>;
115struct GridR : SplineInterpPointsR::interpolation_discrete_dimension_type
118struct GridTheta : SplineInterpPointsTheta::interpolation_discrete_dimension_type
123using SplineRThetaBuilder = ddc::SplineBuilder2D<
124 Kokkos::DefaultHostExecutionSpace,
134 ddc::SplineSolver::LAPACK,
138using SplineRThetaEvaluatorConstBound = ddc::SplineEvaluator2D<
139 Kokkos::DefaultHostExecutionSpace,
145 ddc::ConstantExtrapolationRule<R, Theta>,
146 ddc::ConstantExtrapolationRule<R, Theta>,
147 ddc::PeriodicExtrapolationRule<Theta>,
148 ddc::PeriodicExtrapolationRule<Theta>,
152using SplineRThetaEvaluatorNullBound = ddc::SplineEvaluator2D<
153 Kokkos::DefaultHostExecutionSpace,
159 ddc::NullExtrapolationRule,
160 ddc::NullExtrapolationRule,
161 ddc::PeriodicExtrapolationRule<Theta>,
162 ddc::PeriodicExtrapolationRule<Theta>,
168using IdxR = Idx<GridR>;
169using IdxTheta = Idx<GridTheta>;
170using IdxRTheta = Idx<GridR, GridTheta>;
173using IdxStepR = IdxStep<GridR>;
174using IdxStepTheta = IdxStep<GridTheta>;
175using IdxStepRTheta = IdxStep<GridR, GridTheta>;
178using IdxRangeR = IdxRange<GridR>;
179using IdxRangeTheta = IdxRange<GridTheta>;
180using IdxRangeRTheta = IdxRange<GridR, GridTheta>;
182using IdxRangeBSR = IdxRange<BSplinesR>;
183using IdxRangeBSTheta = IdxRange<BSplinesTheta>;
184using IdxRangeBSRTheta = IdxRange<BSplinesR, BSplinesTheta>;
185using IdxRangeBSPolar = IdxRange<PolarBSplinesRTheta>;
189template <
class ElementType>
190using FieldMemR = FieldMem<ElementType, IdxRangeR>;
192template <
class ElementType>
193using FieldMemTheta = FieldMem<ElementType, IdxRangeTheta>;
195template <
class ElementType>
196using FieldMemRTheta = FieldMem<ElementType, IdxRangeRTheta>;
198using DFieldMemR = FieldMemR<double>;
199using DFieldMemTheta = FieldMemTheta<double>;
200using DFieldMemRTheta = FieldMemRTheta<double>;
203template <
class ElementType>
204using FieldR = Field<ElementType, IdxRangeR>;
206template <
class ElementType>
207using FieldTheta = Field<ElementType, IdxRangeTheta>;
210template <
class ElementType>
211using FieldRTheta = Field<ElementType, IdxRangeRTheta, Kokkos::HostSpace>;
213using DFieldR = FieldR<double>;
214using DFieldTheta = FieldTheta<double>;
215using DFieldRTheta = FieldRTheta<double>;
218template <
class ElementType>
219using ConstFieldR = ConstField<ElementType, IdxRangeR>;
221template <
class ElementType>
222using ConstFieldTheta = ConstField<ElementType, IdxRangeTheta>;
224template <
class ElementType>
225using ConstFieldRTheta = ConstField<ElementType, IdxRangeRTheta>;
227using DConstFieldR = ConstFieldR<double>;
228using DConstFieldTheta = ConstFieldTheta<double>;
229using DConstFieldRTheta = ConstFieldRTheta<double>;
232using Spline2DMem = DFieldMem<IdxRangeBSRTheta>;
233using Spline2D = DField<IdxRangeBSRTheta>;
234using ConstSpline2D = DConstField<IdxRangeBSRTheta>;
246using IdxPolarBspl = Idx<PolarBSplinesRTheta>;
250template <
class Dim1,
class Dim2>
253template <
class Dim1,
class Dim2>
256template <
class Dim1,
class Dim2>
261template <
class Dim1,
class Dim2>
264template <
class Dim1,
class Dim2>
267template <
class Dim1,
class Dim2>
321using CoordX = Coord<X>;
322using CoordY = Coord<Y>;
323using CoordXY = Coord<X, Y>;
325using CoordVx = Coord<Vx>;
326using CoordVy = Coord<Vy>;
A class containing all information describing polar bsplines.
Definition polar_bsplines.hpp:28
Pre-declaration of VectorFieldMem.
Definition vector_field_mem.hpp:54
A class which holds multiple (scalar) fields in order to represent a vector field.
Definition vector_field.hpp:64
Definition geometry.hpp:93
Definition geometry.hpp:100
Definition geometry.hpp:116
Definition geometry.hpp:119
Definition geometry.hpp:103
A structure containing the two Chunks necessary to define a spline on a set of polar basis splines.
Definition polar_spline.hpp:20
Define non periodic real R dimension.
Definition geometry.hpp:31
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:36
Define periodic real Theta dimension.
Definition geometry.hpp:42
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:47
Define non periodic real R velocity dimension.
Definition geometry.hpp:54
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:59
Define periodic real Theta velocity dimension.
Definition geometry.hpp:65
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:70
Define non periodic real X velocity dimension.
Definition geometry.hpp:301
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:306
Define non periodic real Y velocity dimension.
Definition geometry.hpp:312
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:317
Define non periodic real X dimension.
Definition geometry.hpp:278
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:283
Define non periodic real Y dimension.
Definition geometry.hpp:289
static bool constexpr PERIODIC
Define periodicity of the dimension.
Definition geometry.hpp:294