We report on the development of a new finite element code,
Curly, for solving the vector Helmholtz equation in a
three-dimensional, periodic lattice. Curly differs from
other codes in several respects: (1) it uses a novel scheme
for the discretization of the identity operator to accelerate
the convergence of the numerical error, (2) the stiffness
matrix is assembled using a hash table object to provide
unstructured mesh features, and (3) the code is written in the
object oriented scripting language Python for ease of use,
portability and graphics. Numerically intensive calculations,
such as sparse matrix inversion, are relegated to fast C
routines. Thanks to Curly's accelerated convergence
algorithm, the code operates at lower resolution than would
otherwise be required for prescribed accuracy. Plasmons and
photonic band structure calculations are presented in the
Brillouin zone for a lattice consisting of intersecting
conductors.