ThunderEgg  1.0.0
ThunderEgg::Poisson::FFTWPatchSolver< D > Class Template Reference

Use FFT transforms to solve for the Poisson equation. More...

#include <FFTWPatchSolver.h>

Inheritance diagram for ThunderEgg::Poisson::FFTWPatchSolver< D >:
Collaboration diagram for ThunderEgg::Poisson::FFTWPatchSolver< D >:

Public Member Functions

 FFTWPatchSolver (const PatchOperator< D > &op, std::bitset< Side< D >::number_of > neumann)
 Construct a new FftwPatchSolver object. More...
 
FFTWPatchSolver< D > * clone () const override
 Clone this patch solver. More...
 
void solveSinglePatch (const PatchInfo< D > &pinfo, const PatchView< const double, D > &f_view, const PatchView< double, D > &u_view) const override
 Perform a single solve over a patch. More...
 
void addPatch (const PatchInfo< D > &pinfo)
 add a patch to the solver More...
 
std::bitset< Side< D >::number_of > getNeumann () const
 Get the neumann boundary conditions for this operator. More...
 
- Public Member Functions inherited from ThunderEgg::PatchSolver< D >
 PatchSolver (const Domain< D > &domain, const GhostFiller< D > &ghost_filler)
 Construct a new PatchSolver object. More...
 
virtual ~PatchSolver ()
 Destroy the Patch Solver object.
 
const Domain< D > & getDomain () const
 Get the Domain object. More...
 
const GhostFiller< D > & getGhostFiller () const
 Get the GhostFiller object. More...
 
virtual void apply (const Vector< D > &f, Vector< D > &u) const override
 Solve all the patches in the domain, assuming zero boundary conditions for the patches. More...
 
virtual void smooth (const Vector< D > &f, Vector< D > &u) const override
 Solve all the patches in the domain, using the values in u for the boundary conditions. More...
 
- Public Member Functions inherited from ThunderEgg::Operator< D >
virtual ~Operator ()
 Destroy the Operator object.
 
- Public Member Functions inherited from ThunderEgg::GMG::Smoother< D >
virtual ~Smoother ()
 Destroy the Smoother object.
 

Detailed Description

template<int D>
class ThunderEgg::Poisson::FFTWPatchSolver< D >

Use FFT transforms to solve for the Poisson equation.

Template Parameters
Dthe number of Cartesian dimensions

Constructor & Destructor Documentation

◆ FFTWPatchSolver()

template<int D>
ThunderEgg::Poisson::FFTWPatchSolver< D >::FFTWPatchSolver ( const PatchOperator< D > &  op,
std::bitset< Side< D >::number_of >  neumann 
)
inline

Construct a new FftwPatchSolver object.

Parameters
opthe Poisson PatchOperator that cooresponds to this DftPatchSolver
neumanntrue if domain has neumann boundary conditions on a side

Member Function Documentation

◆ addPatch()

template<int D>
void ThunderEgg::Poisson::FFTWPatchSolver< D >::addPatch ( const PatchInfo< D > &  pinfo)
inline

add a patch to the solver

This will calculate the necessary coefficients needed for the patch

Parameters
pinfothe patch

◆ clone()

template<int D>
FFTWPatchSolver<D>* ThunderEgg::Poisson::FFTWPatchSolver< D >::clone ( ) const
inlineoverridevirtual

Clone this patch solver.

Returns
FFTWPatchSolver<D>* a newly allocated copy of this patch solver

Implements ThunderEgg::PatchSolver< D >.

◆ getNeumann()

template<int D>
std::bitset<Side<D>::number_of> ThunderEgg::Poisson::FFTWPatchSolver< D >::getNeumann ( ) const
inline

Get the neumann boundary conditions for this operator.

Returns
std::bitset<Side<D>::number_of> the boundary conditions

◆ solveSinglePatch()

template<int D>
void ThunderEgg::Poisson::FFTWPatchSolver< D >::solveSinglePatch ( const PatchInfo< D > &  pinfo,
const PatchView< const double, D > &  f_view,
const PatchView< double, D > &  u_view 
) const
inlineoverridevirtual

Perform a single solve over a patch.

Parameters
pinfothe PatchInfo for the patch
f_viewthe left hand side
u_viewthe right hand side

Implements ThunderEgg::PatchSolver< D >.


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