Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/prj-/aldaas2021robust
A Robust Algebraic Domain Decomposition Preconditioner For Sparse Normal Equations
https://github.com/prj-/aldaas2021robust
c domain-decomposition fortran least-squares mpi petsc preconditioners python
Last synced: about 2 months ago
JSON representation
A Robust Algebraic Domain Decomposition Preconditioner For Sparse Normal Equations
- Host: GitHub
- URL: https://github.com/prj-/aldaas2021robust
- Owner: prj-
- Created: 2021-07-11T12:34:17.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-02T17:20:38.000Z (4 months ago)
- Last Synced: 2024-10-13T16:28:36.578Z (2 months ago)
- Topics: c, domain-decomposition, fortran, least-squares, mpi, petsc, preconditioners, python
- Language: Fortran
- Homepage:
- Size: 10.7 MB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# A Robust Algebraic Domain Decomposition Preconditioner for Sparse Normal Equations
> A parallel implementation of the preconditioner suitably interfaced with the PETSc library.
The code available in this repository can reproduce the results from the following [paper](https://epubs.siam.org/doi/abs/10.1137/21M1434891).
```
@article{aldaas2021robust,
Author = {Al Daas, Hussam and Jolivet, Pierre and Scott, Jennifer A.},
Title = {A Robust Algebraic Domain Decomposition Preconditioner for Sparse Normal Equations},
Year = {2022},
Journal = {SIAM Journal on Scientific Computing},
Pages = {A1047--A1068},
Volume = {44},
Issue = {3},
Url = {https://github.com/prj-/aldaas2021robust}
}
```## Getting started
### Dependencies
Make sure you have access to a recent [PETSc](https://petsc.org/) installation (version 3.18.0 or above), configured with the options `--download-slepc --download-hpddm`, using 32-bit indices, double-precision real-valued scalars (`--with-64-bit-indices=0 --with-precision=double --with-scalar-type=real`).
Then, after setting the appropriate environment variable `${PETSC_DIR}` and `${PETSC_ARCH}` compile the single C source file from the repository with the following command.
```
$ make sparse_ls
```
When using Fortran, the above command should read `make sparse_ls_f` instead.
When using Python, make sure that petsc4py is visible in your environment variable `${PYTHONPATH}`, e.g., `PYTHONPATH=${PYTHONPATH}:${PETSC_DIR}/${PETSC_ARCH}/lib`.### Usage example
One should be able to launch the following commands, which solve respectively the linear least-squares problems associated to mesh_deform and lp_stocfor3 from the SuiteSparse Matrix Collection.
```
$ mpirun -np 4 ./sparse_ls -mat_name datafiles/mesh_deform.dat -options_file default.rc -pc_type hpddm
$ mpirun -np 4 ./sparse_ls -mat_name datafiles/lp_stocfor3.dat -options_file default.rc -pc_type hpddm
```
The command line option `-pc_type` may also be set to `asm`, `hypre` (if PETSc has been configured with `--download-hypre`), `gamg`, `qr` (if configured with `--download-suitesparse`), or whatever the user feels like trying out.
All the other matrices are available at the following URL: `http://joliv.et/aldaas2021robust/mat_name.ext`, where `mat_name` is any of the identifier from the paper, and `ext` is either `dat` (PETSc binary format) or `mat` (MATLAB binary format).
Here are two examples: http://joliv.et/aldaas2021robust/Hardesty2.dat and http://joliv.et/aldaas2021robust/cont11_l.mat. Matrices supplied through the command-line option `-mat_name` must always be in PETSc binary format. `.mat` files are merely provided for an easier inspection in MATLAB, e.g., using the [spy](https://mathworks.com/help/matlab/ref/spy.html) command.## Acknowledgements
* HPC resources of [TGCC@CEA](http://www-hpc.cea.fr/index-en.htm) under the allocation A0090607519 made by [GENCI](http://www.genci.fr/en)
* L. Dalcin, V. Hapla, and T. Isaac for their recent contributions to PETSc that made the implementation more flexible