Diffraction patterns of aperiodic particle arrays: Vogel spirals

In this tutorial we reproduce experimental and theoretical results of Trevino, Cao, and Dal Negro on diffraction patterns produced by light shining on aperiodic spiral arrays of scatterers. Our reference is this paper:

  • Jacob Trevino, Hui Cao, and Luca Dal Negro, ``Circularly Symmetric Light Scattering from Nanoplasmonic Spirals,'' Nano Letters 11 2008 (2011). DOI: dx.doi.org/10.1021/nl2003736

The files for this tutorial are in the SpiralArrays subdirectory of the SCUFFTutorial archive.

GMSH geometry and mesh files for small thin disc

Disc8Mesh

JULIA code to produce Vogel spirals

Here's a julia code that inputs a .msh file name and some geometrical parameters and produces a .scuffgeo file describing Vogel spiral consisting of the mesh replicated many (hundreds or thousands) times in an aperiodic spiral pattern:

Usage examples:

 MakeSpiralArray(1000,"Disc8",SpiralType="GSpiral")
 MakeSpiralArray(1000,"Disc8",SpiralType="A1Spiral")

These produce files named Disc8_GSpiral1000.pp and Disc8_A1Spiral1000.pp

Disc8_GSpiral1000.pp
Disc8_GSpiral1000

Disc8_A1Spiral1000.pp
Disc8_A1Spiral1000

Imaging diffraction patterns with scuff-scatter

The --FVMesh option to scuff-scatter allows you to specify an arbitrary surface mesh on which you wish to visualize field data. For each --FVMesh you input, scuff-scatter will produce a .pp file plotting the fields at the centroid of each panel in the mesh. Thus, plotting the E-field magnitude at some distance behind the Vogel spiral yields plots of diffraction patterns.

RunScript

#!/bin/bash

BASEDIR=${HOME}/SCUFFTutorial/SpiralArrays

export SCUFF_MESH_PATH=${BASEDIR}/mshFiles
export SCUFF_GEO_PATH=${BASEDIR}/scuffgeoFiles

for N in 100 500 1000
do
  for TYPE in G A1 A2
  do

    GEOM=Disc8_${TYPE}Spiral${N}
    ARGS=""
    ARGS="${ARGS} --geometry ${GEOM}.scuffgeo"
    ARGS="${ARGS} --Lambda 0.633"
    ARGS="${ARGS} --PWDirection     0 0 1"
    ARGS="${ARGS} --PWPolarization  1 0 0"
    ARGS="${ARGS} --FVMesh          L5Screen_7400.msh"
    ARGS="${ARGS} --FVMeshTransFile L5ScreenTransformations"
    ARGS="${ARGS} --FVFuncs         |E|"
    scuff-scatter ${ARGS}

  done
done

Disc8_GSpiral1000 Disc8_GSpiral1000