Elmer is a finite element code published under open source licensing. Elmer was first licensed under GPL (GNU General Public License, v. 2.1) license in 2008. Since 2012 the ElmerSolver library has been published under LGPL license (GNU Lesser General Public License, v. 2.0).

This LGPL license grants more freedom on how to distribute modules (solver and user functions) that utilize the main library. Even if they are linked with the Elmer library (usually using the “elmerf90” script), they no longer need to be distributed under an open source license as LGPL does not have a viral effect when it is used as a library.

The code under LGPL license includes the ElmerSolver main library (libelmersolver, ~200,000 lines of Fortran code) as well as the libraries matc and fhutiter. ElmerSolver library also depends on iso_varying_string that is already published under LGPL. Upon building ElmerSolver may also utilize other libraries that are compatible with LGPL. These include Umfpack (LGPL up to version 5.1.), Hypre (LGPL) and (P)Arpack (Free BSD). Note that if you build Elmer utilizing some more limiting optional libraries you might not be able to use modules that have been distributed in a non-free fashion.

The parts of Elmer project still under the more restrictive GPL license include ElmerGUI, ElmerGrid, ElmerParam, and most of the existing physical modules a.k.a. solvers of Elmer. Hence, if you modify these and want to distribute the results, you should do that under the GPL license. However, if you create your own solver module or user defined function from scratch, that may be distributed under any license, and still be linked with the ElmerSolver library since the LGPL license has no viral effect when linked with non-LGPL code.

Note that if you’re just interested in using Elmer then the open source licenses do not set any limitations. The complexities of the licenses only affect those who want to work with the source code.

If you have further questions on the licensing of Elmer in your development, please contact elmeradm(at) for more details.