Vulture: An Open Source FDTD Solver For Electromagnetic Simulations

The Applied Electromagnetics Group (AEG) FDTD solver, Vulture, is an Open Source non-uniform structured mesh FDTD code for electromagnetic simulations. It was developed in the Department of Electronic Engineering at the University of York for research in electromagnetic compatibility (EMC), computational electromagnetics (CEM) and bioelectromagnetics.

Code Features

The code currently has the following features:

  • Non-uniform mesh allowing for uniform cubic and uniform cuboid special cases.

  • External mesh surfaces that can independently be perfect electric conductor (PEC), perfect magnetic conductor (PMC), perfectly match layer (PML), analytic Mur absorbing boundary condition (ABC) or periodic boundary conditions.

  • A uniaxial perfectly matched layer (UPML) implementation that can terminate arbitrary inhomogeneous media.

  • Gaussian pulse, compact pulse, ramped sinusoid, differentiated pulse and user defined waveforms.

  • Distributed hard and soft electric and magnetic field, current density, current and ideal voltage sources.

  • Lumped resistive voltage and current sources.

  • Internal PEC surfaces.

  • Simple isotropic media with frequency independent permittivity, conductivity and (real) permeability.

  • Arbitrary electrically dispersive media using a generalised multi-pole Debye dispersion relationship.

  • A face-centred two-sided surface impedance boundary condition for efficient modelling of thin frequency dependent material surfaces (Dawson2017,Flintoft2018).

  • A total-field-scattered-field (TFSF) plane-wave source, also known as a Huygen's surface source, for multiple plane-wave excitation. The implementation supports partial Huygen's surfaces and has grid dispersion optimisations for uniform cubic meshes.

  • Binary and ASCII format field observers.

The mesh format is a simple ASCII file that can be written manually or for more complex models AEG Mesher can export Vulture format meshes.


The code is written in standard C99. Additional requirements are:

  1. (Mandatory) To compile and install the code the CMake software build tool is needed.

  2. (Optional) To help with development or as an alternative way to download the source a client for the Mercurial Version Control System is required.

To run the test-suite the following are also required:

  1. (Mandatory) GNU Octave or MATLAB.

  2. (Optional) gnuplot.

  3. (Optional) Python.

  4. (Optional) The AEG time-domain post-processing tools (not yet available).

  5. (Optional) The AEG Mesher can create Vulture meshes from CAD files.

The code has been primarily developed on Linux platforms, but it should build and run on both Linux and Windows systems.


Installation instructions are contained in the file in the source distribution. There is also a LaTeX user manual and tutorial in the doc directory of the source distribution that builds into UserManual.pdf.

Bugs and support

The code is still under development and no doubt will contain many bugs. Known significant bugs are listed in the file doc/ in the source code.

Please report bugs using the bitbucket issue tracker at or by email to

For general guidance on how to write a good bug report see, for example:

Some of the tips in are also relevant to reporting bugs.

There is a Wiki on the bitbucket project page.

How to contribute

We welcome any contributions to the development of the code, including:

  • Fixing bugs.

  • Interesting examples that can be used for test-cases.

  • Improving the user documentation.

  • Items in the to-do list in the file

Please contact Dr Ian Flintoft,, if you are interested in helping with these or any other aspect of development.


The code is licensed under the GNU Public Licence, version 3.


Dr Ian Flintoft :

Mr Samuel Bourke :


Dr Ian Flintoft :

Dr John Dawson :


Vulture was inspired by a number of earlier electromagnetic simulation codes developed in the Applied Electromagnetics Group in the Department of Electronic Engineering at the University of York. The input mesh format for Vulture is an evolution of the format used by the “Hawk” Transmission Line Matrix (TLM) and “Falcon” FDTD solvers by Dr Stuart Porter and Dr John Dawson. The binary output format was also originally developed by Dr Stuart Porter and Dr John Dawson for these two codes.

Publications using Vulture

(Flintoft2018) I. D. Flintoft, S. A. Bourke, J. Alvarez, J. F. Dawson, M. R. Cabello, M. P. Robinson and S. G. Garcia, “Face centered anisotropic surface impedance boundary conditions in FDTD”, IEEE Transactions on Microwave Theory and Techniques, vol. 66, 2018.

(Bourke2017) S. A. Bourke, J. F. Dawson, I. D. Flintoft, M. P. Robinson, “Errors in the shielding effectiveness of cavities due to stair-cased meshing in FDTD: Application of empirical correction factors”, EMC Europe 2017, International Symposium and Exhibition on Electromagnetic Compatibility, Angers, France, paper no. 52, 4-8 Sep. 2017.

(Dawson2017) J. F. Dawson, I. D. Flintoft, S. A. Bourke, M. P. Robinson, M. R. Cabello, S. G. Garcia and J. Alvarez, “Face centered anisotropic surface impedance boundary conditions in FDTD: Improved performance of staircased mesh for shielding problems”, 2017 IEEE MTT-S International Conference on Numerical Electromagnetic and Multiphysics Modeling and Optimization for RF, Microwave and Terahertz Applications (NEMO2017), Sevilla, Spain, pp. 260-262, 17-19 May, 2017.

(Bourke2016) S. A. Bourke, J. F. Dawson, I. D. Flintoft and M. P. Robinson, “Errors due to orthogonal meshing of electromagnetic cavities in FDTD”, IET EM Modelling and Simulations for RF and Microwave Applications Seminar, Nottingham, UK, 29 Nov. 2016.

(Xia2012) R. Xia, J. F. Dawson, I. D. Flintoft, A. C. Marvin and S. J. Porter, “Use of a genetic algorithm in modelling small structures in airframe”, EMC Europe 2012, 11th International Symposium on EMC, Rome, Italy, 17-21 September, 2012.

(Xia2011) R. Xia, J. F. Dawson, I. D. Flintoft, A. C. Marvin, S. J. Porter and I. Marschke, “Building macro-models for small structures on aircraft”, EMC Europe 2011, 10th International Symposium on EMC, York, UK, 26-30 September, 2011. pp. 575-580.