Skip to content

Reduced degeneracy resolution in triangular lattices #142

@agoatboi

Description

@agoatboi

Description

It appears to me that MPB's performance in resolving eigenvalues is severely impacted when using a triangular lattice.

For my research endeavors, I need to examine the eigenmodes of photonic crystals with rotational symmetry at the high symmetry points of the BZ, and determine the "orbital" they behave like. To extrapolate this information, I look at the symmetries of the fields, as well as the eigenvalue differences.

Due to the rotational symmetry, I expect the Hamiltonian to take a particular block diagonal form with the blocks being the irreducible representation of the point group at that high symmetry point. Eigenmodes belonging to the same such block, should have the exact same energy. In practice, I would expect the difference of such eigenvalues to not be exactly zero, but rather scale with the numerical precision (tolerance parameter) of the ModeSolver.

In my many trials, I always failed to observe proper scaling with the tolerance or the resolution parameters in the triangular lattice case. When switching to a rectangular lattice (with a reduced C_4v point group), I see the difference in eigenvalues quickly reach even beyond what I specify in the tolerance parameter, becoming essentially noise at ~1E-16 order.

In the images below, I perform some analysis on the structure from the tri-rods.py example, looking at the eigenvalue differences between consecutive modes and looking at the spatial profile of the pairs of fields. I believe this is related to issue #126, but since I use an internal geometric construction function (circle object), the first condition mentioned in the issue is not present.

It strikes me as very odd how such poor performance occurs even at structures in the provided examples. I also wonder whether there is (present or planned) functionality to enforce additional symmetry in the dielectric distribution of a crystal.

Images

Here are a few images to illustrate my point:

Eigenvalue Differences

First I plot the log10 of the eigenvalue differences (eig_val[i+1] - eig_val[i]). The high symmetry point is denoted at each row, while the band i is the column.
The TE modes are shown in red, while the TM modes are shown in green.

Rectangular

We see that there are clearly separated white spots, indicating the degenerate eigenvalues. These will quickly drop to 0 as the tolerance is increased.

rectangular_degeneracy_Reds
rectangular_degeneracy_Greens

Triangular

We see that there are white spots, but most of them are not very bright. The eigenvalue difference is hard to resolve, and thus fewer degenerate pairs are found.
triagular_degeneracy_Reds
triagular_degeneracy_Greens

Eigenmode Pairs

Then, I plot the real part of the spatial profile of the pairs of fields as a two-image column, and indicate their high symmetry point and band number at the bottom right.
TE modes are draw in red-blue, while TM modes are drawn in green-pink.

Rectangular

I define pairs to be degenerate when their eigenvalue difference is < 1E-5. A lot of degenerate pairs are found, although not all originate because of symmetry. About half of the TE mode and most TM modes pairs belong to the same orbital, as expected.
rectangular_degeneracy_fields

Triangular

I define pairs to be degenerate when their eigenvalue difference is < 1E-4, because of the reduced clarity. Overall, despite the relaxed threshold, less degeneracies are found, The vast majority of the TE mode pairs are do not belong in orbitals that can have pairs. About half of the TM mode pairs are due to symmetry and correctly found.
triagular_degeneracy_fields

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions