xref: /honee/README.md (revision 50112c342cebc700a1c10c60728f0d0367631bf5)
1965d9f74SJames Wright# HONEE: High-Order Navier-stokes Equation Evaluator
2ea10196cSJeremy L Thompson
330300449SJames Wright[![GitLab-CI](https://gitlab.com/phypid/honee/badges/main/pipeline.svg?key_text=GitLab-CI)](https://gitlab.com/phypid/honee/badges/main/pipeline.svg?key_text=GitLab-CI)
430300449SJames Wright[![BSD-2-Clause](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause)
5a67b82d9SJames Wright[![Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](https://opensource.org/license/Apache-2-0)
6*50112c34SJeremy L Thompson[![Documentation](https://img.shields.io/badge/Documentation-latest-blue.svg)](https://honee.phypid.org)
730300449SJames Wright[![Code Coverage](https://gitlab.com/phypid/honee/badges/main/coverage.svg)](https://gitlab.com/phypid/honee/-/commits/main)
830300449SJames Wright
9965d9f74SJames Wright<!-- abstract -->
10a67b82d9SJames WrightHONEE (pronounced "honey") is a fluids mechanics library based on [libCEED](https://libceed.org) and [PETSc](https://petsc.org) with support for efficient high-order elements and CUDA, ROCm, and Intel GPUs.
11ea10196cSJeremy L Thompson
1230300449SJames WrightHONEE uses continuous-Galerkin stabilized finite element methods, namely SUPG, with a focus on scale-resolving simulations.
1330300449SJames WrightEffort is made to maintain flexibility in state variable choice, boundary conditions, time integration scheme (both implicit and explicit), and other solver choices.
1430300449SJames WrightHigh-order finite elements implemented in a matrix-free fashion with appropriate preconditioning strategies can overcome these inefficiencies.
15ea10196cSJeremy L Thompson
1630300449SJames Wright# Getting Started
1730300449SJames Wright<!-- getting-started -->
18ea10196cSJeremy L Thompson
1930300449SJames Wright## Download and Install
20acad7547SJames Wright
2130300449SJames WrightA local build and installation provides greater control over build options and optimization.
2230300449SJames WrightHONEE is open-source and can be downloaded from [the HONEE repository on GitLab](https://gitlab.com/phypid/honee).
23ea10196cSJeremy L Thompson
2430300449SJames Wright```console
2530300449SJames Wright$ git clone https://gitlab.com/phypid/honee
26575f8106SLeila Ghaffari```
27ea10196cSJeremy L Thompson
2830300449SJames Wright### Prerequisites
29acad7547SJames Wright
3030300449SJames WrightHONEE is based upon libCEED and PETSc.
3130300449SJames Wright
3230300449SJames Wright#### libCEED
3330300449SJames Wright
3430300449SJames WrightHONEE requires libCEED's `main` development branch, which can be [cloned from Github](https://github.com/CEED/libCEED).
3530300449SJames Wright
3630300449SJames Wright```console
3730300449SJames Wright$ git clone https://github.com/CEED/libCEED
3830300449SJames Wright$ make -C -j8 libCEED
39acad7547SJames Wright```
40acad7547SJames Wright
4130300449SJames WrightThe above will be enough for most simple CPU installations; see the [libCEED documentation](https://libceed.org/en/latest/gettingstarted/#) for details on using GPUs, tuning, and more complicated environments.
4230300449SJames Wright
4330300449SJames Wright#### PETSc
4430300449SJames Wright
4530300449SJames WrightHONEE requires PETSc's `main` development branch, which can be [cloned from GitLab](https://gitlab.com/petsc/petsc).
4630300449SJames Wright
4730300449SJames Wright```console
4830300449SJames Wright$ git clone https://gitlab.com/petsc/petsc
4930300449SJames Wright```
5030300449SJames Wright
5130300449SJames WrightFollow the [PETSc documentation](https://petsc.org/main/install/) to configure and build PETSc.
5230300449SJames WrightIt is recommended that you install with [CGNS library](https://cgns.github.io/) support using `--download-hdf5 --download-cgns`.
5330300449SJames Wright
5430300449SJames Wright### Building
5530300449SJames Wright
5630300449SJames WrightThe environment variables `CEED_DIR`, `PETSC_DIR`, and `PETSC_ARCH` must be set to build HONEE.
5730300449SJames Wright
5830300449SJames WrightAssuming you have cloned the HONEE repository as above, build using:
5930300449SJames Wright
6030300449SJames Wright```console
6130300449SJames Wright$ export CEED_DIR=[path to libCEED] PETSC_DIR=[path to PETSc] PETSC_ARCH=[PETSc arch] ENZYME_LIB=[path to Enzyme]
6230300449SJames Wright$ make -j8
6330300449SJames Wright```
6430300449SJames Wright
6530300449SJames WrightTo run a sample problem, run:
6630300449SJames Wright
6730300449SJames Wright```console
6830300449SJames Wright$ bin/navierstokes -options_file ./gaussianwave.yaml
6930300449SJames Wright```
7030300449SJames Wright
7130300449SJames WrightTo test the installation, use
7230300449SJames Wright
7330300449SJames Wright```console
7430300449SJames Wright$ make test -j8
7530300449SJames Wright```
76836c9e00SJames Wright
77836c9e00SJames Wright<!-- citing -->
78a67b82d9SJames Wright
79a67b82d9SJames Wright## License
80a67b82d9SJames Wright
81a67b82d9SJames WrightHONEE is licensed under either of
82a67b82d9SJames Wright
83a67b82d9SJames Wright * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
84a67b82d9SJames Wright * BSD-2-Clause license ([LICENSE-BSD](LICENSE-BSD) or https://opensource.org/licenses/BSD-2-Clause)
85a67b82d9SJames Wright
86a67b82d9SJames Wrightat your option.
87