Skip to content

Commit

Permalink
Clean up PolarBSplines
Browse files Browse the repository at this point in the history
Remove unnecessary arguments from PolarBSplines and remove the associated type declarations.

See merge request gysela-developpers/gyselalibxx!435

--------------------------------------------
  • Loading branch information
EmilyBourne committed Apr 3, 2024
1 parent 13203ff commit cddd886
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 82 deletions.
4 changes: 1 addition & 3 deletions simulations/geometryRTheta/diocotron/diocotron.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,6 @@ int main(int argc, char** argv)


// OPERATORS ======================================================================================
SplineRBuilder const r_builder(interpolation_domain_R);
SplinePBuilder const p_builder(interpolation_domain_P);
SplineRPBuilder const builder(grid);

// --- Define the mapping. ------------------------------------------------------------------------
Expand All @@ -156,7 +154,7 @@ int main(int argc, char** argv)
DiscreteMapping const discrete_mapping
= DiscreteMapping::analytical_to_discrete(mapping, builder, spline_evaluator_extrapol);

ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping, r_builder, p_builder);
ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping);

BSDomainRP const dom_bsplinesRP = builder.spline_domain();

Expand Down
4 changes: 1 addition & 3 deletions simulations/geometryRTheta/vortex_merger/vortex_merger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,6 @@ int main(int argc, char** argv)


// OPERATORS ======================================================================================
SplineRBuilder const r_builder(interpolation_domain_R);
SplinePBuilder const p_builder(interpolation_domain_P);
SplineRPBuilder const builder(grid);

// --- Define the mapping. ------------------------------------------------------------------------
Expand All @@ -151,7 +149,7 @@ int main(int argc, char** argv)
DiscreteMapping const discrete_mapping
= DiscreteMapping::analytical_to_discrete(mapping, builder, spline_evaluator_extrapol);

ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping, r_builder, p_builder);
ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping);

BSDomainRP const dom_bsplinesRP = builder.spline_domain();

Expand Down
18 changes: 0 additions & 18 deletions src/geometryRTheta/geometry/geometry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,6 @@ using SplineInterpPointsR
using SplineInterpPointsP
= ddc::GrevilleInterpolationPoints<BSplinesP, SplinePBoundary, SplinePBoundary>;

using SplineRBuilder = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesR,
IDimR,
SplineRBoundary, // boundary at r=0
SplineRBoundary, // boundary at rmax
ddc::SplineSolver::GINKGO,
IDimR>;
using SplinePBuilder = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesP,
IDimP,
SplinePBoundary,
SplinePBoundary,
ddc::SplineSolver::GINKGO,
IDimP>;
using SplineRPBuilder = ddc::SplineBuilder2D<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,6 @@ TEST(AdvectionFieldRPComputation, TestAdvectionFieldFinder)


// OPERATORS ======================================================================================
SplineRBuilder const r_builder(interpolation_domain_R);
SplinePBuilder const p_builder(interpolation_domain_P);
SplineRPBuilder const builder(grid);

ddc::ConstantExtrapolationRule<RDimR, RDimP> boundary_condition_r_left(r_min);
Expand All @@ -136,7 +134,7 @@ TEST(AdvectionFieldRPComputation, TestAdvectionFieldFinder)
DiscreteMapping const discrete_mapping
= DiscreteMapping::analytical_to_discrete(mapping, builder, spline_evaluator_extrapol);

ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping, r_builder, p_builder);
ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping);


// --- Advection operator -------------------------------------------------------------------------
Expand Down
4 changes: 1 addition & 3 deletions tests/geometryRTheta/polar_poisson/polarpoissonfemsolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,6 @@ int main(int argc, char** argv)
IDomainP interpolation_domain_P(SplineInterpPointsP::get_domain());
IDomainRP grid(interpolation_domain_R, interpolation_domain_P);

SplineRBuilder const r_builder(interpolation_domain_R);
SplinePBuilder const p_builder(interpolation_domain_P);
SplineRPBuilder const builder(grid);

#if defined(CIRCULAR_MAPPING)
Expand All @@ -114,7 +112,7 @@ int main(int argc, char** argv)
DiscreteMapping const discrete_mapping
= DiscreteMapping::analytical_to_discrete(mapping, builder, evaluator);

ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping, r_builder, p_builder);
ddc::init_discrete_space<PolarBSplinesRP>(discrete_mapping);

auto dom_bsplinesRP = builder.spline_domain();

Expand Down
19 changes: 19 additions & 0 deletions tests/geometryRTheta/quadrature/tests_L1_and_L2_norms.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,25 @@ void launch_tests(
std::array<std::array<double, 2>, 5> const& expected_norms,
std::array<std::array<double, 2>, 5> const& TOLs)
{
using SplineRBuilder = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesR,
IDimR,
ddc::BoundCond::GREVILLE, // boundary at r=0
ddc::BoundCond::GREVILLE, // boundary at rmax
ddc::SplineSolver::GINKGO,
IDimR>;
using SplinePBuilder = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesP,
IDimP,
ddc::BoundCond::PERIODIC,
ddc::BoundCond::PERIODIC,
ddc::SplineSolver::GINKGO,
IDimP>;

SplineRBuilder r_builder(ddc::select<IDimR>(builder.interpolation_domain()));
SplinePBuilder p_builder(ddc::select<IDimP>(builder.interpolation_domain()));
// Test spline quadrature: ------------------------------------------------------------------------
Expand Down
18 changes: 8 additions & 10 deletions vendor/sll/include/sll/polar_bsplines.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,9 @@ class PolarBSplines
* @param curvilinear_to_cartesian A mapping from curvilinear to cartesian coordinates. This is used to find the
* singular point and determine the Barycentric coordinates which are used to define
* the new basis splines which cross the singular point.
* @param spline_builder_r A class which can be used to construct the coefficients of a radial bspline.
* @param spline_builder_p A class which can be used to construct the coefficients of a poloidal bspline.
*/
template <class DiscreteMapping, class SplineBuilderR, class SplineBuilderP>
Impl(const DiscreteMapping& curvilinear_to_cartesian,
SplineBuilderR const& spline_builder_r,
SplineBuilderP const& spline_builder_p)
template <class DiscreteMapping>
Impl(const DiscreteMapping& curvilinear_to_cartesian)
{
using DimX = typename DiscreteMapping::cartesian_tag_x;
using DimY = typename DiscreteMapping::cartesian_tag_y;
Expand Down Expand Up @@ -307,9 +303,11 @@ class PolarBSplines
ddc::DiscreteElement<BernsteinBasis> {0},
ddc::DiscreteVector<BernsteinBasis> {n_singular_basis()});

ddc::DiscreteDomain<BSplinesP> poloidal_spline_domain
= ddc::discrete_space<BSplinesP>().full_domain();

for (IndexR const ir : ddc::DiscreteDomain<BSplinesR>(IndexR(0), LengthR(C + 1))) {
for (IndexP const ip :
spline_builder_p.spline_domain().take_first(np_in_singular)) {
for (IndexP const ip : poloidal_spline_domain.take_first(np_in_singular)) {
const ddc::Coordinate<DimX, DimY> point
= curvilinear_to_cartesian.control_point(
mapping_tensor_product_discrete_element_type(ir, ip));
Expand All @@ -323,8 +321,8 @@ class PolarBSplines
}
}
for (discrete_element_type k : singular_domain()) {
for (IndexP const ip : spline_builder_p.spline_domain().take_first(
LengthP {BSplinesP::degree()})) {
for (IndexP const ip :
poloidal_spline_domain.take_first(LengthP {BSplinesP::degree()})) {
m_singular_basis_elements(k, ir, ip + np_in_singular)
= m_singular_basis_elements(k, ir, ip);
}
Expand Down
22 changes: 1 addition & 21 deletions vendor/sll/tests/polar_bsplines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,24 +78,6 @@ TYPED_TEST(PolarBsplineFixture, PartitionOfUnity)
using BSplinesR = typename TestFixture::BSplineR;
using BSplinesP = typename TestFixture::BSplineP;
using CircToCart = CircularToCartesian<DimX, DimY, DimR, DimP>;
using BuilderR = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesR,
IDimR,
ddc::BoundCond::GREVILLE,
ddc::BoundCond::GREVILLE,
ddc::SplineSolver::GINKGO,
IDimR>;
using BuilderP = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesP,
IDimP,
ddc::BoundCond::PERIODIC,
ddc::BoundCond::PERIODIC,
ddc::SplineSolver::GINKGO,
IDimP>;
using SplineRPBuilder = ddc::SplineBuilder2D<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
Expand Down Expand Up @@ -165,8 +147,6 @@ TYPED_TEST(PolarBsplineFixture, PartitionOfUnity)
ddc::DiscreteDomain<IDimR, IDimP>
interpolation_domain(interpolation_domain_R, interpolation_domain_P);

BuilderR builder_r(interpolation_domain_R);
BuilderP builder_p(interpolation_domain_P);
SplineRPBuilder builder_rp(interpolation_domain);

ddc::NullExtrapolationRule r_extrapolation_rule;
Expand All @@ -180,7 +160,7 @@ TYPED_TEST(PolarBsplineFixture, PartitionOfUnity)
const CircToCart coord_changer;
DiscreteMapping const mapping
= DiscreteMapping::analytical_to_discrete(coord_changer, builder_rp, evaluator_rp);
ddc::init_discrete_space<BSplines>(mapping, builder_r, builder_p);
ddc::init_discrete_space<BSplines>(mapping);

int const n_eval = (BSplinesR::degree() + 1) * (BSplinesP::degree() + 1);
std::size_t const n_test_points = 100;
Expand Down
22 changes: 1 addition & 21 deletions vendor/sll/tests/polar_splines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,6 @@ TEST(PolarSplineTest, ConstantEval)
using CoordP = ddc::Coordinate<DimP>;
using Spline = PolarSpline<BSplines>;
using Evaluator = PolarSplineEvaluator<BSplines, ddc::NullExtrapolationRule>;
using BuilderR = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesR,
IDimR,
ddc::BoundCond::GREVILLE,
ddc::BoundCond::GREVILLE,
ddc::SplineSolver::GINKGO,
IDimR>;
using BuilderP = ddc::SplineBuilder<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
BSplinesP,
IDimP,
ddc::BoundCond::PERIODIC,
ddc::BoundCond::PERIODIC,
ddc::SplineSolver::GINKGO,
IDimP>;
using BuilderRP = ddc::SplineBuilder2D<
Kokkos::DefaultHostExecutionSpace,
Kokkos::DefaultHostExecutionSpace::memory_space,
Expand Down Expand Up @@ -145,8 +127,6 @@ TEST(PolarSplineTest, ConstantEval)
ddc::DiscreteDomain<IDimR, IDimP>
interpolation_domain(interpolation_domain_R, interpolation_domain_P);

BuilderR builder_r(interpolation_domain_R);
BuilderP builder_p(interpolation_domain_P);
BuilderRP builder_rp(interpolation_domain);

ddc::NullExtrapolationRule r_extrapolation_rule;
Expand All @@ -164,7 +144,7 @@ TEST(PolarSplineTest, ConstantEval)
#endif
DiscreteMapping const mapping
= DiscreteMapping::analytical_to_discrete(coord_changer, builder_rp, evaluator_rp);
ddc::init_discrete_space<BSplines>(mapping, builder_r, builder_p);
ddc::init_discrete_space<BSplines>(mapping);

Spline coef(builder_rp.spline_domain());

Expand Down

0 comments on commit cddd886

Please sign in to comment.