Skip to content
Simplex mesh adaptivity for HPC
Branch: master
Clone or download
Latest commit 66209e0 Jul 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
aux Recode FEniCS Docker command for myself Jun 13, 2018
bin Adding nvcc_wrapper Oct 7, 2018
cmake no trilinos Apr 9, 2019
doc s/ibaned/SNLComputation/ ; fix cmake min version in documentation Feb 7, 2019
example add Mesh::isync_array to perform asynchronous update of arrays. Apr 29, 2019
src
tpl get rid of backward-cpp May 30, 2019
.clang-format adjust some clang-format parameters Aug 15, 2016
.clang-tidy clang-tidy: don't modernise loops Aug 3, 2016
.gitignore update .gitignore Aug 17, 2016
CMakeLists.txt bump patch number for bug fixes Jul 22, 2019
LICENSE Sandia LICENSE part 2 Apr 27, 2017
README.md Lots of README updates Jan 24, 2019

README.md

Omega_h Logo

Omega_h

Reliable mesh adaptation

Omega_h is a C++11 library that implements tetrahedron and triangle mesh adaptativity, with a focus on scalable HPC performance using (optionally) MPI and OpenMP or CUDA. It is intended to provided adaptive functionality to existing simulation codes. Mesh adaptivity allows one to minimize both discretization error and number of degrees of freedom live during the simulation, as well as enabling moving object and evolving geometry simulations. Omega_h will do this for you in a way that is fast, memory-efficient, and portable across many different architectures.

Installing / Getting started

For a bare minimum setup with no parallelism, you just need CMake, a C++11 compiler, and preferably ZLib installed.

git clone git@github.com:SNLComputation/omega_h.git
cd omega_h
cmake . -DCMAKE_INSTALL_PREFIX=/your/choice
make install

This should install Omega_h under the given prefix in a way you can access from your own CMake files using these CMake commands:

find_package(Omega_h)
target_link_libraries(myprogram Omega_h::omega_h)

Features

Omega_h provides at least the following:

  • Adaptation of tetrahedral and triangle meshes in parallel
  • Anisotropic metric field support
  • Given good input element quality, the output element quality is also guaranteed.
  • Scalable MPI parallelism
  • On-node OpenMP or CUDA parallelism
  • Fully deterministic execution
  • Given the same mesh, global numbering, and size field, results will be independent of parallel partitioning and ordering.

Configuration

Below we document some key CMake configuration options:

Omega_h_USE_MPI

Default: OFF

Whether to enable MPI parallelism. We recommend using MPICH or another MPI 3.0 implementation, but we also support MPI version 2.1. If this is ON, set CMAKE_CXX_COMPILER to your MPI compiler wrapper.

Omega_h_USE_OpenMP

Default: OFF

Whether to enable OpenMP thread parallelism. The -fopenmp flag will automatically be added.

Omega_h_USE_CUDA

Default: OFF

Whether to enable CUDA GPU parallelism. Currently, this requires that nvcc_wrapper be used as the CMAKE_CXX_COMPILER.

Omega_h_USE_SEACASExodus

Default: OFF

Whether to use the Exodus subpackage of the SEACAS toolkit. This allows reading and writing Exodus files from Omega_h. By default, it will look for this dependency in SEACASExodus_PREFIX.

Contributing

Please open a Github issue to ask a question, report a bug, request features, etc. If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are welcome.

Licensing

This library is released under the FreeBSD license.

You can’t perform that action at this time.