![openEMS](https://raw.github.com/thliebig/openEMS-Project/master/other/openEMS.png "openEMS")
openEMS is a free and open electromagnetic field solver using the FDTD method. Matlab or Octave are used as an easy and flexible scripting interface.
**Website**: [http://openEMS.de](http://openEMS.de)
**Forum**: [http://openEMS.de/forum](http://openEMS.de/forum)
**Wiki**: [http://openems.de/index.php](http://openems.de/index.php)
**Github**: [https://github.com/thliebig/openEMS-Project](https://github.com/thliebig/openEMS-Project)
# openEMS Features:
+ fully 3D Cartesian and cylindrical coordinates graded mesh.
+ Multi-threading, SIMD (SSE) and MPI support for high speed FDTD.
+ Octave and Matlab-Interface
+ Dispersive material (Drude/Lorentz/Debye type)
+ Field dumps in time and frequency domain as vtk or hdf5 file format
+ Flexible post-processing routines in Octave/Matlab
+ and [many more](http://openems.de/index.php/OpenEMS#Features)
# Install Instruction
## Requirements
### Ubuntu
+ Install all necessary dependencies, e.g. on *Ubuntu 14.04 and above*:
```bash
sudo apt-get install build-essential cmake git libhdf5-dev libvtk5-dev libboost-all-dev libcgal-dev libtinyxml-dev libqt4-dev libvtk5-qt4-dev
```
**Note for Ubuntu 16.04:** Due to a bug in CGAL the package "libcgal-qt5-dev" may be required
+ Optional: Install [octave](http://www.gnu.org/software/octave/) and octave devel packages:
```bash
sudo apt-get install octave liboctave-dev
```
+ Optional: For the package [hyp2mat](https://github.com/koendv/hyp2mat) you need additonal dependencies:
```bash
sudo apt-get install gengetopt help2man groff pod2pdf bison flex libhpdf-dev libtool
```
+ Optional: For MPI support:
```bash
sudo apt-get install libopenmpi-dev
```
## Clone, build and install
+ Clone this repository, build openEMS and install e.g. to "~/opt/openEMS":
```bash
git clone --recursive https://github.com/thliebig/openEMS-Project.git
cd openEMS-Project
./update_openEMS.sh ~/opt/openEMS
```
or including [hyp2mat](https://github.com/koendv/hyp2mat) and [CTB](https://github.com/thliebig/CTB) and MPI:
```bash
./update_openEMS.sh ~/opt/openEMS --with-hyp2mat --with-CTB --with-MPI
```
+ Add the given paths to your Octave/Matlab environment (e.g.):
```Matlab
addpath('~/opt/openEMS/share/openEMS/matlab');
addpath('~/opt/openEMS/share/CSXCAD/matlab');
```
+ Add the optional packages to your Octave/Matlab environment (e.g.):
```Matlab
addpath('~/opt/openEMS/share/hyp2mat/matlab');
addpath('~/opt/openEMS/share/CTB/matlab');
```
For more informations and other platforms see:
[http://www.openems.de/index.php/OpenEMS#Installation](http://www.openems.de/index.php/OpenEMS#Installation)
## Update Instruction:
+ Perform an update in case of a new release
**Note:** Changes you may have made (e.g. to the tutorials or examples) may be overwritten!
```bash
cd openEMS-Project
git pull
./update_openEMS.sh ~/opt/openEMS
```