DOCUMENTATION

CURLY3D: A finite element code for solving photonics problems in 3-D

Description

Curly3d solves the stationary Maxwell equations in the unit cell of a triply periodic, infinite domain containing dielectric and/or conducting material. The dielectric can have a non-positive definite permittivity tensor (epsilon) and/or a magnetic permeability tensor (mu). The finite element method is used to discretize the equation, yielding a generalized eigenvalue problem of the form A x = lambda B x. The basis functions are van Welij vector elements, with the unknown (scalar) amplitudes representing the field along the edges of straight hexahedral (brick) elements. To accelerate the numerical eigenvalue convergence, a mixed finite-element, finite-difference scheme is applied for the discretization of the identity operator.

Curly3d can solve either for the electric E or magnetic field H. The equation for H is similar to E except for the permittivity and permeability playing opposite roles. Note, however, that the E and H fields satisfy different boundary conditions at conductor interfaces.

A more extensive description of the numercal scheme used in Curly3d can be found in the proceedings of the ETOPIM 2002, Snowbird, Utah conference (July 15-19 2002).

Usage

Curly3d is a collection of Python modules (scripts). In order to use Curly3d, you'll need to write a driver, ie. a script that typically performs the following steps in sequence:

Given a driver, run the code simply by invoking

"python curly.py".

where "curly.py" is the driver. You'll need to run your driver in the directory where the Curly3d modules reside, or else define the environment variable PYTHONPATH.

Examples

  • Unit cell with epsilon=mu=1 and intersecting conductors at center: curly.py. Graphics obtained with ctkvis.py. Plasmon and Photon eigensolutions
  • Other test cases can be found in the directory "examples"
  • Send comments to pletzer@pppl.gov SourceForge Logo