Hermes
Hermes is a free C++/Python library for rapid prototyping of adaptive FEM and hp-FEM solvers developed by an open source community around the hp-FEM group at the University of Nevada, Reno. The library has a clean design and modular structure, and it is available under the GPL license (Version 2, 1991).
Project Goals
- Provide a PDE-independent platform for rapid development of adaptive hp-FEM solvers.
- Make adaptive hp-FEM available to the broad computational science and engineering community, as well as to undergraduate and graduate students.
How To Contribute
The best way to join the open source project is to apply Hermes to one of your favorite PDE problems and see how it works. Let us know your experience and do not hesitate to report bugs or anything you do not like (use one of our mailing lists for that). We also have a list of nice project ideas and a list of easy-to-fix issues where your help would be very welcome! Feel free to pick any of them and let us know how it goes. If you'll like the project, we should be able to get a position for you at the University of Nevada, Reno.
Unique Features of Hermes
Hermes is based on original methods and algorithms that make is different from other FEM and hp-FEM codes. For an overview of other codes, see the Links section.
- PDE-independent adaptivity algorithms: Nowadays it is no longer possible to solve partial differential equations (PDE) without automatic adaptivity. Hermes guides automatic adaptivity using computational a-posteriori error estimates which are both extremely robust and PDE-independent. Thus Hermes can be applied to many different PDE in the same way, regardless whether one needs to solve heat transfer, fluid or solid mechanics, electromagnetics, eigenvalue problems, arbitrary combinations of multiphysics coupled problems, or even to compress images.
- Arbitrary-level hanging nodes:
Hermes is able to handle approximations with arbitrary-level hanging nodes.
This means that elements of very different sizes can be adjacent in the mesh.
This has two significant advantages:
- Small-scale phenomena can be resolved extremely efficiently since no regularity-enforced (unwanted) refinements are present.
- Automatic adaptivity is simplified drastically, since all element refinements are completely local (splitting of an element does never affect the surrounding elements).
- Combining multiple elements types:
In multi-physics coupled problems, various solution components live
in generally different spaces of functions. Therefore, various solution components can be discretized
using generally different types of finite elements. Currently, Hermes provides the following types of
hierarchic higher-order elements:
- Standard H^1 conforming elements for continuous approximations (displacements, temperature, electric potential, velocity components etc.)
- H(curl) elements (edge elements) to be used, for example, for the electric field.
- H(div) elements (face elements) for the magnetic field, velocity in incompressible viscous flow, etc.
- Taylor-Hood P{k+1}/P{k} elements for some applications in incompressible fluid dynamics.
- Discontinuous L2 elements that can be used, for example, for pressure in incompressible viscous flow.
- Adaptive multimesh hp-FEM: In multi-physics coupled problems, eigenproblems, and other applications various solution exhibit dramatical qualitative as well as quantitative differences. For example, boundary layers which are characteristic for viscous flow are not present in electromagnetics, heat transfer, or elasticity. Conversely, electromagnetic field often contains singularities at sharp corners or edges, which do not appear in other physical fields. Standard methods that use the same mesh for all physical fields are inefficient. Methods that use different meshes and interpolate between them suffer from large errors. In contrast to this, Hermes allows each solution component to be solved on an individual higher-order finite element mesh equipped with an independent automatic hp-adaptivity algorithm, and this is done in a monolithic way (without operator splitting) using a novel multi-mesh hp-FEM technique. This has a huge positive impact on the efficiency and accuracy of multiphysics, eigenvalue, and other computations involving multiple solution components.
- Space-time adaptive hp-FEM on dynamical meshes: Hermes is the first code to provide automatic hp-adaptivity for nonstationary PDE problems on dynamical meshes that are refined and coarsened simultaneously as dictated by the space and time approximation error. The algorithm, which is a combination of the classical Rothe's method and the novel multi-mesh hp-FEM, is extremely robust and works in the same way for all nonstationary PDE problems. The technique is based on a combination of the multimesh hp-FEM with the classical Rothe's method. See sample computational videos for illustration.
- Other features:
- general unstructured triangular and quadrilateral meshes,
- fully anisotropic hp-refinement of quadrilateral elements,
- curvilinear elements with edges defined via NURBS,
- algorithms for linear, non-linear, stationary, and time dependent problems,
- easy-to-use automatic hp-adaptivity module,
- multiple element types can be used in one computation,
- basic postprocessing and visualization functions.

