G+Smo
25.01.0
Geometry + Simulation Modules
|
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... | |
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 |