Oscillation in frequency domain E field amplitude



I would like to calculate the near-field frequency domain E field close to a silver sphere with 120nm diameter, with a electric dipole source. I noticed that there is an oscillation in my frequency results. I think these oscillations are numerical artifacts, because Generalized Mie theory produces the same major peak without any oscillations away from the peak. So I would really want to get rid of these oscillations in my FDTD calculations.

I’ve attached 2 calculations, one with 250-750nm test250-750nm.fsp (1.1 MB)
and one with 320-380nm test320-380nm.fsp (477.5 KB). The two calculations are basically the same, except that they use different material fittings: test320-380nm performs fit over the wavelength range of 250 to 450nm with an imaginary weighting of 15, while test250-750nm uses weighting of 1 over the range of 250 to 750nm. Both calculations show oscillations in E field (see Fig 1 for test250-750nm monitor 12 and Fig 2 for test320-380nm monitor 12).

Could anyone help me with this? Thank you very much.

Fig 1

Fig 2

Result from Different Version of Lumerical did not Match

Dear @wendu.ding

The ripples on the E field are mainly due to early shut off and there are different ways to improve or remove them. Material fitting is one of the options. But before getting into your simulations, I had a few concerns regarding your files:

  1. Why are using a dipole source? Mie theory uses a TFSF source that is optimzied to calculate scattering.
  2. Dipole is located on the boundaries of air and silver. I haven’t done many testing, but I think it will be a good idea to have the source located within one of the materials.
  3. What is the Mie theory you are referring to? Are you using mie3d command? If this is the case, please note that mie3d calculates transmission not the spectrum of time monitor.



Dear @bkhanaliloo

To answer your questions:

  1. I understand that original Mie theory uses a planewave as source, but there is a way to include a point dipole as source under the Mie theory framework using vector spherical harmonics basis. In this way, we can study the interaction between a point dipole source (simulating a emitting molecule) and a nanoparticle. (https://doi.org/10.1103/PhysRevA.13.396 and https://doi.org/10.1103/PhysRevA.14.2379)
  2. The dipole source is placed at a distance of 5nm away from the surface of the silver sphere. So the dipole is already in vacuum.
  3. I am not talking about the Mie theory function in Lumerical, but an open source code developed by multiple people for Generalized Mie theory starting from Xu’s GMM.

As for the shut off, as you can see in the file, I’m using a auto-shutoff limit of 5e-6, which is smaller than the default value of 1e-5. And I have checked the log file, which says early termination because the auto-shutoff criteria is satisfied. Are you saying that the value of 5e-6 is not enough in this case and I need to use a smaller value?

Thank you.


Dear @wendu.ding

Thanks for the responses. You are right about dipole position. It is displaced from sphere by 5 nm and there is enough mesh cell to resolve it.

One more thing, how you are getting the electric field plot? Since your simulation files were saved in the Run mode, I took a look at E field in some of DFTMonitors and I didn’t see any major ripples as Fig 1 in your post.



Dear @bkhanaliloo

First, I want to make sure we are on the same page as which figure goes to which fsp file. Fig 1 corresponds to “monitor_12” in file test250-750nm.fsp, while Fig 2 is for “monitor_12” in file test320-380nm.fsp. In both cases, “monitor_12” is located at the opposite point across the silver sphere from the dipole source, and it is 5nm away from the sphere’s surface.

Second, as for the ripples in Fig 1, it is the zoomed-in view. If you look the whole y-range in linear scale, then the ripples are barely noticeable. But if you zoom in on the baseline part, or if you look at log scale in y-axis, you will see the ripples. As for Fig 2, the pattern of ripples is different from Fig 1. I suppose it’s because the material fitting is different in the two files, as explained in my first post. But still, the ripples exist.


Dear @wendu.ding

I modified the simulation file:

  1. I think we don’t need such a fine mesh
  2. The built in material model seems to be just fine
  3. I decreased the FDTD auto shutoff level to 1e-6 and used standard PML with 8 layers
  4. I unchecked the optimize for short pulse fro source Edit tab

I think that if you us even a longer pulse in time domain, your results will get improved. This is being said that your current plot looks good and I am not sure how much you want to push the simulations. Here is the results that I got with the modified simulation file for your review:

test250-750nm_Modified.fsp (350.3 KB)

I hope this answered your question.


Dear @bkhanaliloo

Thank you so much. It seems much better.
A few points I’d like your confirmation or explanation:

  1. When doing single frequency calculation, we should use optimize for short pulse option; but when doing broadband calculation, we shouldn’t. Am I correct?
  2. If I want to a finer mesh compared to your modification, what should I change accordingly to obtain the results without ripples? Such as using a even smaller shutoff level?
  3. Isn’t the more PML layers the better?
  4. I think I’ve used a large enough simulation box, but is there a general rule for how large the box should be? I heard that the size of the box should be set according to the wavelength of light used in the simulation, but I don’t know what the relationship would be.

Thank you.


Dear @wendu.ding

These are very good questions and below I tried to respond them:

  1. While you set the bandwidth of source in frequency domain, in reality, since FDTD is a time domain method, it uses a pulse in time domain. Thus, since the length of time domain signal is limited you expect that always there will be some injected light outside the bandwidth. In cases where the material fit outside the bandwidth is poor or if you want to improve the bandwidth of the pulse, you can inject a longer time domain pulse. This can be done by unchecking the box. Please note that this might increase the simulation time. For most of the cases where material fit is not a problem, we have this box checked to have a faster simulation.

  2. You can use a finer mesh on the override mesh and also the FDTD mesh accuracy. One thing to note is while finer mesh can resolve some objects properly, you need to keep an eye on the mesh aspect ratio over entire simulation region specially close to PML boundaries that will directly affect the PML performance. This is something that I think will be causing problem in your original file. You can read more about this here:Here are two links to read more:

  3. That is true majority of the time if not all the time. Since 8 layers were enough I didn’t try using more number of layers.

  4. General rule of thumb is to leave at least half the max wavelength between critical objects and PML layer. This is a good starting point, and some convergence tests are recommended.


I hope this was helpful and I recommend performing a search on KB and KX to find lots of useful resources.


Dear @bkhanaliloo

Thank you very much. I think that answers almost all my questions on this topic.

One last thing. I noticed that when you increased the mesh size in the override region (from 0.25nm to 2.5nm), you also lowered the mesh accuracy (in FDTD setting, for outside of the mesh override region) from 6 to 3. So I would think the mesh aspect ratio in my original file should be fine, right? Or do you think to use my original mesh size (0.25nm), I have to use a even higher mesh accuracy (like 7 or 8)?

Thank you.


Dear @wendu.ding

I wanted to run some initial simulations to test the idea thats why I used a coarser mesh compared to yours. Also, I used a mesh accuracy of 3 (rather than 1 or 2) to make sure that aspect ratio will not cause any PML misbehavior (which will result in poor absorption).

If you want to use a fine mesh of 0.25nm, you will definitely need to use a high mesh accuracy and need to keep an eye on aspect ratio. If mesh accuracy was not enough, sometime you might need to use another mesh override region on the FDTD region, especially close to PML boundaries.



Dear @bkhanaliloo

Thank you very much for all the help. I will certainly do more tests, now that I know what to look at.