Elmer Overview
Elmer Overview
1
2
Copyright
This document is licensed under the Creative Commons Attribution-No Derivative Works 3.0 License. To
view a copy of this license, visit http://creativecommons.org/licenses/by-nd/3.0/.
1 Introduction
This exposition gives an overview of the Elmer software package. General information on the capabilities
of the software, its usage, and how the material of the package is organized is presented. More detailed
information is given in the other Elmer manuals, the scopes of which are described in this document.
What is Elmer
Elmer is a finite element software package for the solution of partial differential equations. Elmer can deal
with a great number of different equations, which may be coupled in a generic manner making Elmer a
versatile tool for multiphysical simulations. As an open source software, Elmer also gives the user the
means to modify the existing solution procedures and to develop new solvers for equations of interest to the
user.
History of Elmer
The development of Elmer was started in 1995 as part of a national CFD technology program funded by the
Finnish funding agency for technology and innovation, Tekes. The original development consortia included
partners from CSC – IT Center for Science (formely known as CSC – Scientific Computing). Helsinki
University of Technology HUT, VTT Technical Research Centre of Finland, University of Jyvåskylå, and
Okmetic Ltd. CSC is a governmental non-profit company fully owned by the Ministry of Education. After
the five years initial project ended the development has been continued by CSC in different application fields.
Licensing
In September 2005 Elmer was released under GNU General Public License (GPL). This has widened the
user community, particularly the number of international users has grown. However, as the sole owner of
the copyright to Elmer source code, CSC may distribute Elmer also under other licensing terms. Therefore,
if GPL does not suit your purposes, you may contact the Elmer team for other licensing options.
Distribution
Elmer is distributed only through the Internet. The actual distribution site may vary but the pointer to the
location may always be found at http://www.csc.fi/elmer.
The distribution of Elmer comes in three different parts: sources, binaries, and documentation. Unix
users are encouraged to compile the software themselves. The compilation instructions are given at the
www-page. For Windows and Macintosh a precompiled binary version of the code is also provided. The
documentation of the software is already quite extensive, but unfortunately still not complete.
Contributing
Everybody is welcome to contribute to the Elmer project. Often the bottle-neck is in case specification,
testing and verification which may be done without in-depth knowhow of the code. Also contributions to
the code are welcome. However, before granting a permission to commit to the main source file archive a
Elmer Contributor Agreement has to be signed. This gives CSC the right to use contributions to Elmer under
the current free software license, and also under other licenses we may use. However, this does not limit the
contributors right to use the contributed code in any way.
+ Elmer can handle the coupling of field equations in a flexible manner and new field variables can be
introduced easily.
+ All material parameters may depend on the field variables and other parameters in a free manner.
+ Elmer offers a large selection of modern numerical methods.
+ Elmer enables the user generally to use the most common finite elements.
+ Both assembly and iterative solution can also be done in parallel. Good scaling has been obtained up
to thousands of processors.
+ Elmer has a graphical preprocessing interface for simple problem setups.
+ Elmer is easily compiled for most Unix systems and it is also available for Windows and some Linux
distributions as precompiled binaries.
+ Elmer has a steadily growing user community and it has already been used in tens of scientific papers.
- The different aspects of the code (solver, interface, documentation) are not always at the same devel-
opment phase. For example documentation is not up-to-date and the graphical user interface lacks
many of the more esoteric physical models provided by the solver.
- Getting acquainted with the large package may take time. Previous experience on FEM packages may
therefore be useful.
- Elmer itself does not include proper geometry or mesh generation tools for geometrically complicated
problems. Only mesh import interfaces are supported.
- As a multiphysical solver Elmer may sometimes lack features in some areas that are standard for
established single-field codes. Thus, some users may find the capabilities of Elmer inadequate for
their needs.
3 Elmer executables
As most finite element packages, Elmer is divided into a number of separate executables that may also be
used independently. The main parts are the preprocessor, solver and postprocessor, but there are also other
modules that may be called for specific assignments.
ElmerGUI
ElmerGUI is the graphical user interface for Elmer software based on the Qt cross-platform application
framework (see http://www.qt.io). ElmerGUI includes ElmerGrid, and optionally tetlib and nglib, as
finite element mesh generators. Also OpenCASCADE may be included as the CAD import tool.
ElmerGUI does not include any geometry definition tools so for defining the original geometry some
other software must be used. However, the large number of supported formats should make the mesh
import straightforward. With ElmerGUI the problem setup may be done easily using programmable
menu structures that make the modification of the GUI very simple. ElmerGUI also controls the
execution of the ElmerSolver and ElmerPost binaries and includes a real-time convergence monitor.
ElmerGUI is still relatively young as the development was started in early 2008.
ElmerSolver
ElmerSolver is a program executable forming the solver of Elmer. It is the soul of the Elmer software
and the part where most of the development work is directed to. ElmerSolver includes a large number
of finite element library tools which enable the user to write new equation solvers economically. The
specific equation solvers are mainly available as dynamical libraries that have standard interfaces and
can be linked to the main program on request.
ElmerPost
ElmerPost is an old and versatile postprocessor that is expected to be quite sufficient for the usual
postprocessing needs. Nevertheless it will not be developed anymore. ElmerPost provides a straight-
forward graphical user interface that is easy to learn. ElmerPost utilizes Mesa and TCL/TK graphics
libraries.
ElmerGrid
ElmerGrid provides functionality for the generation of simple structured meshes and may also be used
for mesh manipulation and transformation tasks of many kinds. For example, ElmerGrid may be used
to partition the mesh for parallel runs or to import meshes written by other mesh generators. The
ElmerGrid command file is to be written using a text editor.
ElmerFront
ElmerFront is the old graphical user interface for creating setups for simple problems. ElmerFront
is not developed anymore but the codes are still part of the Elmer package. The replacement of
ElmerFront is ElmerGUI.
Mesh2D
This is a Delaunay triangulator that is called by ElmerFront but it may also be called independently. It
is the default mesh generation tool used for adaptive computations.
ViewFactors
This is a program for the computation of view factors that need to be determined in some radiation
problems. Usually there is no need to call this independently as it is automatically called within
ElmerSolver.
https://github.com/ElmerCSC/elmerfem
A local copy of the repository can be made by giving the command
git clone git://www.github.com/ElmerCSC/elmerfem
or
https://sourceforge.net/projects/elmerfem/
Elmer code is distributed as partially interdependent modules. Some of them are used for creating pro-
gram executables while others are only used for creating program libraries. Basically knowing the module
interdependencies is unnecessary unless the user wants to setup only a partial system.
eio
Elmer input/output library written in C++ and used for some I/O operations by the ElmerSolver.
elmergrid
ElmerGrid source codes written in C, including also the Metis library from the Karypis Lab.
post
ElmerPost source codes written in C.
fem
ElmerSolver source codes written mainly in Fortran90.
front
ElmerFront source codes written in C++.
hutiter
The iterative linear algebra solvers written mainly in Fortran90 and called by ElmerSolver.
matc
This library is used in the command file interpreter of ElmerSolver and inside the command window
of ElmerPost for evaluating mathematical expressions written in C.
mathlibs
This includes basic mathematical libraries such as Lapack, Blas, Arpack, and Parpack.
meshgen2d
This includes the source code of the 2D Delaunay mesher.
ElmerGUI
The new preprocessor ElmerGUI may be found here.
umfpack
This includes the source code of the Umfpack (GPL version 4.4) library from University of California.
5 Elmer documentation
The Elmer documentation is constantly under development. The date of the manual version is printed in the
cover of the manual. The current set of Elmer manuals is as follows.
ElmerguiManual.pdf
ElmerGUI manual gives a detailed desription of the new graphical user interface of Elmer suite. The
tutorials includes some techical details and is complemented by the walk-trough tutorials.
ElmerSolverManual.pdf
ElmerSolver Manual gives an overview of the general capabilities of the solver, focusing on the util-
ities that are of use to several physical models. It follows from this organization of material that
information specific to a certain physical model is not included in this manual.
ElmerModelsManual.pdf
The Models Manual describes the different physical models which the solver of Elmer can handle. The
specific options for controlling the corresponding equation solvers are also documented. In addition,
this manual describes certain utilities for other tasks, such as computing derived quantities.
ElmerTutorials.pdf
The tutorials of the Elmer software have two different approaches. The tutorials utilizing the graphical
user interface are walk-trough examples that guide to choose the right menus and write the right values.
The tutorials that do not rely on the graphical user interface are basically just example files with
documentation. The files related to the tutorials are contained in ElmerTutorialFiles.tar.gz
which can be found at the same site where the manuals are located.
ElmerGridManual.pdf
This is the manual of ElmerGrid utility. The examples related to the ElmerGrid documentation are
provided in the file ElmerGridExamples.tar.gz which can be found at the same site where the
manuals are located.
MATCManual.pdf
Manual of the MATC language built in ElmerSolver and ElmerPost.
ElmerOverview.pdf
This paper.
In addition to these manuals there are separate documentation for some input interfaces (GiD) and for visu-
alization tasks (making animations). Look at the www-pages for more information on these documents. The
following documents are now more or less obsolite but may still contain some information not found in the
above.
ElmerFrontUserGuide.pdf
This is the manual for the graphical user interface ElmerFront. ElmerFront is not actively developed
and this might be the final documentation of the program.
OldElmerUserGuide.pdf
This is the original user guide of Elmer software (1999). Particularly some appendices defining some
of the file formats may still be useful.
OldElmerTutorial.pdf
A graphical user interface oriented tutorial guide of the Elmer software (2000).
are used. Currently interfaces for GiD and Netgen are provided. For more information on the interfaces see
the Elmer www-pages. This approach is not limited by the mesh generation possibilities of ElmerGUI and
is therefore suitable even for the most complicated cases, provided that a good mesh generation software is
at disposal.
ElmerGrid + editor
An easy way to make simple 2D and 3D meshes is to use ElmerGrid. The mesh definition file of ElmerGrid
also defines the geometry. However, the structured format of ElmerGrid favors box-like forms and making
more complicated shapes may be difficult. In this approach the solver command file must be created using a
text editor. Previous command files provide a good starting point also in this case.
This approach is most suited for making academic tests using simple structured meshes. It is easy to test
different things in this approach as the mesh is basically fully parameterized. Many of the provided tests of
ElmerSolver are defined using this approach. Trying to push this approach to more complicated shapes may
turn out to be cumbersome.
Sometimes ElmerGrid needs also to be used as an intermediate tool, for example in the partitioning of
the mesh. Then the changes to the command file are often quite minimal.
ElmerPost
The easiest way for visualization may be to use ElmerPost. ElmerPost does not pose any severe limitations
and has good features in exporting data in raster formats or animations. However, if you want to draw line
graphs, or want to have several data sets available at the same time, you need other file formats as well.
ParaView etc.
ElmerSolver can write the results also in formats understood by some other third party visualization software.
Use the ResultOutputSolve keyword (see Elmer Models Manual) for outputting in VTK and VTU
(ParaView, ViSit,. . . ) or GiD format. Using ParaView program is nowadays seen as the recommended
strategy for visualization.
Contact info
For questions concerning the use and capabilities of Elmer, please use preferably the Elmer discussion
mailing list at www.elmerforum.org/forum. If you have some question concerning collaboration of
some sort, you may direct your mail to [email protected], or to some of the Elmer developers directly.