Hipace
Public Member Functions | Private Attributes | List of all members
FFTPoissonSolverPeriodic Class Referencefinal

This class handles functions and data to perform transverse Fourier-based Poisson solves. More...

#include <FFTPoissonSolverPeriodic.H>

Inheritance diagram for FFTPoissonSolverPeriodic:
FFTPoissonSolver

Public Member Functions

 FFTPoissonSolverPeriodic (amrex::BoxArray const &realspace_ba, amrex::DistributionMapping const &dm, amrex::Geometry const &gm)
 
virtual ~FFTPoissonSolverPeriodic () override final
 
virtual void define (amrex::BoxArray const &realspace_ba, amrex::DistributionMapping const &dm, amrex::Geometry const &gm) override final
 Define real space and spectral space boxes and multifabs, multiplier coefficients inv_k2 to solve Poisson equation and FFT plans. Currently only works with a single box, i.e., serial FFT. More...
 
virtual void SolvePoissonEquation (amrex::MultiFab &lhs_mf) override final
 
- Public Member Functions inherited from FFTPoissonSolver
 FFTPoissonSolver ()=default
 
virtual ~FFTPoissonSolver ()=0
 
amrex::MultiFabStagingArea ()
 

Private Attributes

SpectralField m_tmpSpectralField
 
amrex::MultiFab m_inv_k2
 
AnyFFT::FFTplans m_forward_plan
 
AnyFFT::FFTplans m_backward_plan
 

Additional Inherited Members

- Protected Attributes inherited from FFTPoissonSolver
amrex::BoxArray m_spectralspace_ba
 
amrex::MultiFab m_stagingArea
 

Detailed Description

This class handles functions and data to perform transverse Fourier-based Poisson solves.

For a given source S, it solves equation Laplacian(F) = S and returns F. Once an instance is created, a typical use consists in:

  1. Compute S directly in FFTPoissonSolver::m_stagingArea
  2. Call FFTPoissonSolver::SolvePoissonEquation(mf), which will solve Poisson equation with RHS in the staging area and return the LHS in mf.

Constructor & Destructor Documentation

◆ FFTPoissonSolverPeriodic()

FFTPoissonSolverPeriodic::FFTPoissonSolverPeriodic ( amrex::BoxArray const &  realspace_ba,
amrex::DistributionMapping const &  dm,
amrex::Geometry const &  gm 
)

Constructor

◆ ~FFTPoissonSolverPeriodic()

virtual FFTPoissonSolverPeriodic::~FFTPoissonSolverPeriodic ( )
inlinefinaloverridevirtual

virtual destructor

Member Function Documentation

◆ define()

void FFTPoissonSolverPeriodic::define ( amrex::BoxArray const &  realspace_ba,
amrex::DistributionMapping const &  dm,
amrex::Geometry const &  gm 
)
finaloverridevirtual

Define real space and spectral space boxes and multifabs, multiplier coefficients inv_k2 to solve Poisson equation and FFT plans. Currently only works with a single box, i.e., serial FFT.

Parameters
[in]realspace_baBoxArray on which the FFT is executed.
[in]dmDistributionMapping for the BoxArray.
[in]gmGeometry, contains the box dimensions.

Implements FFTPoissonSolver.

◆ SolvePoissonEquation()

void FFTPoissonSolverPeriodic::SolvePoissonEquation ( amrex::MultiFab lhs_mf)
finaloverridevirtual

Solve Poisson equation. The source term must be stored in the staging area m_stagingArea prior to this call.

Parameters
[in]lhs_mfDestination array, where the result is stored.

Implements FFTPoissonSolver.

Member Data Documentation

◆ m_backward_plan

AnyFFT::FFTplans FFTPoissonSolverPeriodic::m_backward_plan
private

◆ m_forward_plan

AnyFFT::FFTplans FFTPoissonSolverPeriodic::m_forward_plan
private

FFT plans

◆ m_inv_k2

amrex::MultiFab FFTPoissonSolverPeriodic::m_inv_k2
private

Multifab containing 1/(kx^2 + ky^2), to solve Poisson equation.

◆ m_tmpSpectralField

SpectralField FFTPoissonSolverPeriodic::m_tmpSpectralField
private

Spectral fields, contains (complex) field in Fourier space


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