GridapSolvers provides algebraic and non-algebraic solvers for the Gridap ecosystem, designed with High Performance Computing (HPC) in mind.
Solvers follow a modular design, where most blocks can be combined to produce PDE-taylored solvers for a wide range of problems.
- Krylov solvers: We provide a (short) list of Krylov solvers, with full preconditioner support and HPC-first implementation.
- Block preconditioners: We provide full support for block assembly of multiphysics problems, and a generic API for building block-based preconditioners for block-assembled systems.
- Multilevel support: We provide a generic API for building multilevel preconditioners.
- Geometric Multigrid: We provide a full-fledged geometric multigrid solver. Highly scalable adaptivity and redistribution of meshes, provided by
p4est
throughGridapP4est.jl
. - PETSc interface: Full access to PETSc algebraic solvers, through
GridapPETSc.jl
, with full interoperability with the rest of the aforementioned solvers.
GridapSolvers is a registered package in the official Julia package registry. Thus, the installation of GridapSolvers is straight forward using the Julia's package manager. Open the Julia REPL, type ]
to enter package mode, and install as follows
pkg> add GridapSolvers
pkg> build
Building is required to link the external artifacts (e.g., PETSc, p4est) to the Julia environment.
The previous installations steps will setup GridapSolvers to work using Julia's pre-compiled artifacts for MPI, PETSc and p4est. However, you can also link local copies of these libraries. This might be very desirable in clusters, where hardware-specific libraries might be faster/more stable than the ones provided by Julia. To do so, follow the next steps: