solver_abtb(4rheolef)
π solver_abtb β bestie edition π
okay so you found the page for solver_abtb, which lives in section 4rheolef of the manual, and honestly? it's giving main character energy. it's the mixed systems solver from rheolef-7.2. let's get into it π«Ά
β¨ NAME β¨
solver_abtb β mixed systems solver (rheolef-7.2)
πΈ SYNOPSIS πΈ
solver_abtb stokes (a,b,mp);
solver_abtb elasticity (a,b,c,mp);
two constructors, two vibes, pick your fighter π
π¦ DESCRIPTION π¦
so this class is literally the plug for solving mixed problems, and it hands you both direct and iterative algorithms. no cap. here's the system it's solving:
[ A B^T ] [ u ] [ Mf ]
[ ] [ ] = [ ]
[ B -C ] [ p ] [ Mg ]
where A is symmetric positive definite and C is symmetric positive. quick facts, no skipping:
- by default, iterative algorithms are considered for tridimensional problems, and direct methods otherwise.
- a
solver_option(4)argument can change this default behavior. she has range β¨ - mixed linear problems show up, for instance, with the discretization of Stokes and elasticity problems.
- the
Cmatrix can be zero, and when that happens the corresponding argument can be omitted when invoking the constructor. lowkey convenient. - a non-zero
Cmatrix appears for Stokes problems with the stabilized P1-P1 element, or for nearly incompressible elasticity problems.
and recall (fr fr): for 1D and 2D problems, the direct method is default, since it is more efficient β see e.g. usersguide. the solver_option(4) lets you change this default behavior, because sometimes you just gotta. π
π 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. slay.
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. and bestie, that is a major difficulty for any direct method. like, it's giving chaos. π
so here's the fix: 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. iconic problem-solving. π
π ITERATIVE ALGORITHM π
the cg(5) preconditionned conjugate gradient algorithm or the gmres(5) one is used, depending on the symmetry of the matrix. vibe check on the matrix, basically.
the mp matrix is used as preconditionner: it can be customized by the set_preconditionner member function. you're the stylist, she's the fit. π
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. solvers within solvers. it's giving inception, honestly. π§
β EXAMPLE β
see the usersguide for practical examples for the nearly incompressible elasticity, the Stokes and the Navier-Stokes problems. go read it, it ate. π₯
π IMPLEMENTATION π
this documentation has been generated from file linalg/lib/solver_abtb.h
π AUTHOR π
Pierre Saramito <Pierre.Saramito@imag.fr>
πΈ COPYRIGHT πΈ
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. (read it again, bestie β no cap, no warranty π)
and that's the whole page, periodt. π big kiss from rheolef, Version 7.2, on the solver_abtb(4rheolef) page β catch you in the next manpage, mwah π«Άβ¨
π¦ where this page comes from
- debian trixie: librheolef-dev 7.2-4 Β· GPL-3.0-or-later
- ubuntu noble: librheolef-dev 7.2-3build5 Β· GPL-3.0-or-later
- ubuntu questing: librheolef-dev 7.2-4build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms