Skip to content

more accurate Meep eigenmodes using meepgeom.cpp for MPB #3116

@lxvm

Description

@lxvm

This issue addresses an accuracy issue (not a convergence issue) observed when calculating get_eigenmode_coefficient along an x-invariant waveguide and observing much larger-than-anticipated errors compared to manually-calculated eigenmode overlap integrals.
This continues some of the observations from #3096.

The simulation describes the geometry below and studies the variation of the power in various measurements of the eigenmode as a function of the x-dependence of the mode monitor.

Image

The difference in powers is shown here:

Image

This is for the Ez-polarized mode and I observed second-order convergence (see #3096), but the error may be different for the other polarization.

The code is in this notebook:

waveguide-debug.ipynb

From Meep devs discussion:

We may want to test that the material interpolation as passed to MPB is x-invariant. The hypothesis is that it isn't and so in addition to the interpolation errors observed in the manual overlap integrals, the eigenmode profile computed by Meep is introducing an additional source of error.

In the Python interface, the geometry data is stored in the Simulation.geps field that has methods to fetch the epsilon tensor at each point. We can use this to give MPB the data it wants.

May also need to refactor geom_epsilon::eff_chi1inv_row to return the full epsilon inverse matrix.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions