GithubHelp home page GithubHelp logo

xyuan / hyteg Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lssfau/hyteg

0.0 1.0 0.0 28.96 MB

HyTeG (Hybrid Tetrahedral Grids) is a C++ framework for large scale high performance finite element simulations based on (but not limited to) geometric multigrid. This is a mirror of the official https://i10git.cs.fau.de/hyteg/hyteg. Please create Issues there!

License: Other

CMake 0.11% C++ 99.66% Python 0.22% GLSL 0.01% Makefile 0.01% Shell 0.01%

hyteg's Introduction

HyTeG

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

Build instructions

To build HyTeG, clone the HyTeG and the waLBerla source code:

$ git clone --recurse-submodules https://i10git.cs.fau.de/hyteg/hyteg.git

--recurse-submodules will automatically initialize and clone walberla as a submodule.

$ mkdir hyteg-build 
$ cd hyteg-build
$ cmake ../hyteg

CMake will then produce Makefiles for the included tests and applications. To build and run an application (e.g. a multigrid benchmark setting) invoke:

hyteg-build $ cd apps/MultigridStudies
hyteg-build/apps/MultigridStudies $ make
hyteg-build/apps/MultigridStudies $ ./MultigridStudies

... or for a parallel run:

hyteg-build/apps/MultigridStudies $ mpirun -np 4 ./MultigridStudies

Documentation

The Doxygen documentation 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 - please cite this if you use the software

    @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 providing information and publications regarding the related research project

Dependencies

The framework is built on top of the core of the waLBerla framework and therefore requires the its source code to be cloned.

Required:

Optional:

  • Eigen for some linear algebra operations

    Eigen is automatically cloned as a git submodule. Therefore to activate Eigen, simply set the cmake variable HYTEG_BUILD_WITH_EIGEN to ON, e.g. via:

    $ cmake ../hyteg -DHYTEG_BUILD_WITH_EIGEN=ON

    CMake will automatically find the Eigen submodule, there is no need to specify a path or to download Eigen at all.

  • MPI (e.g. OpenMPI) for parallel runs

  • PETSc for efficient coarse grid solvers

  • ParMETIS for high-quality load balancing

Notes

Code Style

To keep our code consistently formatted, we use ClangFormat. There is a .clang-format file located in the root directory where all the formatting rules are documented. The rules can be automatically applied by using:

clang-format -i $FileName

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.

Acknowledgements

Artwork by Manuel Weimann.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.