The following solvers/preconditioners are currently available:
- [`HYPRE.BiCGSTAB`](@ref)
- [`HYPRE.BoomerAMG`](@ref)
- [`HYPRE.FlexGMRES`](@ref)
- [`HYPRE.GMRES`](@ref)
- [`HYPRE.Hybrid`](@ref)
- [`HYPRE.ILU`](@ref)
- [`HYPRE.ParaSails`](@ref)
- [`HYPRE.PCG`](@ref)
### Solver configuration
Settings are passed as keyword arguments, with the names matching directly to
`HYPRE_SolverSetXXX` calls from the HYPRE C API (see example below). Most settings are
passed directly to HYPRE, for example `Tol = 1e-9` would be passed directly to
`HYPRE_SolverSetTol` for the correponding solver.
`HYPRE_SolverSet*` calls from the HYPRE C API (see example below). Most settings are passed
directly to HYPRE, for example `Tol = 1e-9` would be passed directly to`HYPRE_SolverSetTol`
for the correponding solver.
Setting a preconditioner can be done by passing a `HYPRESolver` directly with the `Precond`
keyword argument, without any need to also pass the corresponding `HYPRE_SolverSetup` and
@ -30,6 +51,7 @@ settings when used as a preconditioner will have those applied automatically.
@@ -30,6 +51,7 @@ settings when used as a preconditioner will have those applied automatically.
HYPRE.jl adds finalizers to the solvers, which takes care of calling the their respective
`HYPRE_SolverDestroy` function when the solver is garbage collected.
#### Example: Conjugate gradient with algebraic multigrid preconditioner
Here is an example of creating a `PCG` (conjugate gradient) solver with `BoomerAMG`
@ -55,7 +77,8 @@ preconditioner. These settings are added automatically since it is passed as a
@@ -55,7 +77,8 @@ preconditioner. These settings are added automatically since it is passed as a
preconditioner to the `PCG` solver.
!!! not "Corresponding C code"
For comparison, here is the corresponding C code for setting up the solver above:
For comparison between the APIs, here is the corresponding C code for setting up the