Quick Links
User Documentation
Git Repository
Mailing List
Bugzilla
Pro Git

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. User 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 and Installation
Detailed installation instructions for Linux, Mac OS X, and Windows Cygwin can be found in the User documentation.Support and User Community
Hermes1D has a very active mailing list where you will get all answers quickly. Use IRC channel irc.freenode.net, room #hermes1d to chat about development in real-time.Development
Hermes1D is being developed by an active open source community around the hp-FEM group at the University of Nevada, Reno (UNR). You are very welcome to join our development team and contribute in any way. Read here How to Survive an Encount\ er with Git and submit your first patch. Doxygen reference manual is in progress. Our major short-term goals are listed below. We also have a list of bugs, open issues, and simple project ideas where you can help.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):- Improve fast trial refinements. Right now, H1D always refines an element for enrichment purposes. Instead, just extend the basis on the finite element by adding new bubble functions. This means that the FE space will be extended hierarchically, there will be no need to transfer solution to the new mesh, and also the solution on the new mesh will be faster.
- Implement Discontinuous Galerkin (DG) discretization as an alternative to continuous finite elements. Hopefully this will help improve the solution of first-order problems.
- In JFNK improve the handling of the parameter jfnk_epsilon (the small positive constant in the JFNK finite difference). It turns out that this constant can influence the behavior of JFNK significantly. Also, add preconditioning to the CG method that the JFNK currently uses, and allow additional iterative methods.
- Implement eigensolvers (SLEPc, ARPACK, Anasazi, ...)
- Write Python wrappers
- Make Hermes1D run in the FEMhub online lab.
- Write documentation. Link to Sphinx documentation should be available soon.
- Improve handling of integration orders. When registering a weak form, the user should be able to define the integration order as a function of the poly degree 'p'.
- Implement adaptive quadrature as an option.
- Import equation data into weak forms via the user_data parameter, not as global variables.
Contributors
* Pavel Solin (project leader, University of Nevada, Reno)* Ondrej Certik (University of Nevada, Reno)
* Pavel Karban (University of West Bohemia, Pilsen, Czech Republic)
* Frantisek Mach (University of West Bohemia, Pilsen, Czech Republic)
* David Panek (University of West Bohemia, Pilsen, Czech Republic)
* Milan Hanus (University of West Bohemia, Pilsen, Czech Republic)
For more details see the AUTHORS file.

