Hybrid and Easy Discontinuous Galerkin Environment

Some leaves--a sad excuse for a hedge logo

hedge is an unstructured, high-order, parallel Discontinuous Galerkin (DG) code that I am developing as part my PhD project. hedge’s design is focused on two things: being fast and easy to use. While the need for speed dictates implementation in a low level language, these same low-level languages become quite cumbersome at a higher level of abstraction. This is where the “h” in hedge comes from; it takes a hybrid approach. While a small core is written in C++ for speed, all user-visible functionality is driven from Python.


Since everybody loves bulleted lists, here’s one for you. Hedge:

  • Supports simplicial unstructured meshes in two and three dimensions (i.e. triangles and tetrahedra)
  • Approximates using orthogonal polynomials of any degree you specify at runtime
  • Solves your problem in parallel using MPI
  • Comes with canned operator templates for
  • Wave equation
  • Heat equation
  • Poisson equation
  • Maxwell’s equations
  • Makes it really simple to roll your own operators using friendly, mathematically-oriented (and dimension-independent, if desired) notation
  • Visualizes your solutions in parallel with XML-based VTK or Silo files. It directly supports Paraview and Visit.
  • Runs on your Nvidia CUDA-capable graphics card.


We have


If you run into trouble, chances are that someone on the mailing list can help you.

License and Availability

hedge is available under the terms of the MIT License and is built using components that have source code available for free. (Sadly, the mesh generators and partitioner are not strictly open-source, but everything else is.)

Curious? Follow the simple build instructions on the wiki (see above).

Release downloads are available form Hedge’s Python Package Index page.

You may also peek at the development version in my source control archive. To check out a copy, type:

git clone http://git.tiker.net/trees/hedge.git