Block-Structured AMR Software Framework
amrex::FFT::PoissonHybrid< MF > Class Template Reference

3D Poisson solver for periodic, Dirichlet & Neumann boundaries in the first two dimensions, and Neumann in the last dimension. The last dimension could have non-uniform mesh. More...

#include <AMReX_FFT_Poisson.H>

Public Types

using T = typename MF::value_type
 

Public Member Functions

template<typename FA = MF, std::enable_if_t< IsFabArray_v< FA >, int > = 0>
 PoissonHybrid (Geometry const &geom, Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > const &bc)
 
template<typename FA = MF, std::enable_if_t< IsFabArray_v< FA >, int > = 0>
 PoissonHybrid (Geometry const &geom)
 
void solve (MF &soln, MF const &rhs)
 
void solve (MF &soln, MF const &rhs, Vector< T > const &dz)
 
void solve (MF &soln, MF const &rhs, Gpu::DeviceVector< T > const &dz)
 
template<typename TRIA , typename TRIC >
void solve (MF &soln, MF const &rhs, TRIA const &tria, TRIC const &tric)
 
template<typename FA , typename TRIA , typename TRIC >
void solve_z (FA &spmf, TRIA const &tria, TRIC const &tric)
 
std::pair< BoxArray, DistributionMappinggetSpectralDataLayout () const
 

Private Types

using cMF = FabArray< BaseFab< GpuComplex< T > >>
 

Private Member Functions

void build_spmf ()
 

Private Attributes

Geometry m_geom
 
Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > m_bc
 
std::unique_ptr< R2X< typename MF::value_type > > m_r2x
 
std::unique_ptr< R2C< typename MF::value_type > > m_r2c
 
MF m_spmf_r
 
cMF m_spmf_c
 

Detailed Description

template<typename MF = MultiFab>
class amrex::FFT::PoissonHybrid< MF >

3D Poisson solver for periodic, Dirichlet & Neumann boundaries in the first two dimensions, and Neumann in the last dimension. The last dimension could have non-uniform mesh.

Member Typedef Documentation

◆ cMF

template<typename MF = MultiFab>
using amrex::FFT::PoissonHybrid< MF >::cMF = FabArray<BaseFab<GpuComplex<T> >>
private

◆ T

template<typename MF = MultiFab>
using amrex::FFT::PoissonHybrid< MF >::T = typename MF::value_type

Constructor & Destructor Documentation

◆ PoissonHybrid() [1/2]

template<typename MF = MultiFab>
template<typename FA = MF, std::enable_if_t< IsFabArray_v< FA >, int > = 0>
amrex::FFT::PoissonHybrid< MF >::PoissonHybrid ( Geometry const &  geom,
Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > const &  bc 
)
inline

◆ PoissonHybrid() [2/2]

template<typename MF = MultiFab>
template<typename FA = MF, std::enable_if_t< IsFabArray_v< FA >, int > = 0>
amrex::FFT::PoissonHybrid< MF >::PoissonHybrid ( Geometry const &  geom)
inlineexplicit

Member Function Documentation

◆ build_spmf()

template<typename MF >
void amrex::FFT::PoissonHybrid< MF >::build_spmf
private

◆ getSpectralDataLayout()

template<typename MF >
std::pair< BoxArray, DistributionMapping > amrex::FFT::PoissonHybrid< MF >::getSpectralDataLayout

◆ solve() [1/4]

template<typename MF >
void amrex::FFT::PoissonHybrid< MF >::solve ( MF &  soln,
MF const &  rhs 
)

◆ solve() [2/4]

template<typename MF >
void amrex::FFT::PoissonHybrid< MF >::solve ( MF &  soln,
MF const &  rhs,
Gpu::DeviceVector< T > const &  dz 
)

◆ solve() [3/4]

template<typename MF >
template<typename TRIA , typename TRIC >
void amrex::FFT::PoissonHybrid< MF >::solve ( MF &  soln,
MF const &  rhs,
TRIA const &  tria,
TRIC const &  tric 
)

◆ solve() [4/4]

template<typename MF >
void amrex::FFT::PoissonHybrid< MF >::solve ( MF &  soln,
MF const &  rhs,
Vector< T > const &  dz 
)

◆ solve_z()

template<typename MF >
template<typename FA , typename TRIA , typename TRIC >
void amrex::FFT::PoissonHybrid< MF >::solve_z ( FA &  spmf,
TRIA const &  tria,
TRIC const &  tric 
)

Member Data Documentation

◆ m_bc

template<typename MF = MultiFab>
Array<std::pair<Boundary,Boundary>,AMREX_SPACEDIM> amrex::FFT::PoissonHybrid< MF >::m_bc
private

◆ m_geom

template<typename MF = MultiFab>
Geometry amrex::FFT::PoissonHybrid< MF >::m_geom
private

◆ m_r2c

template<typename MF = MultiFab>
std::unique_ptr<R2C<typename MF::value_type> > amrex::FFT::PoissonHybrid< MF >::m_r2c
private

◆ m_r2x

template<typename MF = MultiFab>
std::unique_ptr<R2X<typename MF::value_type> > amrex::FFT::PoissonHybrid< MF >::m_r2x
private

◆ m_spmf_c

template<typename MF = MultiFab>
cMF amrex::FFT::PoissonHybrid< MF >::m_spmf_c
private

◆ m_spmf_r

template<typename MF = MultiFab>
MF amrex::FFT::PoissonHybrid< MF >::m_spmf_r
private

The documentation for this class was generated from the following file: