Julia interface to hypre linear solvers (https://github.com/hypre-space/hypre)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Fredrik Ekre 2dfe06201e
Add Runic to CI and generator.
11 months ago
.github Add Runic to CI and generator. 11 months ago
docs Drop support for Julia < 1.10. (#27) 1 year ago
examples runic -i . 11 months ago
ext runic -i . 11 months ago
gen Add Runic to CI and generator. 11 months ago
lib runic -i . 11 months ago
src runic -i . 11 months ago
test runic -i . 11 months ago
.gitignore Documentation skeleton. 3 years ago
.pre-commit-config.yaml Add pre-commit and ExplicitImports code checks 1 year ago
CHANGELOG.md Update changelog for release 1.7.0 1 year ago
LICENSE Generated files. 4 years ago
Project.toml Drop support for Julia < 1.10. (#27) 1 year ago
README.md Update changelog for release 1.7.0 1 year ago

README.md

HYPRE.jl

Documentation Build Status

Julia interface to HYPRE ("high performance preconditioners and solvers featuring multigrid methods for the solution of large, sparse linear systems of equations on massively parallel computers").

While the main purpose of HYPRE is to solve problems on multiple cores, it can also be used for single core problems. HYPRE.jl aims to make it easy to use both modes of operation, with an interface that should be familiar to Julia programmers. This README includes some basic examples -- refer to the documentation for more details, and for information about the included solvers and preconditioners and how to configure them.

Installation

HYPRE.jl can be installed from the Pkg REPL (press ] in the Julia REPL to enter):

(@v1) pkg> add HYPRE

To configure MPI, see the documentation for MPI.jl.

Changes

All notable changes are documented in CHANGELOG.md.

Usage

Some basic usage examples are shown below. See the documentation for details.

Example: Single-core solve with standard sparse matrices

It is possible to use Julia's standard sparse arrays (SparseMatrixCSC from the SparseArrays.jl standard library, and SparseMatrixCSR from the SparseMatricesCSR.jl package) directly in HYPRE.jl. For example, to solve Ax = b with conjugate gradients:

# Initialize linear system
A = SparseMatrixCSC(...)
b = Vector(...)

# Create a conjugate gradients solver
cg = HYPRE.PCG()

# Compute the solution
x = HYPRE.solve(cg, A, b)

Example: Multi-core solve using PartitionedArrays.jl

For multi-core problems it is possible to use PartitionedArrays.jl directly with HYPRE.jl. Once the linear system is setup the solver interface is identical. For example, to solve Ax = b with bi-conjugate gradients and an algebraic multigrid preconditioner:

# Initialize linear system
A = PSparseMatrix(...)
b = PVector(...)

# Create preconditioner
precond = BoomerAMG()

# Create a bi-conjugate gradients solver
bicg = HYPRE.BiCGSTAB(; Precond = precond)

# Compute the solution
x = HYPRE.solve(bicg, A, b)