Jet  v1.3.3
Classes | Public Member Functions | List of all members
jet::FdmMgpcgSolver2 Class Referencefinal

2-D finite difference-type linear system solver using Multigrid Preconditioned conjugate gradient (MGPCG). More...

#include <jet/fdm_mgpcg_solver2.h>

Inheritance diagram for jet::FdmMgpcgSolver2:
jet::FdmMgSolver2 jet::FdmLinearSystemSolver2

Public Member Functions

 FdmMgpcgSolver2 (unsigned int numberOfCgIter, size_t maxNumberOfLevels, unsigned int numberOfRestrictionIter=5, unsigned int numberOfCorrectionIter=5, unsigned int numberOfCoarsestIter=20, unsigned int numberOfFinalIter=20, double maxTolerance=1e-9, double sorFactor=1.5, bool useRedBlackOrdering=false)
 
bool solve (FdmMgLinearSystem2 *system) override
 Solves the given linear system. More...
 
unsigned int maxNumberOfIterations () const
 Returns the max number of Jacobi iterations. More...
 
unsigned int lastNumberOfIterations () const
 Returns the last number of Jacobi iterations the solver made. More...
 
double tolerance () const
 Returns the max residual tolerance for the Jacobi method. More...
 
double lastResidual () const
 Returns the last residual after the Jacobi iterations. More...
 
- Public Member Functions inherited from jet::FdmMgSolver2
 FdmMgSolver2 ()=default
 
virtual ~FdmMgSolver2 ()=default
 
 FdmMgSolver2 (size_t maxNumberOfLevels, unsigned int numberOfRestrictionIter=5, unsigned int numberOfCorrectionIter=5, unsigned int numberOfCoarsestIter=20, unsigned int numberOfFinalIter=20, double maxTolerance=1e-9, double sorFactor=1.5, bool useRedBlackOrdering=false)
 Constructs the solver with given parameters. More...
 
const MgParameters< FdmBlas2 > & params () const
 Returns the Multigrid parameters. More...
 
double sorFactor () const
 Returns the SOR (Successive Over Relaxation) factor. More...
 
bool useRedBlackOrdering () const
 Returns true if red-black ordering is enabled. More...
 
bool solve (FdmLinearSystem2 *system) final
 No-op. Multigrid-type solvers do not solve FdmLinearSystem2. More...
 
- Public Member Functions inherited from jet::FdmLinearSystemSolver2
 FdmLinearSystemSolver2 ()=default
 
virtual ~FdmLinearSystemSolver2 ()=default
 
virtual bool solveCompressed (FdmCompressedLinearSystem2 *)
 Solves the given compressed linear system. More...
 

Detailed Description

2-D finite difference-type linear system solver using Multigrid Preconditioned conjugate gradient (MGPCG).

See also
McAdams, Aleka, Eftychios Sifakis, and Joseph Teran. "A parallel multigrid Poisson solver for fluids simulation on large grids." Proceedings of the 2010 ACM SIGGRAPH/Eurographics Symposium on Computer Animation. Eurographics Association, 2010.

Constructor & Destructor Documentation

◆ FdmMgpcgSolver2()

jet::FdmMgpcgSolver2::FdmMgpcgSolver2 ( unsigned int  numberOfCgIter,
size_t  maxNumberOfLevels,
unsigned int  numberOfRestrictionIter = 5,
unsigned int  numberOfCorrectionIter = 5,
unsigned int  numberOfCoarsestIter = 20,
unsigned int  numberOfFinalIter = 20,
double  maxTolerance = 1e-9,
double  sorFactor = 1.5,
bool  useRedBlackOrdering = false 
)

Constructs the solver with given parameters.

Parameters
numberOfCgIter- Number of CG iterations.
maxNumberOfLevels- Number of maximum MG levels.
numberOfRestrictionIter- Number of restriction iterations.
numberOfCorrectionIter- Number of correction iterations.
numberOfCoarsestIter- Number of iterations at the coarsest grid.
numberOfFinalIter- Number of final iterations.
maxTolerance- Number of max residual tolerance.

Member Function Documentation

◆ lastNumberOfIterations()

unsigned int jet::FdmMgpcgSolver2::lastNumberOfIterations ( ) const

Returns the last number of Jacobi iterations the solver made.

◆ lastResidual()

double jet::FdmMgpcgSolver2::lastResidual ( ) const

Returns the last residual after the Jacobi iterations.

◆ maxNumberOfIterations()

unsigned int jet::FdmMgpcgSolver2::maxNumberOfIterations ( ) const

Returns the max number of Jacobi iterations.

◆ solve()

bool jet::FdmMgpcgSolver2::solve ( FdmMgLinearSystem2 system)
overridevirtual

Solves the given linear system.

Reimplemented from jet::FdmMgSolver2.

◆ tolerance()

double jet::FdmMgpcgSolver2::tolerance ( ) const

Returns the max residual tolerance for the Jacobi method.


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