Skip to content

Commit

Permalink
ddc sync
Browse files Browse the repository at this point in the history
- Change the way Fourier space is initialized.

See merge request gysela-developpers/gyselalibxx!438

--------------------------------------------
  • Loading branch information
tpadioleau committed Apr 3, 2024
1 parent cddd886 commit 77bec8b
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 26 deletions.
2 changes: 1 addition & 1 deletion simulations/geometryXVx/bump_on_tail/bumpontail_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ int main(int argc, char** argv)

SplitVlasovSolver const vlasov(advection_x, advection_vx);

ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx));
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx)));

host_t<DFieldVx> const quadrature_coeffs_host
= neumann_spline_quadrature_coefficients(gridvx, builder_vx_poisson);
Expand Down
2 changes: 1 addition & 1 deletion simulations/geometryXVx/landau/landau_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ int main(int argc, char** argv)

SplitVlasovSolver const vlasov(advection_x, advection_vx);

ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx));
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx)));

host_t<DFieldVx> const quadrature_coeffs_host
= neumann_spline_quadrature_coefficients(gridvx, builder_vx_poisson);
Expand Down
2 changes: 1 addition & 1 deletion simulations/geometryXVx/sheath/sheath.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ int main(int argc, char** argv)
quadrature_coeffs_host.span_view());
ChargeDensityCalculator rhs(quadrature_coeffs);
#ifdef PERIODIC_RDIMX
ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx));
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXVx)));
FftPoissonSolver const poisson(rhs);
#else
FemNonPeriodicPoissonSolver const poisson(builder_x_poisson, spline_x_evaluator_poisson, rhs);
Expand Down
5 changes: 4 additions & 1 deletion simulations/geometryXYVxVy/landau/landau4d_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,10 @@ int main(int argc, char** argv)

SplitVlasovSolver const vlasov(advection_x, advection_y, advection_vx, advection_vy);

ddc::init_fourier_space<RDimX, RDimY>(ddc::select<IDimX, IDimY>(meshSpXYVxVy));
ddc::init_discrete_space<IDimFx>(
ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(meshSpXYVxVy)));
ddc::init_discrete_space<IDimFy>(
ddc::init_fourier_space<RDimY>(ddc::select<IDimY>(meshSpXYVxVy)));

host_t<DFieldVxVy> const quadrature_coeffs_host = neumann_spline_quadrature_coefficients(
interpolation_domain_vxvy,
Expand Down
4 changes: 2 additions & 2 deletions tests/geometryXVx/fftpoissonsolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ TEST(FftPoissonSolver, CosineSource)

IDomainSpXVx const mesh(gridsp, gridx, gridvx);

ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(mesh));
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(mesh)));

// Creating operators

Expand Down Expand Up @@ -136,7 +136,7 @@ TEST(FftPoissonSolver, CosineSourceParallel)

IDomainSpXVx const mesh(gridsp, gridx, gridvx);

ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(mesh));
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(ddc::select<IDimX>(mesh)));

// Creating operators

Expand Down
4 changes: 2 additions & 2 deletions tests/geometryXYVxVy/fft_poisson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ static void TestFftPoissonSolverCosineSource()

IDomainSpXYVxVy const mesh(gridsp, meshxyvxvy);

ddc::init_fourier_space<RDimX>(gridx);
ddc::init_fourier_space<RDimY>(gridy);
ddc::init_discrete_space<IDimFx>(ddc::init_fourier_space<RDimX>(gridx));
ddc::init_discrete_space<IDimFy>(ddc::init_fourier_space<RDimY>(gridy));

// Initialise infomation about species
host_t<FieldSp<int>> charges(dom_sp);
Expand Down
2 changes: 1 addition & 1 deletion vendor/ddc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ if( FFTW_FOUND AND "${Kokkos_ENABLE_OPENMP}")
target_compile_definitions(DDC INTERFACE fftw_omp_AVAIL)
endif()

if( CUDAToolkit_FOUND )
if( CUDAToolkit_FOUND AND "${Kokkos_ENABLE_CUDA}")
target_link_libraries( DDC INTERFACE CUDA::cufft )
target_compile_definitions(DDC INTERFACE cufft_AVAIL)
endif()
Expand Down
7 changes: 6 additions & 1 deletion vendor/ddc/examples/heat_equation_spectral.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,12 @@ int main(int argc, char** argv)
ddc::DiscreteElement<DDimT> last_output = time_domain.front();
//! [initial output]

ddc::init_fourier_space<X, Y>(initial_temp.domain());
ddc::init_discrete_space<ddc::PeriodicSampling<ddc::Fourier<X>>>(
ddc::init_fourier_space(
ddc::DiscreteDomain<DDimX>(initial_temp.domain())));
ddc::init_discrete_space<ddc::PeriodicSampling<ddc::Fourier<Y>>>(
ddc::init_fourier_space(
ddc::DiscreteDomain<DDimY>(initial_temp.domain())));
ddc::DiscreteDomain<
ddc::PeriodicSampling<ddc::Fourier<X>>,
ddc::PeriodicSampling<ddc::Fourier<Y>>> const k_mesh
Expand Down
19 changes: 5 additions & 14 deletions vendor/ddc/include/ddc/kernels/fft.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -578,10 +578,13 @@ void core(
KOKKOS_LAMBDA(const int& i) { out_data[i] = out_data[i] * norm_coef; });
}
}
} // namespace ddc::detail::fft

namespace ddc {

template <typename X>
typename ddc::PeriodicSampling<ddc::Fourier<X>>::template Impl<Kokkos::HostSpace> FourierSampling(
ddc::DiscreteDomain<ddc::UniformPointSampling<X>> x_mesh)
typename ddc::PeriodicSampling<ddc::Fourier<X>>::template Impl<Kokkos::HostSpace>
init_fourier_space(ddc::DiscreteDomain<ddc::UniformPointSampling<X>> x_mesh)
{
auto [impl, ddom] = ddc::PeriodicSampling<ddc::Fourier<X>>::
init(ddc::Coordinate<ddc::Fourier<X>>(0),
Expand All @@ -595,18 +598,6 @@ typename ddc::PeriodicSampling<ddc::Fourier<X>>::template Impl<Kokkos::HostSpace
ddc::detail::fft::N<X>(x_mesh)));
return std::move(impl);
}
} // namespace ddc::detail::fft

namespace ddc {

template <typename... X>
void init_fourier_space(ddc::DiscreteDomain<ddc::UniformPointSampling<X>...> x_mesh)
{
return (ddc::init_discrete_space<ddc::PeriodicSampling<ddc::Fourier<X>>>(
ddc::detail::fft::FourierSampling(
ddc::select<ddc::UniformPointSampling<X>>(x_mesh))),
...);
}

// FourierMesh, first element corresponds to mode 0
template <typename... X>
Expand Down
7 changes: 5 additions & 2 deletions vendor/ddc/tests/fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ static void test_fft()
init(ddc::Coordinate<X>(a + (b - a) / Nx / 2),
ddc::Coordinate<X>(b - (b - a) / Nx / 2),
DVect<DDim<X>>(Nx)))...);
ddc::init_fourier_space<X...>(x_mesh);
(ddc::init_discrete_space<ddc::PeriodicSampling<ddc::Fourier<X>>>(
ddc::init_fourier_space(ddc::DiscreteDomain<DDim<X>>(x_mesh))),
...);
DDom<DFDim<ddc::Fourier<X>>...> const k_mesh = ddc::FourierMesh(x_mesh, full_fft);

ddc::Chunk f_alloc(x_mesh, ddc::KokkosAllocator<Tin, MemorySpace>());
Expand Down Expand Up @@ -129,7 +131,8 @@ static void test_fft_norm(ddc::FFT_Normalization const norm)
init(ddc::Coordinate<X>(-1. / 4),
ddc::Coordinate<X>(1. / 4),
DVect<DDim<X>>(2)));
ddc::init_fourier_space<X>(x_mesh);
ddc::init_discrete_space<ddc::PeriodicSampling<ddc::Fourier<X>>>(
ddc::init_fourier_space<X>(x_mesh));
DDom<DFDim<ddc::Fourier<X>>> const k_mesh = ddc::FourierMesh(x_mesh, full_fft);

ddc::Chunk f_alloc = ddc::Chunk(x_mesh, ddc::KokkosAllocator<Tin, MemorySpace>());
Expand Down

0 comments on commit 77bec8b

Please sign in to comment.