Elmer Multiphysics

Category: Open-Source CAE | Revised 2026-10-02
CAE visualization for elmer multiphysics theory - technical simulation diagram
Elmer Multiphysics

Theory: coupling by chaining solvers

Overview

🙋

I hear Elmer is free multiphysics software. How does it solve several physics together?

🎓

Solvers are listed in the input file and solved in turn, repeatedly. Elmer, developed since about 1995 by CSC, a Finnish research centre, provides dozens of solvers — heat (HeatSolver), current (StatCurrentSolver), elasticity (StressSolver), flow (FlowSolver), magnetic fields (MagnetoDynamics) and more. The input file (.sif) lists Solver 1, Solver 2 and so on, with materials and boundary conditions per region. For steady coupled problems each solver is solved in turn and passes its results on, repeating until the overall change is small (segregated coupling). Strong coupling increases iterations, and a Relaxation Factor helps convergence. A GUI handles geometry and meshing and can write the setup file.

Coupled equations for Joule heating

$$ \nabla\cdot(\sigma(T)\nabla\phi) = 0,\qquad \nabla\cdot(k\nabla T) + \sigma(T)\,|\nabla\phi|^2 = 0,\qquad -k\frac{\partial T}{\partial n} = h\,(T - T_\infty) $$

φ is electric potential, σ(T) temperature-dependent conductivity, k thermal conductivity and h the surface heat transfer coefficient. The current and heat equations are linked through the temperature dependence of conductivity.

Analytical solution for a round rod

$$ P' = \frac{I^2 \rho(T)}{A},\quad \rho(T) = \rho_{20}\left[1 + \alpha (T - 20)\right],\quad T_s - T_\infty = \frac{P'}{h\pi d},\quad T_c - T_s = \frac{q''' a^2}{4k} $$

P′ is heat per unit length, ρ resistivity, α its temperature coefficient, A cross-section, d and a diameter and radius, T_s and T_c surface and centre temperatures, and q‴ heat per unit volume.

Coffee Break Trivia

Free multiphysics from the Nordics

Elmer was created for collaborative computational science among Finnish universities and research institutes and released as open source in 2005. Beyond engineering, it is widely used in geoscience — Elmer/Ice solves glacier and ice-sheet flow and contributes to climate research.

Worked examples

The table is an iteration of a radial heat-balance model, not an Elmer run. Assume resistivity 1.72×10⁻⁸ Ω·m and thermal conductivity 400 W/(m·K). End losses, radiation and changing natural-convection coefficients are excluded.

Example: 300 A in a 10 mm copper rod (ambient 20 °C, resistance temperature coefficient 0.0039/K)

CoolingResistivity fixed (20 °C)Temperature-dependent resistivityCoupling iterationsInternal difference
Natural convection h = 10 W/(m²·K)82.7 ℃103.1 ℃80.005 K
Light airflow h = 25 W/(m²·K)45.1 ℃47.8 ℃50.004 K

Rising temperature raises resistance and so heating, adding 20 K in natural convection. Each iteration cycles current → heating → temperature → resistivity update, converged when the change falls below 0.01 K. Weaker cooling strengthens the coupling and needs more iterations.

🙋

Solving the same problem in Elmer, my surface temperature came out about 10 K below theory. Is the mesh too coarse?

🎓

Before the mesh, check that the coupling iterations converged. As the table shows, one pass with 20 °C resistivity gives 83 °C, the second 98 °C and the third 102 °C, creeping up. If Steady State Max Iterations is too small, the run stops at an intermediate value and reads low. Watch how the temperature norm change shrinks over each 'Steady state iteration' in the output and confirm the Steady State Convergence Tolerance is met. The temperature difference inside the rod is only 0.005 K, so refining the interior mesh barely changes the result. What drives it is the heat transfer coefficient: h of 10 versus 25 moves the surface temperature by 55 K. Real natural convection h varies with temperature difference, and radiation joins at high temperature, so give h as a temperature function from correlations.

Getting started

  1. Run one heat-only case in ElmerGUI or an official example and learn the .sif structure.
  2. Add StatCurrentSolver on the same geometry and pass Joule heat as the heat source.
  3. Give resistivity as a function of temperature and set global iteration count and tolerance.
  4. Compare with the round-rod analytical solution; check iteration convergence and mesh effect.
  5. Move to real geometry, with heat transfer coefficients from correlations or measurements.
Coffee Break Trivia

“It looked converged but had just stopped”

A coupled run may end 'normally' with a small final residual simply because it hit the global iteration limit. Elmer tracks inner iterations within each solver separately from outer iterations between solvers, and the inner loop can converge while the outer one has not. Making a habit of checking that temperature and potential have stopped changing over the last few outer iterations prevents this oversight.

Common mistakes

Mistakes and fixes

MistakeEffectFix
Too few outer iterationsTemperature underestimatedCheck tolerance and limit
Constant resistivityHeating underestimatedGive as temperature function
Constant heat transfer coefficientWrong surface temperatureCorrelations plus radiation
Mixed-up body numbersMaterial on the wrong bodyCheck mesh numbering
Divergence under strong couplingOscillating iterationsLower the relaxation factor
🙋

I'd like to learn related topics.

Frequently asked questions

What is Elmer?

An open-source finite element suite developed by CSC (IT Center for Science) in Finland. It has many solvers — heat transfer, structures, fluid flow (Navier-Stokes), electrostatics, magnetostatics and eddy currents, acoustics and more — combined and coupled by listing them in an input file (.sif). ElmerGUI provides a graphical interface, and it is free under the GPL.

How is coupled analysis done in Elmer?

Put the coupled solvers in the same input file; for steady problems, 'Steady State Max Iterations' sets the number of global iterations. Each solver is solved in turn and passes results such as temperature or potential to the next, repeating until changes fall below the convergence tolerance. In the copper-rod Joule heating example, including temperature-dependent resistance converged in 8 iterations.

What matters in Joule heating analysis?

The temperature dependence of resistivity and how heat leaves the surface. For a 10 mm, 300 A copper rod, holding resistivity at its 20 °C value gives an 83 °C surface; letting it rise with temperature gives 103 °C — 20 K different. The temperature difference inside the rod is only 0.005 K, so getting the heat transfer coefficient right matters more than a fine interior mesh.

References and scope of verification

Numbers are educational reference calculations under the stated assumptions. Sources document theory and setup, not proof that these numerical values were reproduced in each package. Engineering decisions require validation for the actual conditions.

Related Simulators

Experience the theory firsthand with the interactive simulator for this field

All Simulators

Related fields

Structural AnalysisFluid Analysis (CFD)Thermal Analysis
Rate this article
Thank you for your feedback!
Helpful
More details
Report error
Helpful
0
More details
0
Report error
0