logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

solver_abtb - mixed systems solver (rheolef-7.2)

Author

       Pierre  Saramito  <Pierre.Saramito@imag.fr>

Description

       This class provides both direct and iterative algorithms for solving mixed problem:

          [ A  B^T ] [ u ]    [ Mf ]
          [        ] [   ]  = [    ]
          [ B  -C  ] [ p ]    [ Mg ]

        where A is symmetric positive definite and C is symmetric positive. By default, iterative algorithms are
       considered for tridimensional problems and direct methods otherwise. A solver_option(4) argument can
       change this default behavior. Mixed linear problems appears for instance with the discretization of
       Stokes and elasticity problems. The C matrix can be zero and then the corresponding argument can be
       omitted when invoking the constructor. Non-zero C matrix appears for of Stokes problems with stabilized
       P1-P1 element, or for nearly incompressible elasticity problems.

       Recall that, for 1D and 2D problems, the direct method is default, since it is more efficient: see e.g.
       usersguide. The solver_option(4) allows one to change this default behavior.

Direct Algorithm

       When the kernel of B^T is reduced to zero, the global system is non-singular and the solver(4) method
       could be applied. Otherwise, when the kernel of B^T is not reduced to zero, then the pressure p is
       defined up to a constant and the system is singular. This is a major difficulty for any direct method.
       Thus, the system is first completed by the imposition of an additional constraint on the pressure term:
       it should have a zero average value. By this way, the system becomes non-singular and the solver(4)
       method could be applied.

Example

       See the usersguide for practical examples for the nearly incompressible elasticity, the Stokes and the
       Navier-Stokes problems.

Implementation

       This documentation has been generated from file linalg/lib/solver_abtb.h

Iterative Algorithm

       The cg(5) preconditionned conjugate gradient algorithm or the gmres(5) one is used, depending on the
       symmetry of the matrix. The mp matrix is used as preconditionner: it can be customized by the
       set_preconditionner member function. The linear sub-systems related to the A matrix are also solved by an
       inner solver. This inner solver is automatically defined by default: it can be customized by the
       set_inner_solver member function and e.g. uses it own inner iterative algorithm and preconditionner.

Name

       solver_abtb - mixed systems solver (rheolef-7.2)

Synopsis

           solver_abtb stokes     (a,b,mp);
           solver_abtb elasticity (a,b,c,mp);

See Also