DOKK / manpages / debian 12 / librheolef-dev / solver_abtb.4rheolef.en
solver_abtb(4rheolef) rheolef solver_abtb(4rheolef)

solver_abtb - mixed systems solver (rheolef-7.2)


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

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.

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.

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.

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

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

Pierre Saramito <Pierre.Saramito@imag.fr>

Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr> GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Mon Sep 19 2022 Version 7.2