-
Notifications
You must be signed in to change notification settings - Fork 761
Description
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.
The difference in powers is shown here:
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:
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.