xref: /honee/README.md (revision 30300449ff5211ce9c2ac98b2181f53a93aba48a)
1965d9f74SJames Wright# HONEE: High-Order Navier-stokes Equation Evaluator
2ea10196cSJeremy L Thompson
3*30300449SJames 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)
4*30300449SJames Wright[![BSD-2-Clause](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause)
5*30300449SJames Wright[![Documentation](https://img.shields.io/badge/Documentation-latest-blue.svg)](https://phypid.gitlab.io/honee)
6*30300449SJames Wright[![Code Coverage](https://gitlab.com/phypid/honee/badges/main/coverage.svg)](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