Skip to main content.

Quick Links

Git repo
Mailing list
Sphinx docs
Bugzilla


Five-ODE system model describing car motion -- all reachable states.


Four-ODE system with chaotic solution.


Mathematical pendulum.


Radial Schroedinger equation.

Hermes1D

is an experimental C++ library for the solution of ordinary differential equations (ODE) and one-dimensional partial differential equations (PDE) with higher-order finite element methods (hp-FEM). In contrast to traditional time-stepping ODE solvers, Hermes1D constructs the solution using a variational principle. It starts from a weak formulation of the ODE/PDE problem and allows the equations to be defined in a very general implicit (vector-valued) form F(y, y', t) = 0. The approximation is a continuous, piecewise-polynomial function defined in the entire interval (0, T). In contrast to time-stepping schemes, the finite element approach makes it possible to prescribe boundary conditions either at the beginning or at the end of the time interval (combinations are possible for systems). The hp-FEM discretization leads to a system of nonlinear algebraic equations that is solved via the Newton's method or JFNK. Sphinx documentation is still in progress. Hermes1D comes with a free interactive online lab powered by UNR HPC cluster. The library is distributed under the BSD license.

Download

(1) Clone the git repository: git clone http://hpfem.org/git/hermes1d.git.
(2) Download the source code via http.
(3) You can browse the git repo online at http://hpfem.org/git/gitweb.cgi/hermes1d.git.

Installation

To install, clone the git repository as shown above and change dir to hermes1d/. Prerequisites for Hermes1D are cmake, g++, gfortran, libsuitesparse-dev. Type "cmake ." and "make". More detailed installation instructions can be found in the README file. If you encounter any problems, let us know through the Hermes1D mailing list.

Documentation, Support, and User Community

The code itself as well as the Sphinx documentation are still very much in progress. Use the Hermes1D mailing list to find answers to your questions or problems. You can also use IRC channel irc.freenode.net, room #hermes1d to chat about development in real-time.

How to Contribute

If you are interested in Hermes1D, join the mailing list. The following list contains bugs, open issues and simple project ideas. If you decide to pick up one of them and help us, we'll be looking forward to hearing from you!

Short-Term Development Plans

Hermes1D is still fairly new. You can help us a lot by downloading and testing it. Several self-explanatory examples are in the directory examples/. Feel free to play with the existing ones, add new ones, and report bugs. Here is the plan for immediate next steps (not necessarily in this order):