1965d9f74SJames Wright# HONEE: High-Order Navier-stokes Equation Evaluator 2ea10196cSJeremy L Thompson 330300449SJames Wright[](https://gitlab.com/phypid/honee/badges/main/pipeline.svg?key_text=GitLab-CI) 430300449SJames Wright[](https://opensource.org/licenses/BSD-2-Clause) 530300449SJames Wright[](https://phypid.gitlab.io/honee) 630300449SJames Wright[](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