DDC 0.11.0
Loading...
Searching...
No Matches
fft.cpp
1// Copyright (C) The DDC development team, see COPYRIGHT.md file
2//
3// SPDX-License-Identifier: MIT
4
5#include <stdexcept>
6
7#include <KokkosFFT.hpp>
8
9#include "fft.hpp"
10
11namespace ddc::detail::fft {
12
13KokkosFFT::Normalization ddc_fft_normalization_to_kokkos_fft(
14 FFT_Normalization const ddc_fft_normalization)
15{
16 if (ddc_fft_normalization == ddc::FFT_Normalization::OFF
17 || ddc_fft_normalization == ddc::FFT_Normalization::FULL) {
18 return KokkosFFT::Normalization::none;
19 }
20
21 if (ddc_fft_normalization == ddc::FFT_Normalization::FORWARD) {
22 return KokkosFFT::Normalization::forward;
23 }
24
25 if (ddc_fft_normalization == ddc::FFT_Normalization::BACKWARD) {
26 return KokkosFFT::Normalization::backward;
27 }
28
29 if (ddc_fft_normalization == ddc::FFT_Normalization::ORTHO) {
30 return KokkosFFT::Normalization::ortho;
31 }
32
33 throw std::runtime_error("ddc::FFT_Normalization not handled");
34}
35
36} // namespace ddc::detail::fft
The top-level namespace of DDC.
FFT_Normalization
A named argument to choose the type of normalization of the FFT.
Definition fft.hpp:41
@ BACKWARD
No normalization for forward FFT, multiply by 1/N for backward FFT.
@ OFF
No normalization. Un-normalized FFT is sum_j f(x_j)*e^-ikx_j.
@ ORTHO
Multiply by 1/sqrt(N)
@ FULL
Multiply by dx/sqrt(2*pi) for forward FFT and dk/sqrt(2*pi) for backward FFT.
@ FORWARD
Multiply by 1/N for forward FFT, no normalization for backward FFT.