Hipace
Namespaces | Functions | Variables
WrapCuDST.cpp File Reference
#include "AnyDST.H"
#include "CuFFTUtils.H"
#include "utils/GPUUtil.H"
#include "utils/HipaceProfilerWrapper.H"
#include "utils/Parser.H"
#include <AMReX_Config.H>

Namespaces

 AnyDST
 Wrapper around multiple FFT libraries.
 

Functions

void AnyDST::ExpandR2R (amrex::FArrayBox &dst, amrex::FArrayBox &src)
 Extend src into a symmetrized larger array dst. More...
 
void AnyDST::ShrinkC2R (amrex::FArrayBox &dst, amrex::BaseFab< amrex::GpuComplex< amrex::Real >> &src)
 Extract symmetrical src array into smaller array dst. More...
 
void AnyDST::ToComplex (const amrex::Real *const AMREX_RESTRICT in, amrex::GpuComplex< amrex::Real > *const AMREX_RESTRICT out, const int n_data, const int n_batch)
 Make Complex array out of Real array to prepare for fft. out[idx] = -in[2*idx-2] + in[2*idx] + i*in[2*idx-1] for each column with in[-1] = 0; in[-2] = -in[0]; in[n_data] = 0; in[n_data+1] = -in[n_data-1]. More...
 
void AnyDST::C2Rfft (AnyFFT::VendorFFTPlan &plan, amrex::GpuComplex< amrex::Real > *AMREX_RESTRICT in, amrex::Real *const AMREX_RESTRICT out)
 Complex to Real fft for every column of the input matrix. The output Matrix has its indexes reversed compared to some other libraries. More...
 
void AnyDST::ToSine (const amrex::Real *const AMREX_RESTRICT in, amrex::Real *const AMREX_RESTRICT out, const int n_data, const int n_batch)
 Make Sine-space Real array out of array from fft. out[idx] = 0.5 *(in[n_data-idx] - in[idx+1] + (in[n_data-idx] + in[idx+1])/ (2*sin((idx+1)*pi/(n_data+1)))) for each column. More...
 
void AnyDST::Transpose (const amrex::Real *const AMREX_RESTRICT in, amrex::Real *const AMREX_RESTRICT out, const int n_data, const int n_batch)
 Transpose input matrix out[idy][idx] = in[idx][idy]. More...
 
DSTplan AnyDST::CreatePlan (const amrex::IntVect &real_size, amrex::FArrayBox *position_array, amrex::FArrayBox *fourier_array)
 create FFT plan for the backend FFT library. More...
 
void AnyDST::DestroyPlan (DSTplan &dst_plan)
 Destroy library FFT plan. More...
 
template<AnyDST::direction d>
void AnyDST::Execute (DSTplan &dst_plan)
 Perform FFT with backend library. More...
 
template void AnyDST::Execute< direction::forward > (DSTplan &dst_plan)
 
template void AnyDST::Execute< direction::backward > (DSTplan &dst_plan)
 

Variables

cufftType AnyDST::VendorR2C = CUFFT_D2Z
 
cufftType AnyDST::VendorC2R = CUFFT_Z2D