There has been a recent surge of interest in designing periodic metallic structures that have the property of having a negative permittivity and/or permeability at certain frequencies. Here, we present the development of Curly3d, a finite element code developed in Python for computing band structures and dispersion curves in periodic lattices. The code solves the vector Helmholtz equation in 3D using a mixed finite element-finite difference scheme. Curly3d allows for the calculation of both electric and magnetic fields in the presence of embedded conductors and varying material properties (e.g. changing dielectric). The code has recently been extended to compute the Poynting flux, which is known to point in the opposite direction to the phase velocity in negative dielectric/permeability media. Numerical results obtained using Curly3d are presented and compared to experimental findings and theoretical expectations.
As an add-on capability to Curly3d, an XML-RPC web based service is being actively developed to solve the sparse eigenvalue system using PETSc on the PPPL-Linux cluster. At the most basic level, XML-RPC lets one make function calls across networks. Extensible Markup Language (XML) provides a vocabulary for describing Remote Procedure Calls (RPC), which are then transmitted between computers using the HyperText Transfer Protocol (HTTP). The end user need not know anything about XML, parsing on the client and server side are taken care of by libraries.
Ryan McClarren and Chuck Crow are summer students working on an advanced programming languages project supervised by Alex Pletzer..