Coder Social home page Coder Social logo

scorec / omega_h Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sandialabs/omega_h

1.0 6.0 9.0 8.14 MB

Simplex mesh adaptivity for HPC

License: Other

CMake 2.93% Shell 0.61% Perl 1.70% C++ 91.58% GLSL 0.04% Python 0.12% C 2.15% Objective-C 0.87%
kokkos

omega_h's Introduction

Omega_h Logo

Omega_h

Reliable mesh adaptation

Omega_h is a C++14 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.

Extensions

This fork of Omega_h from https://github.com/sandialabs/omega_h v9.34.12 adds support for:

  • loading serial Simmetrix meshes
  • reverse classification, and defining tags on sets of mesh entities defined by a reverse classification relation
  • representing single-process mixed meshes
  • domains with matched/periodic entities

Installing / Getting started

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

git clone [email protected]:SCOREC/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.

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.

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.