Based on the current setup of the DiffractedPlanewave and EigenModeSource objects, it is not possible to launch planewave sources (by passing a DiffractedPlanewave object as the eig_band property of an EigenModeSource) with a negative propagation constant $\beta$ (the wavevector component in the direction perpendicular to the source plane).
$\beta$ is always chosen to be positive on line 660 of fields::get_eigenmode:
This missing property of DiffractedPlanewave sources is necessary for the adjoint solver (#2054).
(Note: for mode decomposition, obtaining the mode coefficient for the $-\beta$ mode is simply a matter of choosing the second of two elements of the third dimension of the alpha array returned by get_eigenmode_coefficient.)
Based on the current setup of the
DiffractedPlanewave
andEigenModeSource
objects, it is not possible to launch planewave sources (by passing aDiffractedPlanewave
object as theeig_band
property of anEigenModeSource
) with a negative propagation constant $\beta$ (the wavevector component in the direction perpendicular to the source plane).$\beta$ is always chosen to be positive on line 660 of
fields::get_eigenmode
:https://github.com/NanoComp/meep/blob/b065eae0491a7987983779c16115200acf0085d2/src/mpb.cpp#L649-L661
This missing property of
DiffractedPlanewave
sources is necessary for the adjoint solver (#2054).(Note: for mode decomposition, obtaining the mode coefficient for the $-\beta$ mode is simply a matter of choosing the second of two elements of the third dimension of the
alpha
array returned byget_eigenmode_coefficient
.)