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

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

#include <jet/fdm_mgpcg_solver3.h>

Inheritance diagram for jet::FdmMgpcgSolver3:
jet::FdmMgSolver3 jet::FdmLinearSystemSolver3

Public Member Functions

 FdmMgpcgSolver3 (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 (FdmMgLinearSystem3 *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::FdmMgSolver3
 FdmMgSolver3 ()=default
 
virtual ~FdmMgSolver3 ()=default
 
 FdmMgSolver3 (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< FdmBlas3 > & 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 (FdmLinearSystem3 *system) final
 No-op. Multigrid-type solvers do not solve FdmLinearSystem3. More...
 
- Public Member Functions inherited from jet::FdmLinearSystemSolver3
 FdmLinearSystemSolver3 ()=default
 
virtual ~FdmLinearSystemSolver3 ()=default
 
virtual bool solveCompressed (FdmCompressedLinearSystem3 *)
 Solves the given compressed linear system. More...
 

Detailed Description

3-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

◆ FdmMgpcgSolver3()

jet::FdmMgpcgSolver3::FdmMgpcgSolver3 ( 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::FdmMgpcgSolver3::lastNumberOfIterations ( ) const

Returns the last number of Jacobi iterations the solver made.

◆ lastResidual()

double jet::FdmMgpcgSolver3::lastResidual ( ) const

Returns the last residual after the Jacobi iterations.

◆ maxNumberOfIterations()

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

Returns the max number of Jacobi iterations.

◆ solve()

bool jet::FdmMgpcgSolver3::solve ( FdmMgLinearSystem3 system)
overridevirtual

Solves the given linear system.

Reimplemented from jet::FdmMgSolver3.

◆ tolerance()

double jet::FdmMgpcgSolver3::tolerance ( ) const

Returns the max residual tolerance for the Jacobi method.


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