-
Notifications
You must be signed in to change notification settings - Fork 644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Confusion with negative permittivity #1441
Comments
What is actually used in the FDTD algorithm is 1/ε. So, it doesn't matter for perfect metals if ε=±∞, since in either case you get 1/ε = 0. |
You need to use dispersive materials.
These use MPB, which only supports non-dispersive materials with ε > 0. See also #1319 for how we might improve this in the future. |
Thanks for the explanations.
Does this also mean that it's not currently possible to simulate complex scattering parameters when dispersive materials are involved (i.e. any realistic materials), because Meep's mode decomposition feature also relies on MPB? |
In the documentation for the EigenModeSource, I just read that any dispersion will be ignored by MPB during mode calculations. Is it ignoring the entire material, or just the resulting imaginary part of the permittivity? |
@smartalecH enabled some support for dispersive materials in #919, so the documentation should be updated to reflect that. It ignores the imaginary part of the permittivity, however. Nevertheless, it still won't support negative permittivity, since MPB requires ε and μ to be positive-definite. |
Negative permittivity values apparently cause problems in the simulation, as explained in the FAQ:
https://meep.readthedocs.io/en/latest/FAQ/#why-does-my-simulation-diverge-if-the-permittivity-is-less-than-0
I'm now wondering why the predefined perfect electric conductor (PEC) material is then using
epsilon=-inf
instead ofepsilon=+inf
:meep/meep.i, line 1780
:If I attempt to model an imperfect electric conductor replacing the PEC, say a copper sheet with a frequency-dependent complex epsilon using a LorentzianSusceptibility with a magnitude of around 1e6 to 1e7, the Eigenmode decomposition with MPB for the EigenModeSource does not work anymore and the fields seem to blow up.
However, If I flip the sign for a negative permittivity, MPB does work again, the simulation finishes and I'm getting correct results. The only problem is a RuntimeWarning and a lot of confusion, because this seems to contradict the statements in the FAQ.
It would be nice if someone could clarify what's going on here and give a hint how to properly model a lossy metal that works with EigenModeSources. After all, the examples in
meep/materials.py
are also using positive permittivity values.The text was updated successfully, but these errors were encountered: