OpenEMS
From 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.
Contents |
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 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)
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
Windows
- Download the latest openEMS version (or browse through all versions)
- 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):
addpath('D:/openEMS/matlab');
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 (package repository)
To try out openEMS quickly, we've set up a package repository for most Linux distributions. Follow the instructions at Binaries.
This provides the fastest possible installation experience, but simulation speed is slower compared to a self compiled openEMS.
Linux (install from source)
This is the recommended approach for all who want to do productive work with openEMS.
This instructions assume that you will install openEMS to ~/openEMS
- Install all necessary packages and libraries: git, qt4-qmake, hdf5 and boost.
For example on Ubuntu 11.10:
sudo apt-get install build-essential git qt4-qmake libhdf5-serial-dev libvtk5-dev libboost-all-dev # for the Qt Interface (AppCSXCAD): sudo apt-get install libqt4-dev libvtk5-qt4-dev
- Create or change to a directory where you want openEMS to be installed (e.g. ~/openEMS):
mkdir -p ~/openEMS cd ~/openEMS
- Get the source code & repositories using git:
for mod in fparser tinyxml CSXCAD QCSXCAD AppCSXCAD openEMS; do echo "Clone $mod from openEMS.de" git clone git://openEMS.de/$mod.git done
- Update sources and rebuild openEMS using the "update_openEMS.sh" script:
wget http://openems.de/download/linux/update_openEMS.sh chmod +x update_openEMS.sh ./update_openEMS.sh
Add the openEMS path to matlab (maybe in a "startup.m" in your home directory):
addpath('~/openEMS/openEMS/matlab'); addpath('~/openEMS/CSXCAD/matlab');
For future updates:
- To update to a later version of openEMS just do:
cd ~/openEMS ./update_openEMS.sh
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) execute:
setup
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:
@ELECTRONIC{openEMS, author = {Thorsten Liebig}, title = {openEMS - Open Electromagnetic Field Solver}, organization = {General and Theoretical Electrical Engineering (ATE), University of Duisburg-Essen}, url = {http://openEMS.de} }
Release Notes 
v0.0.27
Date: 01.03.2012
- Near-field to far-field transformation completely rewritten in C++ with multi-threading --> speedup of 5 (single core) to 20+ (on my Quad-Core + HT)
- New Tutorial: Helical Antenna
- PML allowed in all directions for a cylindrical FDTD
- HDF5, read/write cleanup
- smaller fixes
v0.0.26
Date: 19.01.2012
- update and test of all tutorials
- many minor fixes and enhancements
- removed misleading percentage progress in openEMS output, replaced by warnings concerning low max. number of timesteps
- CSXCAD: Octave support improved
- Octave support: fixes in calculating nf2ff
- Octave support: now full hdf5 read support (needs execution of setup.m)
- Matlab/Octave: Convert hdf5 dump to vtk
- Fixes and Updates to Queue framework (see help on InitQueue)
v0.0.25
Date: 01.12.2011
- CSXCAD: new transformation scheme: apply a transformation (e.g. rotation, translation, scaling) to any primitive object
- CSXCAD: new rotational polygon primitive
- CSXCAD: arbitrary transformation (e.g. rotation, translation, scaling) of discrete material (e.g. human body model) properties
- QCSXCAD: 3D view mode as default, material is transparent
- Queue interface for parallel matlab execution (currently Linux only)
- Find a free ssh host (Linux only)
- Dump far-field pattern to vtk
- Advanced timestep in cylindrical coordinates
- console output reduced & simplified
v0.0.24
Data: 20.9.2011
- Maltab: added a lot of new tutorials
- Matlab: revision of AddMSLPort & calcPort
- allow multiple boxes for a single Probe or Dump Property
- fix in lumped elements mesh snapping
- fix in cylindrical multigrid timestep resetting
v0.0.23
Date: 22.7.2011
- matlab field interpolation fix and matlab vtk dump fix
- internal fixes handling dump and probe boxes
- fix in material debug for cylindrical coordinates
- bug fixes in the lumped elements and lumped port
- find free ssh host (linux only)
- fix in dumps using "OptResolution"
- critical bug fix in default pml grading function
- some updates to dft and fft, including a new resonance estimation
v0.0.22
Date: 4.5.2011
- some fixes in field dumps for handling special cases in cylindrical coordinates
- new vtk file I/O, now using compressed vtk files
- new lumped elements support
- several bug fixes
v0.0.21
Date: 28.3.2011

