My caption 😄

# Electromagnetic Software

Over the course of my academic career, I have mostly used the statistical programming language R for the analysis of my data and exploration of theory. I have developed several R packages in that time for various useful optics calculations and for data-processing.

## mlfilms

The mlfilms package uses the transfer matrix method to calculate the reflection and transmission of plane polarised light from an arbitary stack of thin films.

It is the most complete R package I have created, with documentation and examples.

## thor2

The thor2 package provides the optical response of various thorlab components for use in R.

## disp.plot

Package for producting colourplots/heatmap plots of linearly-spaced data with arbitrary non-linear coordinate transformations.

Developed by necessity to be able to transform wavelength $(\lambda)$ and angle $(\theta)$ data to non-linearly spaced colourplots of frequency $(1/\lambda)$ and momentum $(\propto (1/\lambda) \sin{\theta})$, but also works for any linearly-spaced to nonlinear-spaced data. For example the Cartesian to polar colourplot transformation $f(x,y) \rightarrow f(r, \theta)$.

## rindex

rindex allows you to browse refractive index data from http://refractiveindex.info directly in R, and to directly use the datasets or interpolated refractive index functions for a wide range of materials.

## fdtd

An example script showing how to implement a simple Finite Difference Time Domain calculation in R.

## grapheneSPP

An R implementation to calculate Surface Plasmon Polariton dispersion in Graphene, including interactions with substrate phonons.

## photonMonkey / ultrafastMonkey

Miscellaneous convenience functions for use in optics.