Modeling a Ring Resonator used in an Experiment

I’m a beginner at Lumerical and have been attempting to model the ring resonator used in the following paper.

I have used both FDTD and Mode in an attempt to replicate the paper’s results. I have only been trying to replicate the results shown in figure 1b, the transmission spectrum of a typical silicon ring resonator as used in the experiment.

However, my simulated resonator is not achieving full coupling. I have examined my simulation’s outputs in multiple ways, including S-Parameters and DTF monitors. My exported S-Parameters are generally flat lines and do not reflect the expected output.

I have followed Lumerical tutorials on ring resonators and had no trouble achieving expected results in them.

I’m curious if the issue I’m having is related to light Modes. The paper says that TM mode is used and that is what I set my ports to, but is there more that I need to do?

Any help would be appreciated. Thanks.


FDTD_RR_Weiss_Junction.fsp (2.7 MB)

Dear @kbm337

Since you are trying to replicate the results of Fig.1b of the attached paper, I guess the best approach will be to use varFDTD. I have started making a simulation file, but please use the proper material and adjust the gap as is mentioned in the paper. You should be able to obtain the similar results as the paper, but please let me know if you had any problem.

ring_resonator_BK.lms (623.2 KB)


1 Like

I have begun using the file you provided to simulate this ring resonator in Mode. I changed the gap to 300nm, the width to 500nm and the height to 270nm as I have interpreted from the paper. If I am interpreting it wrong, let me know.

You mentioned that I need to use the correct materials. Could you expound on this? I have simply been using Lumerical’s built in Silicon and SiO2 materials. I know they’re likely at least somewhat different from the silicon used in the paper, but how would I go about determining what else to use? I don’t recall anything else from the paper that would help me.

After setting the correct gap and geometries I am still getting strange results. The s-parameters are nearly perfect flat lines. There is little to no coupling occurring. The image below should show what I’m getting.

One more thing. The paper states that the input light was TM polarized. I have tried setting the light source and monitors to TM modes but it has had little effect on my results.

Based on the results I’ve seen, it just seems that a 300nm gap is too wide to achieve coupling in this situation. I’m not sure how they managed it in the experiment.

Thanks again for your help,


ring_resonator_BK_updated.lms (628.0 KB)

Dear @kbm337

Sorry for the confusion. I didn’t have time to go over the paper and was asking to make sure that they have used silicon for waveguide and glass as substrate material similar to as my attached simulation file (which was the case).

It looks like since your ring resonator is almost lossless (no radiation loss because the radius is 12um, and almost no material loss since its silicon), you expect that the light that is coupled into the ring will be coupled back into the waveguide (with no loss) and thus you won’t see resonances clearly. Please note that in real experimental setup, due to fabrication imperfections, ring resonators have limited Q (lossy), and you can detect the resonances. If in experimental setup Q was infinite (theoretically) you should expect to see a sharp dip (like a delta functions) and it looks like this is what happens in your simulations.

I noticed that these result does not change much with the air gap distance, which proves our claims that ring does not have any loss. Please let me know of your thoughts.

Here I provided a screen shot of the results (which is the zoom in of your plot) for TE injected kight:

For future references, I provided my simulation file and simple script that I used to extract the S21 and S11 parameter:

input=getresult("expansion", "expansion for In");

output=getresult("expansion", "expansion for Out");


ring_resonator_KB_modified.lms (640.3 KB)

One approach for these problems is to use group delay analysis that I strongly recommend to take a look at the link below:


That makes so much sense. I definitely did not consider that.

One more question if you don’t mind. I looked into the Group Delay Analysis and noticed the light circling in the ring (I put a time monitor on it) does not appear to entirely dissipate. Is this because the ring is lossless or there is something up with the simulation? It seems to me that even if the ring is lossless the light would continue to couple out of the ring and eventually dissipate.

Thanks again,


Dear @kbm337

You are right, it should eventually dissipate. I downloaded the ring_group_delay_mode.lms file and here is how E field evolves in time inside the ring:

I guess this shows that E field is decaying for small ring.

Now lets get back to our case. With R=12um, n_eff~3, f=2e14, the round trip time is:

t_round = 2π*R*n_eff/c ~750fs

(which you can see from the plot that you have attached). From this and the relation between E field and Q factor:

E(t) = E(t=0) exp( -w*t/(2*Q) ) = E(t=0) exp(-480/Q);

which is the field decay per round trip. Now if you have a very high Q (say 1e8), you will need an insane amount of round trips for your field to decay considerably. I am not sure about the numerical errors, but I still think that you need way longer simulation to capture the decay. I also checked the spectrum inside the ring using time monitor and it matches well with the results that you already provided for the resonances:

Please let me know if this makes sense.

Yes that makes a lot of sense. Thanks for the detailed explanation.

Without changing the dimensions, is there any way to decrease Q?

Would that have to be done in the material modeling?



Dear @kbm337

Unless we introduce material loss (for example by choosing a different lossy material similar to silicon or setting a new material index in the form of n+ik where n is the real part of silicon refractive index and k is the artificial/exaggerated imaginary part) or have a second bus waveguide (I expect it should not change the location of resonance but will introduce a new loss channel). Maybe give it a shot and keep me updated with your results.

That does make sense. I know how to change the material index to add loss but I’ll leave that as a last resort for matching experimental results.

I’ve taken a break from the issues with losses and am now attempting to match the propagation mode used in the experiment. It states that a TM mode source was used. Here’s the process I used to find the right mode but I’m doing something wrong and missing information.

First I built a simple straight waveguide in Mode matching paper specifications. (silicon, 500nm wide by 270nm tall) I put Si02 under it and ran the Eigenmode solver.

Since no full 100% TM modes were found, I wasn’t sure how to go about picking a Mode that matches the paper.

In the Ring Resonator file I went to the Effective Index settings of varFDTD and changed the polarization to TM mode. Was that the correct thing to do even if the waveguide doesn’t seem to support a completely TM mode?

Next I went to the Mode Source settings hoping to find “Fundamental TM” mode, but it only had user select. I then used it to calculate available modes. I noticed that the max index for the standalone waveguide had been 1, but for the source it was 2.4. Where is this change coming from? Also, there were lossless mode options for the standalone waveguide, but the source only had lossy modes. One of the modes did say 100% TM but when i run it the loss is overpowering and nothing even shows up on the video monitor.

I’m probably just missing some simple step I just haven’t been able to track down what it is.



ring_resonator_Final_Mode_Test.lms (647.4 KB)

Dear @kbm337

By looking at the screenshot you provided, second mode is TM. Please note that 100% TE or TM mode does not exist (If I recall correctly, this is due to Maxwell equations in which you should have all field components on the plane perpendicular to propagation) and a better term for them will be quasi-TE or quasi-TM modes.

Yes, based on the discussion above that is correct.

I didn’t get this part. What is the max index here? If you waveguide is silicon (n~3.4) I am not quit sure what you mean by n=1?[quote=“kbm337, post:9, topic:4949”]
One of the modes did say 100% TM but when i run it the loss is overpowering and nothing even shows up on the video monitor.

Did you measure the loss? or you mean by just relying on the movie monitor? Here is a good place to learn about movie monitor settings for this type of questions:

I hope I could answer your question.


Thanks again for your help. I’ve been on spring break so I haven’t been able to work on it much recently.

Your answers make sense. The link to the movie monitor discussion really helped.

As for the max index, it is shown in the Eigensolver Analysis window. (There’s a little check box that says “use max index”) I’m assuming this means the max effective index.

Ignore the part about the max index being 1, I’m not sure how I got that and I can’t reproduce it. I’m now getting 3.47 which makes sense to me for a standalone waveguide because it’s silicon.

However, what doesn’t make sense to me is why it’s 2.4 for the eigenmode solver for the mode source? (look at the second picture from my previous post) Where is it getting that number from? I would think it would be the same results as what the eigenmode solver came up with for the standalone waveguide test.



Dear @kbm337

The effective index of a mode will be the same as effective index of the material only if your light is fully confined inside the material. In most of the cases, to be able to couple light from waveguide to other components through evanescent coupling, we design the waveguide so that light is not completely confined. Thus neff is lower than silicon index.

I hope I could address your question properly.

That makes sense. Your explanation really helped my understanding.

I’m working on compact model generation and exporting to Interconnect and having a few issues so I’ll likely be creating a new topic soon for that.

Thanks again,


Dear @kbm337

I am glad that I was helpful. Creating a new topic is a good idea, and our team is eager to be of a help.


I’ve been working on other projects but I’m back on this one now. I hope it’s okay to continue this thread since my current question is closely related to previous questions.

My question is why are the modes supported by the mode source different than the ones supported by the waveguide?

I used the Eigenmode solver on the waveguide and the TM mode is perfect. (group index of 4.84 which results in the same FSR as the experiment)

However, when I go to select a custom mode for the mode source, the modes available are completely different.

What am I doing wrong?

Here is the Eigenmode Sovler, the second mode is the one i want:

Here is the Source Mode Solver:

Here is my simulation file. (It’s the same one from before, just minor changes)

W_RR_New.lms (649.7 KB)

Thanks again.

Hold on there is a mistake. The waveguide test point for the varFDTD somehow got moved off the waveguide. I corrected it and here is my mode results for my source. The results are still different so my original question is still valid.

Hi @kbm337,

Sorry for the delay, we had a long weekend! I would have 2 comments regarding your question:

  • It seems you are looking at the TE mode of the waveguide, although the simulation is set for the TM mode. If you look at the second mode, the profile is quite different:

  • Keep in mind the modes you are calculating are for an equivalent 2D structure. The 3D structure is collapsed, an effective index is calculated using the slab mode of the waveguide. I think it is fairly difficult to actually compare the mode calculated using the FDE solver (using a 2D cross section of the waveguide) and its representation in the varFDTD solver.

I hope this helps.

Thank you for your response. I think it helped but there’s still some things I need clarification on.

I decided to set up the simulation light mode as best I could and extract the s parameters. I ended up with entirely wrong simulation results and I still suspect light mode set-up as the cause.

Here are the simulation results: (I know they’re not right)

I’ll start by briefly explaining how I setup the simulation and then I have a couple questions.

First, I did a simulation time of 50000 fs. That should be enough to get reasonable results even for a resonator.
I used Mesh accuracy of 4.
I set varFDTD polarization to TM mode.
I set the source mode to mode 2
I used frequency domain power monitors with 2000 frequency points (really high I know, but i wanted to be sure that wasn’t causing any issues)
Monitor "Data to record"set to “output power”
Mode Expansion monitor set to mode 2 (the effective index for this mode is 1.4, much lower than for the waveguide or source mode… strange)

For objects such a monitors, does selecting “Fundamental Mode” always mean mode 1 (highest effective index), or does it mean the selected mode for the varFDTD solver?

How many frequency points do i realistically need for power domain monitors? What about the mode expansion monitor?

Any ideas on what I’m doing wrong with my simulation?

My end goal is to accurately simulate these experimental results:

Thanks so much,


Hi Ellis,

Thanks for the additional information about your simulation. Reproducing experimental results can be tricky, for various reasons, going from the accuracy you know the actual geometry to the simulation parameters.

Regarding the simulation parameters, there’s a few things I would suggest to check:

  • Simulation size: make sure the “z span” of the simulation region (the varFDTD object) is big enough so the calculation of the slab mode is correct.
  • Simulation size (2): make sure the PML boundaries are far enough from the waveguide they don’t interact with the tail of the modes.

For these 2 points, it can be useful to start with the FDE analysis, and determine the size of the FDE region so it is big enough to fulfil the aforementioned points. Then you can used this to set the dimensions of the varFDTD region (by using the same distance between the BC and the structure).

  • Mesh size: the coupling between the waveguide and the ring depends strongly on the gap between them. Although our conformal mesh helps to get a better accuracy, you can use a mesh override object to fix a small mesh size between the ring and the wg.
  • Source and monitor size: similar to the first 2 points, you want them to be big enough so the mode calculation is correct (source and mode expansion monitor) and you record the whole fields (monitors). I would set them to the same dimensions as the one you would get from the test with the FDE solver.

It should be mode 1. That said, I was fiddling with the dimensions and it changed the mode distribution. Here’s what I got:

I ran the simulation for 25000fs and got this spectrum (note that S11 was pretty weak so I didn’t include it in the plot):

It could be interesting to run several simulations, where you set the dimensions of the device within the manufacturing tolerances to see if the experimental results fit within.

There’s 2 different things:

  1. The number of points used to record the data. This will mostly depend on the finesse of the result you want to get. For instance, for a high Q cavity, you may need more points to resolve the resonances.
  2. The number of points used for the mode calculation (mode expansion monitor). In a lot of case, the mode profile doesn’t change much in the frequency range of interest, so we only calculate the mode profile at the center frequency. In some case, you may need to use a broadband calculation.

Obviously, if you increase the number of points, it will increase the amount of data and the size of the file.

1 Like

Thank you for you clear and easy to follow answers. I’m understanding it all a lot better. Unfortunately I’m still having trouble so I’ll explain what I did.

Regarding “z span” of simulation region, I wasn’t entirely sure how to be sure it was big enough. I turned to Ch. 3 in the book Lumerical recommends “Silicon Photonic Design” and used it’s method for 1d slab convergence testing. Here’s what I got:

From this I assumed I was able to conclude that a “z span” of 2um would be plenty large enough for the varFDTD engine.

I modified the varFDTD properties and solved for the TM slab mode. Now the E field has only degraded by 5dB by the edge of the simulation region… Can I assume this doesn’t matter by the results of the previous convergence test? Or will this be a problem. I guess I’m just wondering if there’s any rule of thumb for field degradation in dB. (IE 10,15, or 25 dB)

What did you change to the simulation to get the S21 graph that you posted? I have been trying everything and been unable to get reasonable s-parameters.

Here is the script I’ve been using:

p, li { white-space: pre-wrap; }

input=getresult(“expansion”, “expansion for In”);

output=getresult(“expansion”, “expansion for Out”);


I will run a long simulation tonight and post the results tomorrow.

Thanks again!