ThunderEgg  1.0.0
ThunderEgg::PatchSolver< D > Class Template Referenceabstract

Solves the problem on the patches using a specified interface value. More...

#include <PatchSolver.h>

Inheritance diagram for ThunderEgg::PatchSolver< D >:
Collaboration diagram for ThunderEgg::PatchSolver< D >:

Public Member Functions

 PatchSolver (const Domain< D > &domain, const GhostFiller< D > &ghost_filler)
 Construct a new PatchSolver object. More...
 
virtual ~PatchSolver ()
 Destroy the Patch Solver object.
 
virtual PatchSolver< D > * clone () const override=0
 Clone this patch solver. More...
 
const Domain< D > & getDomain () const
 Get the Domain object. More...
 
const GhostFiller< D > & getGhostFiller () const
 Get the GhostFiller object. More...
 
virtual void solveSinglePatch (const PatchInfo< D > &pinfo, const PatchView< const double, D > &f_view, const PatchView< double, D > &u_view) const =0
 Perform a single solve over a patch. 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::PatchSolver< D >

Solves the problem on the patches using a specified interface value.

Template Parameters
Dthe number of cartesian dimensions

Constructor & Destructor Documentation

◆ PatchSolver()

template<int D>
ThunderEgg::PatchSolver< D >::PatchSolver ( const Domain< D > &  domain,
const GhostFiller< D > &  ghost_filler 
)
inline

Construct a new PatchSolver object.

This sets the Domain and the GhostFiller that the object uses.
Parameters
domainthe Domain
ghost_fillerthe GhostFiller

Member Function Documentation

◆ apply()

template<int D>
virtual void ThunderEgg::PatchSolver< D >::apply ( const Vector< D > &  f,
Vector< D > &  u 
) const
inlineoverridevirtual

Solve all the patches in the domain, assuming zero boundary conditions for the patches.

Parameters
fthe rhs vector
uthe lhs vector

Implements ThunderEgg::Operator< D >.

◆ clone()

template<int D>
virtual PatchSolver<D>* ThunderEgg::PatchSolver< D >::clone ( ) const
overridepure virtual

Clone this patch solver.

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

Implements ThunderEgg::GMG::Smoother< D >.

Implemented in ThunderEgg::Poisson::DFTPatchSolver< D >, ThunderEgg::Poisson::FFTWPatchSolver< D >, and ThunderEgg::Iterative::PatchSolver< D >.

◆ getDomain()

template<int D>
const Domain<D>& ThunderEgg::PatchSolver< D >::getDomain ( ) const
inline

Get the Domain object.

Returns
const Domain<D>& the Domain

◆ getGhostFiller()

template<int D>
const GhostFiller<D>& ThunderEgg::PatchSolver< D >::getGhostFiller ( ) const
inline

Get the GhostFiller object.

Returns
const GhostFiller<D>& the GhostFiller

◆ smooth()

template<int D>
virtual void ThunderEgg::PatchSolver< D >::smooth ( const Vector< D > &  f,
Vector< D > &  u 
) const
inlineoverridevirtual

Solve all the patches in the domain, using the values in u for the boundary conditions.

Parameters
fthe rhs vector
uthe lhs vector

Implements ThunderEgg::GMG::Smoother< D >.

◆ solveSinglePatch()

template<int D>
virtual void ThunderEgg::PatchSolver< D >::solveSinglePatch ( const PatchInfo< D > &  pinfo,
const PatchView< const double, D > &  f_view,
const PatchView< double, D > &  u_view 
) const
pure virtual

Perform a single solve over a patch.

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

Implemented in ThunderEgg::Poisson::DFTPatchSolver< D >, ThunderEgg::Poisson::FFTWPatchSolver< D >, and ThunderEgg::Iterative::PatchSolver< D >.


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