Skip to content

Releases: ElmerCSC/elmerfem

Elmer FEM v26.1

23 Jan 11:43

Choose a tag to compare

Elmer Release Notes for version 26.1

Previous release: 9.0
Period covered: Nov 11, 2020 - Jan 19, 2026

These release notes provide information only on the most essential changes. Over the period there have been ~3500 commits (merge commits excluded). You can get a complete listing of commit messages, for example, with the command git log --since="2020-11-11" > log.txt

It is unfortunate that the new release has been lagging. The detail level of release notes had to be dropped to get this out. We hope to get back on the phase. If you want to enhance the release notes feel free to update this file and make a pull request.

Apart from the core Elmer team at CSC (Juhani K., Mika M., Juha R., Peter R., Thomas Z.) git log shows contributions from Markus Mützel, Saeki T., Fabien G-C, Eelis T., Rich B., Iain W., Matias Z., Rupert G., Julien B., Samuel C., Luz P., Benjamin R., Ladislav M., Monher C., Olivier G., Juris V., Joe T., Bartos Z., E. Albiter, Sergey Al., Cyrille C., Jonas T., Tuomas M., Sami I., Kevin T., Sebastian G., Jonathan V., Alihossein S., Fernando B., Lucas B., Saint W., Sami R., Kasra D., Alessandro G., Andy G., Arno M., Evangelos V., Fredrik R. to this release.

Additionally there are many ongoing developments in several branches that have not been merged to this release and are not therefore covered here.

The contributions of all developers are gratefully acknowledged! The work of Markus Mützel, Saeki Takayuki and Rich Bayless is particularly appreciated as they have been consistently contributing in the true spirit of open source. Also the humongous merge coming from univ. of St. Andrews mainly by Iain Wheel and Joe Todd related to remeshing strategies around calving is greatly appreciated. The features have opened the door for more extensive use of adaptivity and remeshing in the code.

New Versioning Scheme

From this version onward we migrate to Calendar Versioning such that

  • The first number (major) is the year of the 21st century, e.g. 26
  • The second number (minor) is an ordinal number of releases in that year
  • The third number (micro) is a growing number which for releases is always 0 and may be omitted.

I. New Solver Modules

FilmFlowSolver.F90

  • Module for the solution of reduced dimensional Navier-Stokes equation.
  • It is assumed that the average velocity of the film defines the full velocity profile and hence the depth direction may be eliminated from the flow solution.
  • The intended use is film/channel flow but also cylindrical pipe flow is implemented.
  • Includes lamina, Darcy and Manning models to define the relationship between pressure gradient and flux.
  • This fills the gap between full Navier-Stokes solver and reduced dimensional Reynolds solver.
  • Intended use case is water flow under ice sheets.
  • See Models Manual for more details.

HydrostaticNSVec.F90

  • Module for the solution of Stokes equation with a hydrostatic 1st order assumption a.k.a. Blatter-Patyn equation.
  • Utilizes multithreading and vectorization features in the same manner as IncompressibleNSVec, and inherits most keywords and physics from that solver.
  • For the equations look at (5.70) and (5.71) in Ralf Greve & Heinz Blatter: Dynamics of Ice Sheets and Glaciers, Springer, 2009.
  • Intended use case is 3D simulation of large ice sheets when some features of full Stokes are ignored.

BatterySolver/*.F90

  • Solves equations for a Lithium-Ion battery from two equations for electric potential and two equations for ion concentrations.
  • These equations are strongly coupled by the Butler-Volmer equation that provides the fluxes between the phases.
  • The solid phase has additionally a 1D finite element equation embedded in each finite element node of the finite element mesh.
  • The equation has been used in the Master's Thesis of Timo Uinonen from Univ. of Vaasa and may be considered partly experimental.
  • The robustness of the solver is not the greatest requiring quite a bit of under-relaxation.
  • See Models Manual for more details.

CyclicConvergence.F90

  • This is an auxiliary solver that can be used to study whether transient and cyclic simulation has converged. It is assumed that all the cycles are saved and therefore the values from the current cycle can be compared to the previous cycle. The initial application for this solver was the case of synchronous electrical machines.

EMPort.F90

  • Module for computing eigen modes from a special wave equation model posed over a 2-D region, typically corresponding to an electromagnetic port
  • This can be used in creating boundary conditions for 3-D models based on the vector Helmholtz equation
  • Not yet documented in Elmer Models Manual

NodeToEdgeSolver.F90

  • A solver that may be used to map results from nodes to edges.
  • Intended use case is 3D simulation of electrical machines when the initial guess has been solved using nodal 2D approximation.

StatElecSolveVec.F90

  • Vectorized version of StatEleSolve.

SunAngle.F90

  • Simple solver that for each node computes the maximum elevation at which the sun is still seen from a given direction.
  • Intended use is related to ice sheets

CahnHilliard.F90

  • New equation for Cahn-Hilliard interface equations (with minimal testing).

TopoOpt.F90

  • Runner for topology optimization.
  • Includes many filter types of which the PDE filter works well also in parallel and enables large parallel runs.
  • Has been tested in conjunction with elasticity and heat equation but the implementation should be generic.

VectorHelmholtzNodal.F90

  • Creates a discretization of the vector Helmholtz equation by using nodal (H1-conforming) finite elements.
  • It is intended for creating preconditioners to solve the same equation with curl-conforming (edge) finite elements.

WVectorFix.F90

  • This contain subroutines which help in giving current sources for closed coils.
    To avoid the problem of creating a discontinuous potential, two different potential fields are solved (say
    a left and a right field). The two fields have different boundary conditions that are automatically
    set on the bulk nodes so that a current is induced and the union of the solutions is reasonable.
    The main assumption is that the coil axis is aligned with the z-axis.

II. Enhancements of existing solvers

CircuitsAndDynamics.F90

  • A new command "Coil Use W Vector = True" to give a wire density vector
    to model a stranded coil in transient/harmonic analysis (see the test case circuits_transient_stranded_wvector).
    The W vector variable can be named with the command "W Vector Variable Name".
  • A new command "Export Circuit Variables = Logical True" to save circuit variables in a way that
    enables functional dependencies on them
  • A component type "resistor" added for transient circuits
  • The circuit driven solution based on the component voltage and current together with
    "Layer Electric Conductivity" and "Layer Relative Permeability" (given in a boundary condition section).
    See for example the test case .../tests/mgdyn_harmonic_wire_impedanceBC_circuit/IBC_circuit.sif

CoordinateTransform.F90

New keywords for creating a local coordinate system without the direction solvers:

  • In a body section "Local Coordinate System Beta Reference and Gamma = Logical True"
    so that CoordinateTransform computes alpha = beta x gamma
    where beta is defined by "Beta Reference" and
    gamma is defined by "coilcurrent e" computed by CoilSolver.
  • In a component section "Coil Normal(3) = Real 0.0 0.0 1.0"
    for informing CoilSolver how the coil is oriented
  • In a component section "Desired Current Density = Real 1.0"
    so that CoilSolver will set a certain current density over the coil
  • In a component section "Coil Use W Vector = Logical True"
    so that a coil uses a given W vector whose name can be specified as
    "W Vector Variable Name = String CoilCurrent e".
    The W vector set here is used for driving the component with circuits.
  • In a boundary section "Coil Start = Logical True" as
    CoilSolver needs to know where the coil starts (if not closed)
  • In a boundary section "Coil End = Logical True" as
    CoilSolver needs to know where the coil ends (if not closed)

EMWaveSolver.F90

  • The computation of eigenmodes enabled

FindOptimum.F90

  • Nonlinear optimization methods have been added.
  • Elmer can control itself when performing optimization, and does not need external optimization package.

GmshOutputReader.F90

  • This reader can read ascii output written in Gmsh format.
  • The original use case was to read data on boundaries that hierarchically couple to other BCs.

HeatSolveVec.F90

  • Discontinuities enabled between bodies.
  • Enable modeling of radiation heat transfer using the concept of "Radiosity".
  • Enable computation of diffuse gray radiative heat transfer in parallel.
  • Except for the 1st feature these are available also in the legacy HeatSolve.F90

HelmholtzSolve.F90

  • Preconditioning of shifted Laplacian type is now possible

MagnetoDynamics

  • A-V solution with a user-defined reluctivity function

  • A model of Darwin type enabled

  • A new command "Calculate Homogenization Loss" for stranded coils modelled in the frequency domain

  • An option to convert a H-B curve to effective values for harmonic analysis as

    H-B Curve = Variable time ! ... or anything else always available (this is not used in the evaluation)
    Real Harmonic ! cubic monotone ...
    include HB
    End

MagnetoDynamics2D.F90

  • The implementation of the London equations added; see the test cases fem/tests/circuits2D_*_london

ParticleAdvector.F90

  • Improved robustness and path integration

Result...

Read more

Elmer 9.0

03 May 14:11

Choose a tag to compare

Elmer Release Notes for version 9.0

Previous release: 8.4
Period covered: Dec 18 2018 - Nov 10 2020
Number of commits: ~1340 (excluding merges)

These release notes provide information on the most essential changes.
You can get a complete listing of commit messages, for example, with:
git log --since="2018-12-18" > log.txt

Apart from the core Elmer team at CSC (Juhani K., Mika M., Juha R., Peter R., Thomas Z.)
git log shows contributions from Daniel B., Denis C., Eef v. D., Eelis T., Fabien G-C,
Foad S. F., Fredrik R., Olivier G., Joe T., Luz P., Mondher C., Rupert G., Sami I.,
Sami R., Samuel C., and Saeki T. to this release.

Additionally there are many ongoing developments in several branches
that have not been merged to this release and are not therefore covered here.
Also sometimes the code has been passed on by the original author by other means than the
git, and in such cases the names may have been accidentally omitted.

The contributions of all developers are gratefully acknowledged!

New Solver Modules

IncompressibleNSVec

  • Incompressible Navier-Stokes solver utilizing vectorized and threaded assembly
  • Includes built-in support for block preconditioning (Schur complement approximation included)
  • Includes non-Newtonian material laws
  • Intended for Elmer/Ice community but also other may find it useful.

BeamSolver3D

  • Solver for the Timoshenko equations of elastic beams embedded in 3-D space (see Elmer Models Manual for documentation)

GmshReader

  • Reads the mesh and results from simple Gmsh file format (that can be written by ElmerSolver as well)
  • Solver includes interpolation of the fields to the current mesh
  • May be used for hierarchical simulations where results are inherited from previous simulations

ModelMixedPoisson

  • A general-purpose mixed FEM solver for the Poisson equation (see Elmer Models Manual for documentation)
  • Employs a div-conforming (face) finite element approximation

SpringAssembly

  • A generic utility to add node-wise springs and masses to structural models (see Elmer Models Manual for documentation)

MarchingODESolver

  • A solver that can compute ordinary differential equations on a moving mesh.
  • It is assumed that the mesh is structured and there is a known draw speed. This
    makes it possible to relate timestep and mesh parameter directly with each other.

Enhanced Solver Modules

ElasticSolve

  • Adding a new UMAT material model is simplified: compilation with an elmerf90 command is sufficient
  • The state variables of UMAT material model can be written to a result file and visualized
  • UMAT implementation updated to support axial symmetry

EMWaveSolver

  • The solver updated to support the basis functions of second order and simulation in 2D
  • The solver is now documented in Elmer Models Manual

MagnetoDynamics

  • Fixes and generalization to the source projection (the determination of Jfix).
  • A surface impedance condition for the time-harmonic AV model
  • Thin region formulation for 1D wires in transient analysis
  • Magnetic anisotropy (a complex-valued reluctivity tensor) enabled for the time-harmonic AV model

MagnetoDynamics2D

  • A velocity field can be given to add a Lorentz term to the equations
  • Coreloss a posteriori formulas (Bertotti + extended Bertotti)

MagnetoDynamicsCalcFields

  • Enabled postprocessing in the case of a complex-valued reluctivity tensor
  • Enabled the computation of magnetic co-energy

ResultOutputSolver

  • Vtu format:
    • Enable saving of pieces, i.e. bodies and boundaries
    • Improved saving of elemental, DG and IP fields
  • Gmsh format:
    • Improved use of masking features in output

ShellSolver

  • Eigenanalysis with the shell solver enabled
  • Spring, resultant force and couple BCs added
  • Combined analysis of 2-D shells and 1-D beams enabled
  • Fully coupled analysis of 2-D shells and 3-D solids enabled (still subject to some geometric constraints on the mesh)
  • Partial support for using an alternate formulation with drilling degrees of freedom

StructuredMeshMapper

  • Enable arbitrary number of layers, before limited to three.

HeatSolver

  • A new tentative vectorized version: HeatSolverVec
  • Enable symmetric 3D cases for view factor computation to obtain significant timesavings
  • Make Gebhart factors linear system symmetric, if possible "ViewFactor Symmetry"

StressSolver

  • Added a Maxwell visco-elastic model to linear elasticity solver
  • Possible also to be run as incompressible (introducing pressure variable)
  • Optional pre-stress advection term for layered Earth-deformation model

WaveSolver

  • The solver can be used to model harmonic and eigenmode cases as well.

ParticleAdvector

  • Allow particles to be sent from Gaussian integration points as well. This is beneficial
    for robustness since they are not located at surface.
  • Local integration time based on local Courant number.

ElmerSolver library functionality

Treatment of block systems

  • The block matrix approach for solving complicated problems has been enhanced.
    Currently the block approach can be used in several ways during some stage of the solution.
    1. Split up monolithic equations into subproblems that are easier to solve (e.g. IncompressibleNS)
    2. Combine linear multiphysical (coupled) problems into a block matrix (e.g. FSI problems)
  • For problems belonging to class 1) we may perform recreation of a monolithic matrix. This will
    allow better use of standard linear algebra to utilize direct solvers, or change the system to
    be harmonic or eigenvalue problem.
  • For the documentation of utilizing block-matrix construct in connection with
    the fully coupled simulation of multiphysical problems see the new chapter
    "Block-matrix construct to build tightly coupled solvers" in ElmerSolver Manual.

More economical integration rules

  • A collection of economical Gauss quadrature rules for prismatic elements are introduced to replace
    tensor product rules for quadrilateral p-elements when 1 < p <= 8. The tensor
    product rule with n = (p+1)**2 points is now replaced by more economical ones.

Dirichlet BCs for div-conforming vector finite elements (face elements)

  • A sif command of the form Q {f} j = Real ... can be used to specify vector-valued data whose
    normal component is then used to integrate the values of DOFs for vector-valued interpolation of the data.
    Here Q is an Elmer variable which is approximated with face finite elements.

Conforming BCs by elimination

  • System can identify conforming boundaries such that dofs related to nodes or edges on opposing sides may be
    assembled into one degree of freedom.
  • This decreases the size of the linear system and is numerically favourable.
  • Antiperiodicity may be included. For vector-valued problems all components must be treated alike.
  • Conforming BCs for edge dofs may consider the direction of edge.
  • See test cases with "Apply Conforming BCs" and "Conforming BC" defined.

Improved internal partitioning with Zoltan

  • Enable internal partitioning with Zoltan to honor connected boundaries.

Enable primary solver to call other solvers

  • For documentation see the section "Solver execution by a master solver" in ElmerSolver Manual.
  • Enables calling before and after solving the primary problem.
  • Also possible to call before and after each nonlinear iteration.

Anderson Acceleration for nonlinear systems

  • Implemented a version of Anderson Acceleration where previous solutions and
    residuals are used to accelerate the nonlinear convergence.
  • May increase nonlinear convergence to quadratic, quadratic convergence (Newton's method) is not improved.

Swapping meshes on-the-fly

  • Implemented library functionality to swap meshes during the simulation.
  • Currently no history data is interpolated.

ListGetElemental routines

  • More flexible routines for obtaining material parameters for the Gaussian integration points.
  • Detects automatically what kind of fields the dependency depends on (nodal, DG, elemental, IP points)
  • Vectorized versions to be used with vectorized finite element assembly

View factors

  • Allow computation of view factors in 3D cases with symmetry.
  • Speed-up computation for cases where emissivity not equal to one.
  • Enable view factors to be used in conjunction with DG (in HeatSolveVec)

Run Control

  • Enable external loop control over the simulation.
  • May be used in optimization and parametric scanning etc.
  • Applicable also to transient systems as the variable "time" is not used for the control level.

Inline parameters

  • Enable inline keywords -rpar and -ipar
  • They are followed by the number of argument + values of the arguments.

Generic source control

  • We may tune a r.h.s. load vector such that the solution (or reaction force) at
    given node is the desired one.
  • Mimics the old Smart Control operation of HeatSolve but on a library level.

ElmerGrid

  • Fixes for UNV, mptxt and Gmsh file format import.
  • Tentative reader for FVCOM format
  • Add possibility to define seed for Metis partitioning (-metisseed).
  • Maintain entity names in extrusion
  • ElmerGrid and its plugin under ElmerGUI were harmonized such that they use the same codebase.

ElmerGUI

Huge number of improvements by Saeki! Highlights include:

  • Object browser to view the case at a glance and to easily access the most windows.
  • Removed sif auto-generation functionality to avoid unintended overwriting of sif file.
  • "Generate, save and run" button to quickly run the case modifed via GUI.
  • "Save and run" button on sif...
Read more