fmmax
fmmax copied to clipboard
Variations to the Lorentzian Broadening
To condition the manual vjp of the eigenvectors, fmmax uses a lorentzian broadening term (like many other FMM/RCWA implementations):
https://github.com/facebookresearch/fmmax/blob/a509ffa99afd325673483893bf76efcf96ddba0d/src/fmmax/utils.py#L164-L168
That being said, the current formulation looks particularly sensitive to phase differences between eigenvalues. The convolution with the lorentzian test function should be complex-valued. One possible change could be:
$$ f_0 = \frac{\bar{Z}}{\bar{Z}Z + \epsilon} $$
where
$$ Z = \lambda_i-\lambda_j $$