# Honeycomb
[][CIOHC]
[][GH]
[](https://github.com/LIHPC-Computational-Geometry/honeycomb/actions/workflows/build_nix.yml)
[](https://github.com/LIHPC-Computational-Geometry/honeycomb/actions/workflows/test.yml)
[](https://codecov.io/github/LIHPC-Computational-Geometry/honeycomb)
Honeycomb aims to provide a safe, efficient and scalable implementation of combinatorial maps for meshing applications.
More specifically, the goal is to converge towards a (or multiple) structure(s) adapted to algorithms exploiting GPUs
and many-core architectures.
The current objective is to profile and benchmark performance of our structure in the context of our
kernels' implementations, and start introducing concurrency into our code.
## Quickstart
You can add `honeycomb` as a dependency of your project by adding the following lines to its `Cargo.toml`:
```toml
# [dependencies]
honeycomb = {
git = "https://github.com/LIHPC-Computational-Geometry/honeycomb",
tag = "0.10.1" # remove tag for master branch build
}
```
Alternatively, you can add the sub-crates that are currently published on crates.io:
```toml
# [dependencies]
honeycomb-core = "0.10.1"
honeycomb-kernels = "0.10.1"
honeycomb-render = "0.10.1"
```
## Project content
### Rust
The content of each member is described in their respective Rust Doc as well as in the [user guide][UGW]. The following
crates are published:
- [][CIOHC] [][DOCHC]
core structures
- [][CIOHK] [][DOCHK]
meshing kernels
- [][CIOHR] [][DOCHR]
visualizing tool
The repository also hosts a set of binaries in the `applications` crate. These are used to showcase and benchmark our
library.
### User guide
The [user guide][UG] provides an overview of everything available in the project as well as usage instructions. It can
be generated offline using **mdbook**. Note that generating the doc using a stable toolchain is possible, the features
just won't be documented as clearly.
```shell
# Serve the doc on a local server
mdbook serve --open -d ../target/doc/ user-guide/ &
cargo +nightly doc --all --all-features --no-deps
```
```shell
# Kill the local server
kill $(pidof mdbook)
# Without pidof
## Contributing
Contributions are welcome and accepted as pull requests on [GitHub][GH]. Feel free to use issues to report bugs,
missing documentation or suggest improvements of the project.
Note that a most of the code possess documentation, including private modules / items / sections. You can generate
the complete documentation by using the instructions [above](#user-guide) and passing the option
`--document-private-items` to `cargo doc`.
[GH]: https://github.com/LIHPC-Computational-Geometry/honeycomb
## License
Licensed under either of
* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your preference.
The [SPDX](https://spdx.dev) license identifier for this project is `MIT OR Apache-2.0`.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
[UG]: https://lihpc-computational-geometry.github.io/honeycomb/
[UGW]: https://lihpc-computational-geometry.github.io/honeycomb/project-structure/workspace.html
[DOCHC]: https://docs.rs/honeycomb-core/
[CIOHC]:https://crates.io/crates/honeycomb-core
[DOCHK]: https://docs.rs/honeycomb-kernels/
[CIOHK]: https://crates.io/crates/honeycomb-kernels
[DOCHR]: https://docs.rs/honeycomb-render/
[CIOHR]:https://crates.io/crates/honeycomb-render
[DOCHB]: https://lihpc-computational-geometry.github.io/honeycomb/honeycomb_benches/
[DOCHU]: https://lihpc-computational-geometry.github.io/honeycomb/honeycomb_utils/