RSS Feed

Code Overview

hpGEM was started as a framework of C++-classes for the discontinuous Galerkin method. This framework has evolved into a more closely knitted entity intended for those who want to rapidly and easily apply the discontinuous Galerkin method. It can be used for various physical problems, especially partial differential equations, arising from fluid mechanics and electro-magnetism. Using hpGEM, one can numerically solve the simplest class room examples such as linear advection and Burgers equations to the most complicated practical examples such as shallow water, Euler, Navier-Stokes and Maxwell equations.

Current features include :

  • 1D mesh support : lines
  • 2D hybrid mesh support : triangles and quadrilaterals
  • 3D hybrid mesh support : tetrahedra, pyramids, triangular-prisms and hexahedra
  • Limited 4D octachoron support
  • Periodic mesh support
  • Basic moving mesh support
  • Space and space-time support
  • Gauss integration rules upto, at least, seventh order for all supported polytopes (n-dimensional shapes)
  • Centaur mesh readers for 2D and 3D
  • Rectangular and tetrahedral mesh generates (in 1D, 2D and 3D)
  • Tecplot discontinuous and continuous output routines
  • Global algebraic system assembly
  • Element data caching
    • By default face normals, physical gradient of basis functions, jacobian of the mapping,
    • Extra user defined possible
  • Predefined sets of basis functions.
  • P-refinement (i.e. different basis functions can be used in each element).
  • H-refinement
  • Multigrid
  • Easy cross platform building via CMake
  • Complete doxygen documentation (can be build or viewed via on this website)
  • Self test suite to check installation has been successful
  • Series of tutorials
    • Simple DG
    • Simple application
    • Use of advance features
    • Kernel walk through (for the very advance users how wants to extend the kernel)
  • Web builder tool, allows simple point and click generation of code for a series of predefined applications
  • Simple kernel interface so applications can be created with minimal user code.