xref: /honee/README.md (revision 836c9e00c11eaa7b596c765074a7e646b6e47723)
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)
530300449SJames Wright[![Documentation](https://img.shields.io/badge/Documentation-latest-blue.svg)](https://phypid.gitlab.io/honee)
630300449SJames Wright[![Code Coverage](https://gitlab.com/phypid/honee/badges/main/coverage.svg)](https://gitlab.com/phypid/honee/-/commits/main)
730300449SJames Wright
8965d9f74SJames Wright<!-- abstract -->
930300449SJames WrightHONEE (prounounced "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.
10ea10196cSJeremy L Thompson
1130300449SJames WrightHONEE uses continuous-Galerkin stabilized finite element methods, namely SUPG, with a focus on scale-resolving simulations.
1230300449SJames WrightEffort is made to maintain flexibility in state variable choice, boundary conditions, time integration scheme (both implicit and explicit), and other solver choices.
1330300449SJames WrightHigh-order finite elements implemented in a matrix-free fashion with appropriate preconditioning strategies can overcome these inefficiencies.
14ea10196cSJeremy L Thompson
1530300449SJames Wright# Getting Started
1630300449SJames Wright<!-- getting-started -->
17ea10196cSJeremy L Thompson
1830300449SJames Wright## Download and Install
19acad7547SJames Wright
2030300449SJames WrightA local build and installation provides greater control over build options and optimization.
2130300449SJames WrightHONEE is open-source and can be downloaded from [the HONEE repository on GitLab](https://gitlab.com/phypid/honee).
22ea10196cSJeremy L Thompson
2330300449SJames Wright```console
2430300449SJames Wright$ git clone https://gitlab.com/phypid/honee
25575f8106SLeila Ghaffari```
26ea10196cSJeremy L Thompson
2730300449SJames Wright### Prerequisites
28acad7547SJames Wright
2930300449SJames WrightHONEE is based upon libCEED and PETSc.
3030300449SJames Wright
3130300449SJames Wright#### libCEED
3230300449SJames Wright
3330300449SJames WrightHONEE requires libCEED's `main` development branch, which can be [cloned from Github](https://github.com/CEED/libCEED).
3430300449SJames Wright
3530300449SJames Wright```console
3630300449SJames Wright$ git clone https://github.com/CEED/libCEED
3730300449SJames Wright$ make -C -j8 libCEED
38acad7547SJames Wright```
39acad7547SJames Wright
4030300449SJames 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.
4130300449SJames Wright
4230300449SJames Wright#### PETSc
4330300449SJames Wright
4430300449SJames WrightHONEE requires PETSc's `main` development branch, which can be [cloned from GitLab](https://gitlab.com/petsc/petsc).
4530300449SJames Wright
4630300449SJames Wright```console
4730300449SJames Wright$ git clone https://gitlab.com/petsc/petsc
4830300449SJames Wright```
4930300449SJames Wright
5030300449SJames WrightFollow the [PETSc documentation](https://petsc.org/main/install/) to configure and build PETSc.
5130300449SJames WrightIt is recommended that you install with [CGNS library](https://cgns.github.io/) support using `--download-hdf5 --download-cgns`.
5230300449SJames Wright
5330300449SJames Wright### Building
5430300449SJames Wright
5530300449SJames WrightThe environment variables `CEED_DIR`, `PETSC_DIR`, and `PETSC_ARCH` must be set to build HONEE.
5630300449SJames Wright
5730300449SJames WrightAssuming you have cloned the HONEE repository as above, build using:
5830300449SJames Wright
5930300449SJames Wright```console
6030300449SJames Wright$ export CEED_DIR=[path to libCEED] PETSC_DIR=[path to PETSc] PETSC_ARCH=[PETSc arch] ENZYME_LIB=[path to Enzyme]
6130300449SJames Wright$ make -j8
6230300449SJames Wright```
6330300449SJames Wright
6430300449SJames WrightTo run a sample problem, run:
6530300449SJames Wright
6630300449SJames Wright```console
6730300449SJames Wright$ bin/navierstokes -options_file ./gaussianwave.yaml
6830300449SJames Wright```
6930300449SJames Wright
7030300449SJames WrightTo test the installation, use
7130300449SJames Wright
7230300449SJames Wright```console
7330300449SJames Wright$ make test -j8
7430300449SJames Wright```
75*836c9e00SJames Wright
76*836c9e00SJames Wright<!-- citing -->
77