OpenEMS

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.

Features

 * 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)

Components

 * 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.

Dependencies
Libraries used by openEMS:
 * CSXCAD: Part of the openEMS project. Author: Thorsten Liebig
 * tinyxml: A small and tiny xml parser written in C++. TinyXml website
 * fparser: Function parser library for C++ fparser Website
 * boost: http://www.boost.org/
 * hdf5: Hierarchical Data Format http://www.hdfgroup.org/
 * vtk: The Visualization Toolkit (VTK) http://www.vtk.org/
 * mpi: Message Passing Interface. mpich2 or Open-MPI

Installation
Instructions in Portuguese here

Windows

 * 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


 * You may want to check the additional software section (see below).
 * Give some feedback in the openEMS-Forum.

Linux
The recommended way is to install openEMS from source.

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

OS-X
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

addpath("c:/openEMS/matlab/");

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

 * "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: http://www.paraview.org/paraview/resources/software.html

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

BibTex: