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.