Skip to content

Commit

Permalink
Merge pull request #37 from gridap/develop
Browse files Browse the repository at this point in the history
GridapSolvers v0.3
  • Loading branch information
JordiManyer authored May 16, 2024
2 parents acea3e2 + 6733be3 commit 58395b5
Show file tree
Hide file tree
Showing 144 changed files with 11,306 additions and 2,452 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }}
env:
P4EST_ROOT_DIR: "/opt/p4est/2.2/"
P4EST_ROOT_DIR: "/opt/p4est/2.8.5/"
JULIA_PETSC_LIBRARY: "/opt/petsc/3.18/lib/libpetsc"
strategy:
fail-fast: false
Expand Down Expand Up @@ -49,10 +49,10 @@ jobs:
- name: Install p4est
if: steps.cache-p4est.outputs.cache-hit != 'true'
run: |
# Install p4est 2.2 from sources
# Install p4est 2.8.5 from sources
CURR_DIR=$(pwd)
PACKAGE=p4est
VERSION=2.2
VERSION=2.8.5
INSTALL_ROOT=/opt
P4EST_INSTALL=$INSTALL_ROOT/$PACKAGE/$VERSION
TAR_FILE=$PACKAGE-$VERSION.tar.gz
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode
Manifest.toml
LocalPreferences.toml
data
14 changes: 8 additions & 6 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
name = "GridapSolvers"
uuid = "6d3209ee-5e3c-4db7-a716-942eb12ed534"
authors = ["Santiago Badia <[email protected]>", "Jordi Manyer <[email protected]>", "Alberto F. Martin <[email protected]>", "Javier Principe <[email protected]>"]
version = "0.2.0"
version = "0.3.0"

[deps]
ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
Gridap = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e"
GridapDistributed = "f9701e48-63b3-45aa-9a63-9bc6c271f355"
Expand All @@ -15,17 +16,18 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
PartitionedArrays = "5a9dfac6-5c52-46f7-8278-5e2210713be9"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1"

[compat]
ArgParse = "1"
FillArrays = "0.9, 0.10, 0.11, 0.12, 0.13, 1.0"
Gridap = "0.17.18"
GridapDistributed = "0.3"
Gridap = "0.18"
GridapDistributed = "0.4"
GridapP4est = "0.3"
GridapPETSc = "0.5"
IterativeSolvers = "0.9"
MPI = "0.20"
PartitionedArrays = "0.3"
SparseMatricesCSR = "0.6.7"
julia = "1.7"

[extras]
Expand Down
33 changes: 31 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,37 @@
# GridapSolvers :construction: :construction: :construction: **Work in progress** :construction: :construction: :construction:
# GridapSolvers

[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://gridap.github.io/GridapSolvers.jl/stable/)
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://gridap.github.io/GridapSolvers.jl/dev/)
[![Build Status](https://github.com/gridap/GridapSolvers.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/gridap/GridapSolvers.jl/actions/workflows/CI.yml?query=branch%3Amain)
[![Coverage](https://codecov.io/gh/gridap/GridapSolvers.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/gridap/GridapSolvers.jl)

This is a work-in-progress repo where we want to develop a computational framework in order to do R&D in multilevel solvers for PDE discretizations.
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](https://github.com/JuliaRegistries/General). Thus, the installation of Gridap is straight forward using the [Julia's package manager](https://julialang.github.io/Pkg.jl/v1/). Open the Julia REPL, type `]` to enter package mode, and install as follows

```julia
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:

- [MPI.jl](https://juliaparallel.org/MPI.jl/stable/configuration/)
- [GridapPETSc.jl](https://github.com/gridap/GridapPETSc.jl)
- [GridapP4est.jl](https://github.com/gridap/GridapP4est.jl), and [P4est_wrapper.jl](https://github.com/gridap/p4est_wrapper.jl)
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest.toml
build/
site/
Loading

2 comments on commit 58395b5

@JordiManyer
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/106930

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.3.0 -m "<description of version>" 58395b53f4dcb09cffe726312d0305dade2955ff
git push origin v0.3.0

Please sign in to comment.