Skip to content

Commit d7c0fa8

Browse files
release of v1.0
1 parent 0559bae commit d7c0fa8

File tree

6 files changed

+21
-109
lines changed

6 files changed

+21
-109
lines changed

CHANGELOG.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,18 @@ All notable changes to this project will be documented in this file.
2828

2929
### Added
3030

31+
### Changed
32+
33+
### Fixed
34+
35+
## [1.0.0] - 2027-09-24
36+
37+
### Added
38+
3139
- `HMatrix` recompression with SVD.
3240
- Generic recompressed low-rank compression with `RecompressedLowRankGenerator`.
3341
- Checks about `UPLO` for hmatrix factorization.
34-
- `HMatrixBuilder` for easier `HMatrix` creation (especially when using only the hmatrix part of Htool-DDM).
42+
- `HMatrixBuilder` for easier `HMatrix` creation (especially when using only the `HMatrix` component of Htool-DDM).
3543
- `add_hmatrix_vector_product` and `add_hmatrix_matrix_product` for working in user numbering.
3644
- For C++17 and onward, interfaces supporting execution policies (default being sequential execution) has been added for these functions:
3745
- `HMatrixTreeBuilder::build`
@@ -62,7 +70,7 @@ All notable changes to this project will be documented in this file.
6270
- `ClusterTreeBuilder` has now one strategy as `VirtualPartitioning`. Usual implementations are still available, for example using `Partitioning<double,ComputeLargestExtent,RegularSplitting>`.
6371
- `ClusterTreeBuilder` parameter `minclustersize` was removed, and a parameter `maximal_leaf_size` has been added.
6472
- `DistributedOperator` supports now both "global-to-local" and "local-to-local" operators, using respectively `VirtualGlobalToLocalOperator` and `VirtualLocalToLocalOperator` interfaces. The linear algebra associated has been updated to follow a more Blas-like interface.
65-
- `MatrixView` has been added to ease the use of matrix product. Most public functions for matrix products are also new templated to accept, `Matrix`, `MatrixView` or any other type following the same interface.
73+
- `MatrixView` has been added to ease the use of matrix product. Most public functions for matrix products have also new template arguments to accept, `Matrix`, `MatrixView` or any other type following the same interface.
6674

6775
### Fixed
6876

@@ -80,7 +88,7 @@ All notable changes to this project will be documented in this file.
8088
- `VirtualLocalOperator` which is the interface local operators must satisfy,
8189
- `LocalDenseMatrix` is an example of local operator consisting of a dense matrix `Matrix`,
8290
- and `LocalHMatrix` is an example of local operator consisting of a hierarchical matrix based on `HMatrix` (different from the previous `HMatrix`, see below).
83-
- Utility classes that help build `DistributedOperator` and `DDM` objects are available, for example: `DefaultApproximationBuilder` and `DDMSolverBuilder`. They do all the wiring between the inner interfaces between Htool-DDM's objects, see `include/htool/istributed_operator/utility.hpp` and `include/htool/solvers/utility.hpp`.
91+
- Utility classes that help build `DistributedOperator` and `DDM` objects are available, for example: `DefaultApproximationBuilder` and `DDMSolverBuilder`. They do all the wiring between the inner interfaces between Htool-DDM's objects, see `include/htool/distributed_operator/utility.hpp` and `include/htool/solvers/utility.hpp`.
8492
- Formatter has been added, see `.clang_format`.
8593
- A logger has been added with `Logger`. Its output can be customizerd via `IObjectWriter`.
8694

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ cmake_minimum_required(VERSION 3.10)
55
if(${CMAKE_VERSION} VERSION_LESS 3.12)
66
project(
77
Htool
8-
VERSION 0.9.0
8+
VERSION 1.0.0
99
LANGUAGES CXX)
1010
else()
1111
project(
1212
Htool
13-
VERSION 0.9.0
13+
VERSION 1.0.0
1414
DESCRIPTION "A header only c++ library that provides Hierarchical matrices."
1515
HOMEPAGE_URL "https://github.com/htool-ddm/htool"
1616
LANGUAGES CXX)

NOTES.md

Lines changed: 0 additions & 32 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,7 @@
1-
# HTOOL [![CI](https://github.com/htool-ddm/htool/actions/workflows/CI.yml/badge.svg)](https://github.com/htool-ddm/htool/actions/workflows/CI.yml) [![codecov](https://codecov.io/gh/htool-ddm/htool/branch/main/graph/badge.svg?token=1JJ40GPFA5)](https://codecov.io/gh/htool-ddm/htool)
1+
# Htool-DDM [![CI](https://github.com/htool-ddm/htool/actions/workflows/CI.yml/badge.svg)](https://github.com/htool-ddm/htool/actions/workflows/CI.yml) [![codecov](https://codecov.io/gh/htool-ddm/htool/branch/main/graph/badge.svg?token=1JJ40GPFA5)](https://codecov.io/gh/htool-ddm/htool) [![Documentation](https://img.shields.io/badge/docs-online-blue.svg)](http://htool-ddm.pages.math.cnrs.fr/)
22

3-
## What is Htool?
3+
**Htool-DDM** is a lightweight header-only C++14 library that provides an easy-to-use interface for parallel iterative solvers and a default matrix compression via in-house hierarchical matrix implementation. Its goal is to provide modern iterative solvers for dense/compressed linear systems.
44

5-
Htool is an implementation of hierarchical matrices (cf. this [reference](http://www.springer.com/gp/book/9783662473238) or this [one](http://www.springer.com/gp/book/9783540771463)), it was written to test Domain Decomposition Methods (DDM) applied to Boundary Element Method (BEM). It provides:
5+
It is also an extensible framework which contains several customization points. For example, one can provide its own compression algorithm, or customize the default hierarchical compression. Via its interface with [HPDDM](https://github.com/hpddm/hpddm), it is also a flexible tool to test various iterative solvers and preconditioners.
66

7-
* routines to build hierarchical matrix structures (cluster trees, block trees, low-rank matrices and block matrices),
8-
* parallel matrix-vector and matrix-matrix product using MPI and OpenMP,
9-
* preconditioning techniques using domain decomposition methods,
10-
* the possibility to use Htool with any generator of coefficients (e.g., your own BEM library),
11-
* an interface with [HPDDM](https://github.com/hpddm/hpddm) for iterative solvers,
12-
* and several utility functions to display information about matrix structures and timing.
13-
14-
It is now used in [FreeFEM](https://freefem.org) starting from version 4.5, and we developed a [Python interface](https://github.com/htool-ddm/htool_python) using `pybind11`.
15-
16-
## How to use Htool?
17-
18-
### Dependencies
19-
20-
Htool is a header-only library written in C++11 with MPI and OpenMP, but it can be used without the latter if needed. Then, to use Htool, it requires:
21-
22-
* BLAS, to perform algebraic operations (dense matrix-matrix or matrix-vector operations).
23-
24-
And if you want, it needs:
25-
26-
* LAPACK, to perform SVD compression,
27-
* HPDDM and its dependencies (BLAS, LAPACK) to use iterative solvers and DDM preconditioners.
28-
29-
30-
### Installing
31-
32-
Since Htool is a header-only library, you can just include in your code the `include` folder of this repository. You can also use the following command to install the `include` folder in the one of your system to make it more widely available: in the root of this repository on your system, you can do:
33-
34-
```bash
35-
mkdir build
36-
cd build
37-
cmake ..
38-
cmake --build . --config Release --target install -- -j $(nproc)
39-
```
40-
41-
Note that you can modify the `install` prefix using `cmake .. -DCMAKE_INSTALL_PREFIX:PATH=your/install/path` instead of the third line.
42-
43-
### Embedding Htool in your code
44-
45-
We mostly refer to `smallest_example.cpp` and `smallest_example.py` in the `examples` folder to see how to use Htool.
46-
47-
A function that generates the coefficients must be provided to Htool. To do so, a structure inheriting from `IMatrix<T>` must be defined with a method called `T get_coef(const int& i, const int& j) const`, where `T` is the type of your coefficients. This method will return the coefficient (i,j) of the considered problem. A method `get_submatrix` can also be defined to provide a more efficient way to build a sub-block of the matrix. An example of such interface is given in `test_hmat_partialACA.hpp` or [BemTool](https://github.com/xclaeys/BemTool) (see `bemtool/miscellaneous/htool_wrap.hpp`). This new structure and the geometry will be used to define an object `HMatrix`.
48-
49-
A new type of compressor can also be added by defining a structure inheriting from `LowRankMatrix` with a method called `build` which populates the data members needed (see `partialACA.hpp`).
50-
51-
### Python interface
52-
53-
See this [repository](https://github.com/htool-ddm/htool_python).
54-
55-
## Who is behind Htool?
56-
57-
If you need help or have questions regarding Htool, feel free to contact [Pierre Marchand](https://www.ljll.math.upmc.fr/marchandp/) and Pierre-Henri Tournier.
58-
59-
## Acknowledgements
60-
61-
[University of Bath](https://www.bath.ac.uk), United Kingdom
62-
[ANR NonlocalDD](https://www.ljll.math.upmc.fr/~claeys/nonlocaldd/index.html), (grant ANR-15-CE23-0017-01), France
63-
[Inria](http://www.inria.fr/en/) Paris, France
64-
[Laboratoire Jacques-Louis Lions](https://www.ljll.math.upmc.fr/en/) Paris, France
65-
66-
## Collaborators/contributors
67-
68-
[Matthieu Ancellin](https://ancell.in)
69-
[Xavier Claeys](https://www.ljll.math.upmc.fr/~claeys/)
70-
[Pierre Jolivet](http://jolivet.perso.enseeiht.fr/)
71-
[Frédéric Nataf](https://www.ljll.math.upmc.fr/nataf/)
72-
73-
![ANR NonlocalDD](figures/anr_nonlocaldd.png)
7+
See [documentation](http://htool-ddm.pages.math.cnrs.fr/) for more information.

include/htool/htool.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
#include "hmatrix/lrmat/linalg.hpp"
2020
#include "hmatrix/lrmat/lrmat.hpp"
2121
#include "hmatrix/lrmat/partialACA.hpp"
22+
#include "hmatrix/lrmat/recompressed_low_rank_generator.hpp"
2223
#include "hmatrix/lrmat/sympartialACA.hpp"
2324
#include "matrix/linalg.hpp"
2425
#include "matrix/matrix.hpp"
26+
#include "matrix/matrix_view.hpp"
2527
#include "misc/misc.hpp"
2628
#include "misc/user.hpp"
2729

include/htool/htool_version.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#ifndef HTOOL_VERSION_HPP
22
#define HTOOL_VERSION_HPP
33

4-
#define HTOOL_VERSION_MAJOR 0
5-
#define HTOOL_VERSION_MINOR 9
4+
#define HTOOL_VERSION_MAJOR 1
5+
#define HTOOL_VERSION_MINOR 0
66
#define HTOOL_VERSION_SUBMINOR 0
77

88
#define HTOOL_VERSION_EQ(MAJOR, MINOR, SUBMINOR) \

0 commit comments

Comments
 (0)