Skip to content

A C++ TLM Electromagnetic field solver suitable for simulating prescribed 2D and 3D geometries.

Notifications You must be signed in to change notification settings

jojusimz/GEMINI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CONTENT


GEMINI: A TIME DOMAIN TLM ELECTROMAGNETIC FIELD SIMULATOR DEVELOPED IN C++

image

This repository hosts a C++ TLM electromagnetic field software suitable for simulating E and H field interactions in prescribed 2D and 3D cubic geometries discretized with a uniform mesh.

At the start of my PhD no open source C++ TLM code was available and so I developed GEMINI. Through it I have implemented novel formulations of PML algorithms and benchmarked their performance against existing published methods. Various numerical experiments have also been carried out using GEMINI. I have now decided to release my source code as it may be useful to any researcher interested in simulating similar problems or wanting to contribute to the work.

The implementation and approach taken to mesh and solve are simple and can be easily understood by researchers familiar with the TLM/Finite difference methods. The novelty however is the stable PML algorithms implemented the details of which are published in my journal papers (See reference list [1]-[5]).

Author: Jomiloju Odeyemi

Email: Jomiloju.odeyemi@nottingham.ac.uk

Weblink: https://www.linkedin.com/in/jomiloju-odeyemi/

Weblink: https://www.researchgate.net/profile/Jomiloju_Odeyemi

The TLM Method (At A Glance)

The TLM method is a well established numerical method developed based on the discrete Huygens principle. It explores the analogy between wave propagation theory and transmission line theory to obtain field solutions to hyperbolic partial differential equations. Consider the wave equation which is hyperbolic in its form:

\frac{\partial ^2 E_z }{\partial x^2} + \frac{\partial^2 E_z}{ \partial y^2} = c^2 \frac{\partial ^2 E_z}{\partial t^2}

the TLM method obtains an equivalent circuit equation of a similar form by applying a finite difference discretization and circuit theory. The resulting TLM equation to (1) is given as

\frac{\partial ^2 V_z }{L_x \partial x^2} + \frac{\partial^2 V_z}{ L_y \partial y^2} = C_z \frac{\partial ^2 V_z}{\partial t^2}........................................(2)

According to circuit theory it is possible to obtain exact solutions to equation (2). In this manner the TLM method differs from other popular Finite Difference based methods because it avoids a full discretization approach. Seeing that exact solutions to equation 2 can be computed it is therefore satisfactory to assume an unconditionally stable algorithm is achieved.

image

The spatial domain is discretized into a matrix of TLM cells and an explicit time stepping algorithm (referred to as the scatter and connect process) is applied at all points in space to obtain the field solutions.

How GEMINI Works (At A Glance)

At a glance image

Features

  • Uniform rectangular mesh TLM solver for 2D (TLM shunt node) and 3D (SCN and HSCN) problems.

  • Boundary conditions:

    • Perfect Electrical Conductor

    • Magnetic walls

    • Matched Boundary Conditions

    • Perfectly Matched Layer (Stretched coordinate PML implementation included)

  • Material Space:

    • isotropic / anisotropic permeability and permittivity material space

    • lossy material space (electric and magnetic losses)

  • Outputs E and H fields with point , line and plane output options.

    • Output file format: .txt or .csv files
  • Sequential/Parallel (OpenMP) implementation options

  • Source code is compilable on Linux or Windows using MSY. See setUP instructions section.

  • Excitation options:

    • point source

    • line source (2D)

    • Plane source : TE or TEM sources

    • Modulated Gaussian derivative pulse

  • Provides option to run batch of simulations in an automated manner

  • Stable Perfectly Matched Layer implementation that can terminate arbitrary inhomogeneous media!!

C++ Source Code Features

  • Object Oriented C++ development

    • Modularity of code: Class libraries and their implementations can be used independently of the GEMINI package

    • Scalable: Addition of new features

  • Portable to Linux / Windows platforms

  • Parallel/Sequential mode (OpenMP)

  • Key features:

    • <Sim_handler> : a wrapper class which handles the whole simulation process

    • <Mesh_handler> : a wrapper class for handling the mesh/ matrix of TLM nodes

    • sim_file_parser() : a function created to parse simulation data from an external file to a sim_handler class instance

      • Simulation/Model specification defined by user in a .csv file

      • Supports an automated running of simulation batches

      • Avoids hard typing of simulation data

    • Additon of new Geometry/Features easily achieved via class methods interface

Geometry/Material Features

The following material/geometrical features are the insertable in the computational domain:

  • Waveguide capacitive iris

  • Dipole Antenna

  • PEC cube

  • Frequency Selective Surface : Square Aperture FSS and Jerusalem Cross FSS

  • Dielectric substrate.

The insertion of new features is straightforward and can be achieved by a combination of the class_methods:

  • Mesh_handler.get_coordinate_iD (x,y,z)

  • Mesh_handler.Set_material (material_parameter_identifier)

For more info on this feature please contact me as this may not be obvious to first time users.

Getting Setup

Building GEMINI from source on Linux / Windows (MSYS)

Compilation Instructions

  1. CHECKLIST

    • Msys terminal (Mandatory for Windows. Download via MingGW Installation Manager)

    • g++ compiler (Mandatory)

    • MATLAB or Python to run Analytic scripts on Results (Mandatory)

  2. START BASH terminal (Linux) / MSYS shell (Windows)

  3. NAVIGATE to project folder and CLONE GEMINI repository to

    cd folder/to/clone-into/

    git clone https://github.com/jojusimz/GEMINI.git

  4. NAVIGATE to GEMINI source code directory and CREATE a results directory

    cd src

    mkdir GEMINI_results

  5. BUILD the source code to executable software

    make

  6. RUN the executable

    make RUN_GEMINI

The terminal window

image


Publications Featuring GEMINI

  1. J. Odeyemi, A. Vukovic, T. Benson, P. Sewell, “An improved PML implementation in the transmission line method,” IET 10th International Conference on Computational Electromagnetics, June 2019.

  2. J. Odeyemi, A. Vukovic, T. Benson, P. Sewell, “Stretched-Coordinate PML in 2D TLM simulations,” IET Science, Measurement and Technology, vol.14, no.3, pp. 272-277, 2020.

  3. J. Odeyemi, A. Vukovic, T. Benson, P. Sewell, “A complex domain mapping of the SCN for an effective PML implementation in TLM,” IEEE Open Journal of Antenna and Propagation, to be published DOI: 10.1109/OJAP.2020.2986293.

  4. J. Odeyemi, C. Smartt, A. Vukovic, T. Benson, P. Sewell, “ PML Effectiveness in the Transmission Line Modelling Method for Radiation and Scattering Applications,” European Conference on Antennas and Propagation, Copenhagen, 2020 (to be published).

  5. J. Odeyemi, M. Panitz, A. Vukovic, T. Benson, P. Sewell, “An Effective Stretched Coordinate TLM-PML Suitable for Analyzing Planar Periodic Structures,” IEEE Microwave and Wireless Components Letters (submitted and under review).

About

A C++ TLM Electromagnetic field solver suitable for simulating prescribed 2D and 3D geometries.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages