fancompute / legume

🌱 Guided-mode expansion of photonic crystal slabs
https://legume.readthedocs.io/
MIT License
102 stars 27 forks source link

Comparison of quality factor obtained via Legume and an FDTD solver #55

Open nkvij opened 11 months ago

nkvij commented 11 months ago

Hi,

I have been tinkering around with the Legume software to optimize the design of an L3 photonic crystal cavity to improve its quality factor (Q). In order to validate the design, I am comparing the quality factor of the fundamental cavity mode obtained via Legume and an FDTD solver (Tidy3D). With the initial design, Legume gave me Q ~111k using only 1 k-point and ~170k when averaging over a 2x2 k-point grid (gmax = 2.5). Whereas I got a Q ~ 150k using Tidy3D.

Running the optimization routine, the quality factor increased to Q ~ 1 million (averaging over 2x2 k-point grid, gmax = 2.5), whereas the FDTD solver gave me a Q ~ 255k, which is a huge difference.

I understand that Legume is an approximate solver and that there are several parameters at play here. But is there an intuition on why there could be such a huge difference between the obtained value of Q, particularly for the optimized cavity, and how it can be mitigated?

momchilmm commented 11 months ago

I have a lot of experience with this... and it is not trivial. It is tricky to get a correct result in either gme or fdtd for a high-q cavity. Legume would usually overestimate the Q, while fdtd would underestimate it, when the results of either are not converged w.r.t. some of the possible parameters. For typical use cases, based on your description, I would think that the fdtd result may need a bit more work. Are you following the Tidy3D example in setting up the cavity? To get an accurate high Q, it's important that the simulation domain size is big enough in x and y so that the PML are not introducing some unwanted loss. Also sufficient run time is needed for an accurate resonance finder computation. By the way, I see that some of your Tidy3D simulations are diverging. This can also be tricky when running for a very long time, and is usually due to structures being close to the PML. Do you need help with that?

If everything looks good in the FDTD, some cases in which GME may have a relatively big error include asymmetric structures (e.g. cavity with a substrate), or a cavity in a thick-ish slab, such that higher-order slab modes are important. In both cases, you need to include higher-order gmode_inds in the computation, e.g. [0, 3, 4] if the structure is symmetric, or even [0, 1, 2, 3, 4] if it is not. You could try to figure out if there's one specific index which has a strong effect and add this one to the optimization. But generally, there are cases in which even the converged gme result will just be wrong. My experience with simple silicon-in-air cavities however is that if you work hard enough the converged results should match fairly well.

Let me know if you figure it out!