1965d9f74SJames Wright# HONEE: High-Order Navier-stokes Equation Evaluator 2ea10196cSJeremy L Thompson 3*30300449SJames Wright[](https://gitlab.com/phypid/honee/badges/main/pipeline.svg?key_text=GitLab-CI) 4*30300449SJames Wright[](https://opensource.org/licenses/BSD-2-Clause) 5*30300449SJames Wright[](https://phypid.gitlab.io/honee) 6*30300449SJames Wright[](https://gitlab.com/phypid/honee/-/commits/main) 7*30300449SJames Wright 8965d9f74SJames Wright<!-- abstract --> 9*30300449SJames 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 11*30300449SJames WrightHONEE uses continuous-Galerkin stabilized finite element methods, namely SUPG, with a focus on scale-resolving simulations. 12*30300449SJames WrightEffort is made to maintain flexibility in state variable choice, boundary conditions, time integration scheme (both implicit and explicit), and other solver choices. 13*30300449SJames WrightHigh-order finite elements implemented in a matrix-free fashion with appropriate preconditioning strategies can overcome these inefficiencies. 14ea10196cSJeremy L Thompson 15*30300449SJames Wright# Getting Started 16*30300449SJames Wright<!-- getting-started --> 17ea10196cSJeremy L Thompson 18*30300449SJames Wright## Download and Install 19acad7547SJames Wright 20*30300449SJames WrightA local build and installation provides greater control over build options and optimization. 21*30300449SJames WrightHONEE is open-source and can be downloaded from [the HONEE repository on GitLab](https://gitlab.com/phypid/honee). 22ea10196cSJeremy L Thompson 23*30300449SJames Wright```console 24*30300449SJames Wright$ git clone https://gitlab.com/phypid/honee 25575f8106SLeila Ghaffari``` 26ea10196cSJeremy L Thompson 27*30300449SJames Wright### Prerequisites 28acad7547SJames Wright 29*30300449SJames WrightHONEE is based upon libCEED and PETSc. 30*30300449SJames Wright 31*30300449SJames Wright#### libCEED 32*30300449SJames Wright 33*30300449SJames WrightHONEE requires libCEED's `main` development branch, which can be [cloned from Github](https://github.com/CEED/libCEED). 34*30300449SJames Wright 35*30300449SJames Wright```console 36*30300449SJames Wright$ git clone https://github.com/CEED/libCEED 37*30300449SJames Wright$ make -C -j8 libCEED 38acad7547SJames Wright``` 39acad7547SJames Wright 40*30300449SJames 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. 41*30300449SJames Wright 42*30300449SJames Wright#### PETSc 43*30300449SJames Wright 44*30300449SJames WrightHONEE requires PETSc's `main` development branch, which can be [cloned from GitLab](https://gitlab.com/petsc/petsc). 45*30300449SJames Wright 46*30300449SJames Wright```console 47*30300449SJames Wright$ git clone https://gitlab.com/petsc/petsc 48*30300449SJames Wright``` 49*30300449SJames Wright 50*30300449SJames WrightFollow the [PETSc documentation](https://petsc.org/main/install/) to configure and build PETSc. 51*30300449SJames WrightIt is recommended that you install with [CGNS library](https://cgns.github.io/) support using `--download-hdf5 --download-cgns`. 52*30300449SJames Wright 53*30300449SJames Wright### Building 54*30300449SJames Wright 55*30300449SJames WrightThe environment variables `CEED_DIR`, `PETSC_DIR`, and `PETSC_ARCH` must be set to build HONEE. 56*30300449SJames Wright 57*30300449SJames WrightAssuming you have cloned the HONEE repository as above, build using: 58*30300449SJames Wright 59*30300449SJames Wright```console 60*30300449SJames Wright$ export CEED_DIR=[path to libCEED] PETSC_DIR=[path to PETSc] PETSC_ARCH=[PETSc arch] ENZYME_LIB=[path to Enzyme] 61*30300449SJames Wright$ make -j8 62*30300449SJames Wright``` 63*30300449SJames Wright 64*30300449SJames WrightTo run a sample problem, run: 65*30300449SJames Wright 66*30300449SJames Wright```console 67*30300449SJames Wright$ bin/navierstokes -options_file ./gaussianwave.yaml 68*30300449SJames Wright``` 69*30300449SJames Wright 70*30300449SJames WrightTo test the installation, use 71*30300449SJames Wright 72*30300449SJames Wright```console 73*30300449SJames Wright$ make test -j8 74*30300449SJames Wright``` 75