From openEMS

Jump to: navigation, search

OpenEMS is a free and open source EC-FDTD solver. The development was started in February 2010 and is written in C++. An extensive Matlab (or Octave) interface is used to define the FDTD options. The geometry used for the FDTD simulations is handled by the CSXCAD library which is part of the openEMS project.



  • Efficient EC-FDTD method in full 3D cartesian coordinates (x,y,z)
  • Efficient EC-FDTD method in full 3D cylindrical coordinates (ρ, φ, z)
  • Fully graded mesh
  • Multi-threading, SIMD (SSE) and MPI support for high speed parallel FDTD
  • Simple engine extensions API to easily introduce new features to the FDTD algorithm
  • Matlab-Interface
  • Absorbing boundary conditions (MUR, PML)
  • Coordinate dependent material definitions
  • Coordinate dependent excitation definitions (e.g. mode-profiles)
  • Dispersive material (Drude/Lorentz/Debye type)
  • Field dumps in time and frequency domain as vtk or hdf5 file format
  • Flexible post-processing routines (mostly in Matlab)
  • Subgrids to reduce simulation time in cylindrical coordinates
  • Remote simulations using SSH (Linux only)


  • OpenEMS - A free and open source EC-FDTD solver.
  • CSXCAD - A C++ library to describe geometrical objects and their physical or non-physical properties.
  • AppCSXCAD - A visualization program, capable of showing the structure defined inside a CSXCAD xml-file.
  • QCSXCAD - The visualisation library used by AppCSXCAD.


Libraries used by openEMS:


Instructions in Portuguese here


  • Download the latest 64bit openEMS. (Old versions can be found here: win32, win64)
  • Unzip to a folder of your choice e.g. "D:/" (zip contains an openEMS folder)
  • Add the openEMS path to matlab (maybe in a "startup.m" in your Matlab startup folder):

That's it! Check your installation in the First Steps Tutorial


The recommended way is to install openEMS from source.

For some Linux distributions we have binary repositories. Follow the instructions here.


Experimental support using brew: brew file

Octave Support

As of version v0.0.26 Octave support should be nearly complete. After installing a new openEMS version or a new Octave version (recommended and tested is Octave >3.4.3) add the command


to the file c:\Octave\Octave-4.0.0\share\octave\site\m\startup\octaverc and to the file c:\Octave\Octave-4.0.0\share\octave\4.0.0\m\startup\octaverc

(Assuming that openEMS has been installed in c:\openEMS and Octave 4.0.0 has been installed in c:\Octave.) This will automatically add a path to the openEMS matlab files directory every time Octave is executed.

    Then execute:

Additional Software

Additional Software that you may find useful:


"Paraview is an open-source, multi-platform data analysis and visualization application." Paraview Homepage

Paraview can be used to visualize vtk files containing field dumps generated by openEMS. Use your package-manager to install (Linux) or download at:


We kindly ask you to reference openEMS in any publication that you were using openEMS for:


  author = {Thorsten Liebig},
  title = {openEMS - Open Electromagnetic Field Solver},
  organization = {General and Theoretical Electrical Engineering (ATE), University of Duisburg-Essen},
  url = {}
Retrieved from "index.php/OpenEMS"