This example shows how to calculate the bandstructure of rectangular 2D and 3D photonic crystals using FDTD. Photonic crystals and other periodically structured materials are used in a variety of applications including LEDs, optical fibers, displays, solar cells, etc. Understanding and controlling the bandstructure of photonic crystals is a key part of the design process.
Understand the simulation workflow and key results
To calculate bandstructure using FDTD, we excite all possible modes of the system by using multiple randomly placed broadband dipoles. The wave vector k is specified by the bloch boundary conditions, which means one simulation per k-vector is required. At frequencies where a mode (i.e. band) exists, the fields will propagate indefinitely. At all other frequencies, the fields will quickly disappear due to destructive interference. We identify the bands by finding the resonant frequencies of the fields that persist in the simulation.
Project files for three sample geometries are provided in this example. Two bandstructure examples for 2D rectangular structures; Square 2D, an array of dielectric rods, and Wavy 2D a multi-layer 'wavy' structure described in Ohtera et al. . Also Square 3D, a 3D photonic crystal composed of a close-packed simple cubic lattice of air spheres in a dielectric medium .
Run and results
Instructions for running the model and discussion of key results
- Open the FDTD file of interest and run the associated script file.
One FDTD simulation is required for each k-value of interest. The parameter sweeps are used to define the k vectors of interest. The script will run the parameter sweeps, then plot the resulting bandstructure, as shown below.
For the 2D simulations, users can toggle between TM and TE using the dipole_type field in the dipole_cloud analysis group. “Electric dipole” for TM and “Magnetic dipole” for TE. The plotted results are stored in fs_all matrix which contains the resonant frequencies at each k value.
Important model settings
Description of important objects and settings used in this model
Bandstructure analysis object: Overview
To calculate the resonant frequenices, this object collects E(t) from all the time monitors and adds them together. Using multiple time monitors at different locations ensure all modes are captured. It then employs the findresonances script command to obtain the resonance frequencies of those fields. Typically this result is collected over a range of k values using parameter sweeps to create plots of the bandstructure.
Bandstructure analysis object: t_start
The time when the sources are injecting energy needs to be ignored for the bandstructure calculation. This is implemented through the t_start parameter in the bandstructure analysis object, which determines the starting point used in the findresonances command. Set this to after the source has been turned off, which can be obtained from the source frequency/wavelength properties:
The simulation is required to run for long enough time to allow for the decaying fields (caused by destructive interference) to dissipate. Certain fields will excite the modes of the structure and continue to propagate indefinitely. The frequencies of these modes are calculated by the bandstructure analysis group.
Dipole cloud source
The goal of the source is to excite all modes of the system. Several randomly oriented and distributed dipoles sources are used to achieve this. This approach will ensure that all modes are excited even if one dipole is located at a node.
Bloch Boundary Condition
Bloch boundary conditions should be used at each boundary where the structure is periodic. Each simulation will give the band frequencies for a particular Bloch vector. The Bloch vector, k, is a property of the Bloch boundary conditions.
Parameterization of simulation using model setup script
A setup script in the model is used to parameterize some aspect of the simulation. Why: a number of model parameters (eg. frequency, k vector, period) affect multiple simulation objects, and using a model setup script is an easy way to ensure all objects have consistent settings.
Units and normalization
Frequency: The default frequency unit FDTD is Hz, which are used throughout this example to setup the simulation. However, normalized frequency are often used when plotting bandstructure data. The analysis script normalizes the frequency by the photonic crystal period using:
f_norm = f*a/c
k-vector: It is typically more convenient to work with the wavevector in normalized units. The project templates are setup so the user specifies the k-vector in normalized units in the model object.
k_norm=k_SI * a /2/pi
Updating the model with your parameters
Instructions for updating the model based on your device parameters
- The structure geometry, background index, and period are straightforward to update. Note that some of these properties are set in the model setup script.
- The frequency range of interest can be changed in the model setup script.
- The parameter sweep objects can be adjusted to sweep over the range of k-vector of interest.
- Occasionally the analysis will detect unphysical, spurious resonances. The bandstructure analysis object can be updated to use the tolerance property of the findresonance command to prevent weak resonances from being considered.
Taking the model further
Information and tips for users that want to further customize the model
- See Triangular, FCC, BCC Photonic Crystal Bandstructure for triangular type lattices.
- Extracting the bandstructure for simulations with high loss may require some additional care in the setup and tuning of the simulation parameters because the field decay quickly which makes it challenging to locate the resonant modes of the system. Please refer to the lossy bandstructure article for more information.
Additional documentation, examples and training material
- Ohteraet al, "multichannel photonic crystal wavelength filter array for near-infrared wavelengths", Journal of Lightwave Technology, vol. 25, no. 2, 499-503, Feb 2007.
- H.Sözüerand J. Haus, "Photonic bands: simple-cubic lattice," J. Opt. Soc. Am. B 10, 296-302 (1993).