Hipace
Namespaces | Functions
WrapRocDST.cpp File Reference
#include "AnyDST.H"
#include "RocFFTUtils.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, rocfft_execution_info execinfo)
 
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)