HyTeG (Hybrid Tetrahedral Grids) is a C++ framework for large scale high performance finite element simulations based on (but not limited to) geometric multigrid.

The framework is built on top of the core of the [waLBerla framework](http://walberla.net"waLBerla homepage") and therefore requires the its source code to be cloned.

Required:

* the waLBerla source code ([waLBerla GitLab repository](https://i10git.cs.fau.de/walberla/walberla"waLBerla repository"))

*[Boost](https://www.boost.org"boost homepage")

*[CMake](https://cmake.org/"CMake homepage")

* a C++14 compliant compiler (e.g. gcc, clang, Intel or MSVC)

Optional:

* MPI (e.g. [OpenMPI](https://www.open-mpi.org/"OpenMPI homepage")) for parallel runs

*[PETSc](https://www.mcs.anl.gov/petsc/"PETSc homepage") for efficient coarse grid solvers

*[ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview"ParMETIS homepage") for high-quality load balancing

The [Doxygen documentation](http://hyteg.pages.walberla.net/hyteg/index.html"HyTeG Doxygen") provides some basic tutorials for example applications.

If you are interested in more background information you may either have

a look at

* our article [The HyTeG finite-element software framework for scalable multigrid solvers](https://www.tandfonline.com/doi/abs/10.1080/17445760.2018.1506453) - please cite this if you use the software

#### CCache

```

@article{doi:10.1080/17445760.2018.1506453,

author = {Nils Kohl and Dominik Thönnes and Daniel Drzisga and Dominik

Bartuschat and Ulrich Rüde},

title = {The {HyTeG} finite-element software framework for scalable multigrid solvers},

journal = {International Journal of Parallel, Emergent and Distributed Systems},

volume = {34},

number = {5},

pages = {477-496},

year = {2019},

publisher = {Taylor & Francis},

doi = {10.1080/17445760.2018.1506453}

}

```

* the [TerraNeo web page](http://terraneo.fau.de) providing information and publications regarding the related research project

## Dependencies

The framework is built on top of the core of the [waLBerla framework](http://walberla.net"waLBerla homepage") and therefore requires the its source code to be cloned.

Required:

* the waLBerla source code ([waLBerla GitLab repository](https://i10git.cs.fau.de/walberla/walberla"waLBerla repository"))

*[Boost](https://www.boost.org"boost homepage")

*[CMake](https://cmake.org/"CMake homepage")

* a C++14 compliant compiler (e.g. gcc, clang, Intel or MSVC)

Optional:

*[Eigen](http://eigen.tuxfamily.org"Eigen homepage") for some linear algebra operations

* MPI (e.g. [OpenMPI](https://www.open-mpi.org/"OpenMPI homepage")) for parallel runs

*[PETSc](https://www.mcs.anl.gov/petsc/"PETSc homepage") for efficient coarse grid solvers

*[ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview"ParMETIS homepage") for high-quality load balancing

## Notes

### CCache

Due to the large amount of generated files it is advisable to activate ccache.

To do so use the CMake setting

-DCMAKE_CXX_COMPILER_LAUNCHER=ccache

See also [this StackOverflow answer](https://stackoverflow.com/a/37828605).

\ No newline at end of file

See also [this StackOverflow answer](https://stackoverflow.com/a/37828605).