G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Solver module

Detailed Description

This module is responsible for treating the systems of linear
equations arizing from a discretized a PDE.

This class provides iterative solvers, preconditioners, and related tools.

The iterative solvers are derived from the gsIterativeSolver, most notably there are the standard Krylov space solvers (cg, MINRES, GMRES) and the gradient method, which can use optimal step sizes based on line search or fixed step sizes. The latter allows methods, which G+Smo presents as preconditioners, to be used as solvers, this means that a standard multigrid solver would be realized as a gradient solver with multigrid preconditioner.

The preconditioners are based on the abstract class gsLinearOperator. Objects of this type realize linear operators \( A \). Their application to a vector is provided by the member function apply. The class gsPreconditionerOp is an abstract class derived from gsLinearOperator. An example would be the Jacobi iteration, which interpreted as a linear operator, would be \( P = (\mbox{diag } A)^{-1} \). Preconditioners additionally have an underlying operator (underlyingOp), which would be \( A \) in this case. It is also possible to directly iterate those preconditioners using the member function step, which takes parameters \( f \) and \( x \) and updates the latter as follows:

\[ x_{new} = x_{old} + P ( f - A * x_{old} ). \]

Linear operators and preconditioners can be combined dynamically with the respective classes (like gsSumOp, gsProductOp, gsScaledOp, gsBlockOp). The wrapper class gsMatrixOp allows to treat (sparse) matrices as linear operators, the wrapper class gsSolverOp allows to treat the direct solvers from Eigen as linear operators. Also the multigrid and IETI methods are presented as linear operators and preconditioners.

The files associated to this module are located in the folders

Classes

class  AndersonAcceleration< Scalar >
 Anderson acceleration solver and its (preconditioned) variants. More...
 
class  gsBiCgStab< T >
 Biconjugate gradient stabilized solver. More...
 
class  gsBlockOp< T >
 Simple class create a block operator structure. More...
 
class  gsCompositePrecOp< T >
 This class represents the composition of preconditioners of type gsPreconditionerOp. More...
 
class  gsConjugateGradient< T >
 The conjugate gradient method. More...
 
class  gsGaussSeidelOp< MatrixType, ordering >
 Gauss-Seidel preconditioner. More...
 
class  gsGMRes< T >
 The generalized minimal residual (GMRES) method. More...
 
class  gsGradientMethod< T >
 The gradient method. More...
 
class  gsGridHierarchy< T >
 Grid Hierarchy. More...
 
class  gsIdentityOp< T >
 Identity operator. More...
 
class  gsIetiMapper< T >
 Ieti Mapper. More...
 
class  gsIetiSystem< T >
 This class represents a IETI system. More...
 
class  gsIncompleteLUOp< MatrixType >
 Incomplete LU with thresholding preconditioner. More...
 
class  gsIterativeSolver< T >
 Abstract class for iterative solvers. More...
 
class  gsJacobiOp< MatrixType >
 Jacobi preconditioner. More...
 
class  gsKroneckerOp< T >
 Class for representing a Kronecker product of operators of type gsLinearOperator. More...
 
class  gsLanczosMatrix< T >
 Class for representing a Lanczos matrix and calculating its eigenvalues. More...
 
class  gsLinearLambdaOp< T, L >
 Wrapper that allows to use lambdas as a gsLinearOperator. More...
 
class  gsLinearOperator< T >
 Simple abstract class for discrete operators. More...
 
class  gsMatrixOp< MatrixType >
 Simple adapter class to use a matrix (or matrix-like object) as a linear operator. Needed for the iterative method classes. More...
 
class  gsMinimalResidual< T >
 The minimal residual (MinRes) method. More...
 
class  gsMinResQLP< T >
 The minimal residual (MinRes-QLP) method. More...
 
class  gsMultiGridOp< T >
 Multigrid preconditioner. More...
 
class  gsPatchPreconditionersCreator< T >
 Provides robust preconditioners for single patch geometries. More...
 
class  gsPreconditionerFromOp< T >
 Simple class allowing to construct a preconditioner from a linear operator. More...
 
class  gsPreconditionerOp< T >
 Simple abstract class for perconditioners. More...
 
class  gsPrimalSystem< T >
 This class represents the primal system for a IETI-DP algorithm. More...
 
class  gsProductOp< T >
 Class for representing the product of objects of type gsLinearOperator as gsLinearOperator. More...
 
class  gsRichardsonOp< MatrixType >
 Richardson preconditioner. More...
 
class  gsScaledDirichletPrec< T >
 This class represents the scaled Dirichlet preconditioner for a IETI problem. More...
 
class  gsScaledOp< T >
 Allows an operator to be multiplied with a scalar. More...
 
class  gsSolverOp< SolverType >
 Simple adapter class to use an Eigen solver (having a compute() and a solve() method) as a linear operator. More...
 
class  gsSolverUtils< T >
 Utility class for PDE's solver related utils. More...
 
class  gsSumOp< T >
 Class for representing the sum of objects of type gsLinearOperator as gsLinearOperator. More...
 

Enumerations

enum  ordering {
  forward,
  reverse,
  symmetric
}
 Specify the ordering of gsGaussSeidelOp preconditioner. More...
 

Enumeration Type Documentation

enum ordering

Specify the ordering of gsGaussSeidelOp preconditioner.

Enumerator
forward 

standard forward ordering

reverse 

reverse ordering

symmetric 

one total step is = one forward + one backward