Block-Structured AMR Software Framework
AMReX_FFT_Helper.H File Reference
#include <AMReX_Config.H>
#include <AMReX.H>
#include <AMReX_BLProfiler.H>
#include <AMReX_DataAllocator.H>
#include <AMReX_DistributionMapping.H>
#include <AMReX_Enum.H>
#include <AMReX_FabArray.H>
#include <AMReX_Gpu.H>
#include <AMReX_GpuComplex.H>
#include <AMReX_Math.H>
#include <AMReX_Periodicity.H>
#include <cufft.h>
#include <cuComplex.h>
#include <algorithm>
#include <complex>
#include <limits>
#include <memory>
#include <tuple>
#include <utility>
#include <variant>

Go to the source code of this file.

Classes

struct  amrex::FFT::Info
 
struct  amrex::FFT::Plan< T >
 
struct  amrex::FFT::Swap01
 
struct  amrex::FFT::Swap02
 
struct  amrex::FFT::RotateFwd
 
struct  amrex::FFT::RotateBwd
 
struct  amrex::FFT::detail::SubHelper
 

Namespaces

 amrex
 
 amrex::FFT
 
 amrex::FFT::detail
 

Typedefs

using amrex::FFT::Key = std::tuple< IntVectND< 3 >, Direction, Kind >
 
using amrex::FFT::PlanD = typename Plan< double >::VendorPlan
 
using amrex::FFT::PlanF = typename Plan< float >::VendorPlan
 

Enumerations

enum class  amrex::FFT::Direction { amrex::FFT::forward , amrex::FFT::backward , amrex::FFT::both , amrex::FFT::none }
 
enum class  amrex::FFT::DomainStrategy { amrex::FFT::slab , amrex::FFT::pencil }
 
enum class  amrex::FFT::Kind {
  amrex::FFT::none , amrex::FFT::r2c_f , amrex::FFT::r2c_b , amrex::FFT::c2c_f ,
  amrex::FFT::c2c_b , amrex::FFT::r2r_ee_f , amrex::FFT::r2r_ee_b , amrex::FFT::r2r_oo_f ,
  amrex::FFT::r2r_oo_b , amrex::FFT::r2r_eo , amrex::FFT::r2r_oe
}
 

Functions

 amrex::FFT::AMREX_ENUM (Boundary, periodic, even, odd)
 
PlanD * amrex::FFT::get_vendor_plan_d (Key const &key)
 
PlanF * amrex::FFT::get_vendor_plan_f (Key const &key)
 
void amrex::FFT::add_vendor_plan_d (Key const &key, PlanD plan)
 
void amrex::FFT::add_vendor_plan_f (Key const &key, PlanF plan)
 
DistributionMapping amrex::FFT::detail::make_iota_distromap (Long n)
 
template<typename FA >
FA::FABType::value_type * amrex::FFT::detail::get_fab (FA &fa)
 
template<typename FA1 , typename FA2 >
std::unique_ptr< char, DataDeleter > amrex::FFT::detail::make_mfs_share (FA1 &fa1, FA2 &fa2)