GridapSolvers.jl

Solvers and preconditioners for the Gridap ecosystem.
Author gridap
Popularity
11 Stars
Updated Last
3 Months Ago
Started In
October 2022

GridapSolvers

Stable Dev Build Status Coverage DOI

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.

(Non-exhaustive) list of features

  • 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 through GridapP4est.jl.
  • PETSc interface: Full access to PETSc algebraic solvers, through GridapPETSc.jl, with full interoperability with the rest of the aforementioned solvers.

Installation

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.

Using custom binaries

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: