Rheolef
7.2
an efficient C++ finite element environment
|
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
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. User's guide. The solver_option
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
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
method could be applied.
The cg
preconditionned conjugate gradient algorithm or the gmres
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 User's guide 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