gridap / GridapSolvers.jl

Solvers and preconditioners for the Gridap ecosystem.
https://gridap.github.io/GridapSolvers.jl/
MIT License
10 stars 1 forks source link

Generic Block solvers #49

Closed JordiManyer closed 6 months ago

JordiManyer commented 7 months ago

The aim of this PR is the implementation of generic (linear/nonlinear), hierarchical block preconditioners.

The idea is that we want to have a preconditioner with a block structure, such that each block can be a regular solver (Direct/Iterative) or another block solver. Moreover, the iterative solvers can themselves be preconditioned.

Another difficulty is the fact that some of the blocks can be nonlinear (i.e the matrix for that block changes every time the solver is called) and possibly are NOT the system matrix (i.e the case of a preconditioner that changes at each nonlinear iteration but which requires integrating it's own components).

All in all, I have identified three types of blocks:

In addition, I also aim to implement structures that allow for efficient re-assembly of block systems: In most cases, not all the blocks in a multi-physics problem will have non-linearity. For instance, in the MHD equations only the u-u block has the Navier-Stokes nonlinear term. We would like to exploit this and only re-assemble the blocks containing that non-linearity. To this purpose:


Other stuff: