All-optical Switch Based on Nonlinear Plasmonic Mach-Zehnder Interferometer



I’ve been trying to simulate this paper (New All-optical Switch Based on the Local Nonlinear Plasmonic Mach-Zehnder Interferometer Waveguides, Yaw-Dong Wu, Sheng-Rong Hong, and Tien-Tsorng Shih
PIERS Proceedings, 452 - 454, August 12-15, Stockholm, 2013)
but can’t get the results! I’m new to lumerical so I’d appreciate if someone could take a look at my simulation and see whats the problem!
here’s my fdtd:
with_nonlinear_arm.fsp (270.7 KB)
thank you


Hi sos007,

I had a look at the referenced paper as well as your simulation file.
I could notice a number of issues with your simulation settings:

1. The reference does not give all the necessary parameters for the waveguide design. There is no mention of the angle and the length of the waveguide branches. I have created a structure group [ 3065_structure.fsp ] taking these parameters into account:

2. The χ(3) value in the reference is in [esu unit]
(–gram–second_system_of_units#Derivation_of_CGS_units_in_electromagnetism) (cm^2/statvolt^2). But you need to convert it to SI uniti (m^2/V^2) as this is the unit used in Lumerical.

3. The reference does not clearly describe what kind of source is used, but, a mode source seems to be a correct choice for your device.

I would recommend you modifying your simulation settings as suggested above and seeing how it goes.




Dear skim
I modified the simulation setting as you recommended. though I’ve some questions:

  1. X(3) after changing it to SI unit is 43.2 * 10^-2 . is that right?! but you had it as 3e-20 in lumerical materials!
  2. The length of L5 is not long enough to interact with nonelinear arm (L4) !
    3)mode source didn’t seem to work, so I used Gaussian Source instead.
    and the most important part is that the substrate which is silver here, is not mentioned in the paper properly with all its characteristics! so even slightest change could have a significant effect in the out put!
    with all this in mind, I sent you the .fsp file Hoping that you could figure it out
    thanks in advance


Hi @MBAzari,

Q1. X(3) after changing it to SI unit is 43.2 * 10^-2 . is that right?! but you had it as 3e-20 in lumerical materials!
A1. The above esu-to-SI unit conversion formula states that if you have your X(3) value in esu, you need to multiply it with 10^-8 / 9 to get the X(3) in SI unit. So X(3) = 4.810^-10 (esu) will translate into 4.810^-10 x 10^-8 / 9 = 5.33*10^-19 (SI). The values in the simulation file was an arbitrary choice.

Q2. 2) The length of L5 is not long enough to interact with nonelinear arm (L4) !
A2 The structure group is parametrized. If you want a different length for L5, you just need to enter it in the ‘Parameters’ tab of the structuregroup.

Q3. mode source didn’t seem to work, so I used Gaussian Source instead.
and the most important part is that the substrate which is silver here, is not mentioned in the paper properly with all its characteristics! so even slightest change could have a significant effect in the out put!with all this in mind, I sent you the .fsp file Hoping that you could figure it out
A3. I am not quite sure what you meant by ‘mode source didn’t seem to work’ and ’ slightest change could have a significant effect in the output’. A bit of detailed description about how the mode source did not work, what you have changed and what output you are referring to would help in understanding your problem.

If possible, you might also want to consider sharing your simulation file here.




here is the .fsp file:
test.fsp (253.3 KB)
but still I can’t get a zero transmission in an specific wavelength based on the papaer!


Hi @MBAzari,

I have a couple of suggestions for your simulation:

  • For initial testing, I think it makes sense to run a 2D simulation instead of a full 3D one. The 2D simulation should capture most of the physics happening in the system and it requires less execution time and memory.
  • I would not use the Gaussian source. Even though this source would probably excite the desired plasmonic mode, it will also include other fields in the simulation that might complicate the analysis. Using a mode source instead has the advantage that you can inject the desired mode only.

In the attached simulation file I injected the fundamental mode of the waveguide. I am not entirely sure this is the mode the authors of the paper used, so you might want to check this point. There are also some parameters (not very clear in the paper) that should be checked, such as

  • the distance between the two arms of the Mach-Zender intereferometer;
  • the parameters for the Drude model used for silver.

However, the attached simulation file illustrate the correct behavior: when the nonlinear material is included in the lower arm of the Mach-Zender interferometer (MZI), you can see a dip in transmission at a certain wavelength. When the nonlinear material is absent, on the other hand, you just see an oscillatory behavior (without the dip).

Note that the dip is not at the same wavelength as in Fig. 2b of the paper, but the qualitative behavior is the same. Since we are not entirely sure about the exact configuration described in the paper, it is difficult to get the exact same results.

For this simulation I suggest using the ports feature available in the latest release 2017a of FDTD. Ports allow you to inject and analyze modes, so they can replace the mode source and mode expansion monitors. The additional advantage is that in the 2017a release we introduced a multi-frequency mode injection, which is quite useful in your case since you want to cover a broad range of wavelengths.

Some additional important changes I made are the following:

  • Used a Plasma (Drude) model for silver, as described in the paper.
  • Changed the source amplitude (port 1 properties) to 137.84, to be consistent with the source intensity 1.9e4 (V/m)^2 reported in the paper. This is important to excite the nonlinearity correctly.
  • The mesh for the MZI region should be fine enough to resolve the plasmonic mode (which has some sharp features) and to simulate correctly the propagation. For this reason I used a mesh override region there.
  • Plasmonic simulations with metal waveguides that extend through the PML tend to be unstable. For this reason I made the input and output waveguides very long so that the mesh becomes coarser when it reaches the PML (outside the mesh override region the mesh is auto-nonuniform). This increases the thickness of the PML layers at the x min and x max boundaries. Furthermore, it is necessary to use the stabilized PML profile.

One final comment: note that the simulation so far does not include the pump that acts as the switch. Before introducing the pump, you should make sure the results without it make sense.

Simulation file using ports (2017a release version required): test_modFG_withports.fsp (599.2 KB)

Hope this helps!


Dear @fgomez
Thanks for the information. this was exactly what I wanted to obtain.the transmission dip on 882nm is observed in your .fsp file which is fine considering that I didn’t want the exact dip as the paper and just wanted to illustrate the correct behavior. I didn’t know much about ports feature so thanks for using it. I have some questions :

  1. the intensity of source based on paper was 1.9e4 (V/m)^2. how did you relate it to source amplitude as 137.84 ?
    based on that, what’s the source amplitude for pump with intensity of 1.9e6 (V/m)^2?
  2. on enabling pump, should I use mode source with the same wavelength sart/end inputs as my input source?!

finally I wanted to expand this to two mach-zehnder. here is the .fsp file :
test_modFG_withports.fsp (604.7 KB)
the idea is that on specific pump intensity, the output of first mach-zehnder is off and pump directly goes into second mach-zehnder and then to B output in output. But if pump changes, the output of first mach-zehnder is on( which makes A output on) and further ahead, pump enters into second mach-zehnder but this time because first mach-zehnder’s output is on it effects the nonlinear arm and causes second much-zehnder output to be off.
is this doable ?!


Hi @MBAzari,

Sorry for the wait. To answer your questions:

For beam and mode sources, the amplitude in the source settings corresponds to the maximum amplitude of the electric field (in V/m) of the signal injected in the simulation, as explained here. Therefore, I used the square root of the intensity given in the paper, sqrt(1.9e4 (V/m)^2) = 137.84 V/m. For the pump, the source amplitude would be sqrt(1.9e6 (V/m)^2)=1378.4 V/m.

I am not sure about this point because I couldn’t find information in the paper about the pump wavelength. My guess would be the same as yours: trying the same range as for the input source.

In principle, it should be possible to simulate the double Mach-Zender structure but I would suggest simulating the situation with the simple pump ON/OFF states from the paper to make sure that it works as expected.

Hope this helps!


Dear fgomez
Thanks for the reply
I’ll work on the pump side of the paper.
I have a question:
Considering that I have solved the pump problem and made it work, now I want to use double mach-zehnder to achieve the behavior that I explained before. Now the problem is that when the output of first MZ is on it’s going to effect the NLA in second MZ, but it’s intensity is not that big to have the efficient effect there! (As far as I know pump intensity must be bigger than input source. Right?!)
How do you suggest I could make it work?!


Hi @MBAzari,

I am not sure how you would solve this problem. I guess you would need to check first how strong the pump needs to be and see if you can tune other parameters in the simulation. Have you seen this type of design somewhere else?


the strength of pump is 1.9e6 (V/m)^2 as suggested in the paper. what do you mean by other parameters?! parameters like X(3) or size of the second MZ !
No, this design is new.


I added pump and on 882nm, the out put is off when pump is off and when its on, the out put T is about 0.5 while at the state of off pump its close to zero. also I found a good place to locate pump and now the distance between MZ and Pump is 3nm , while it was 20nm before( I thinks now I have more power to have that Kerr effect).

  • I couldn’t use ports so I just disabled them. But as you said in my case its useful to cover broad range of wavelengths.
    Now I want to find that shift in the wavelength after enaibling pump, but without ports its hard! could you find that wavelength in which Transmission Dips ( the shift as in paper) after enabling pump?!
  • Also the wavelength of input and pump apparently must be the same!

here is the file :
test_modFG_withports.fsp (318.4 KB)

in double MZ I have these problems:
As you already know, The idea was that:

  1. If pumps intensity is not that big enough to effect first NLA, therefor the out put of first MZ is off ( input wavelength is 882nm) and the pump goes directly to second MZ and then to output of second MZ ( here is another problem: if second MZ is identical as first, then it should be off at 882nm too! so I should change pump wavelength or X(3) of second NLM to make it On! )
  2. If pump intensity is big enough to effect first NLM, then the out of first MZ is on and it should effect second NLM and therefor cause the output of second MZ to be off.( here comes the second problem, the intensity of first MZ is not that big enough to initiate the Kerr effect on second NLA! )
    I would really appreciate it, if you help me to get it to work or change the design in a way that it works.

Here is my file ( I don’t know whether I used ports right here or not! ):
test_modFG_withports.fsp (910.8 KB)



Dear @MBAzari,

Sorry for the wait. I think we need to consider more carefully the simulation of one MZI with the pump enabled, because there are more complications than what I initially thought. I discussed this simulation with @kchow and we identified a couple of issues:

(1) The simulation with the signal alone is essentially a linear simulation because the contribution from the chi3 term in the permittivity is very small. I tested this by comparing the results we obtained before with those for chi3=0. Therefore, in the situation without pump the pronounced dip in the transmission is due to the background permittivity eps0 = 2 of the nonlinear material, not to the chi3 contribution.

(2) Since the simulation without pump is essentially linear it is possible to use a broadband simulation as the one I suggested before to find the transmission for different wavelengths. When the pump is enabled, however, this is not a good idea anymore because the broadband simulation uses a pulse to drive the system and so each frequency will be injected with a different amplitude. Therefore, each frequency will “experience” a different permittivity at the nonlinear material even though we are using the same chi3 for all frequencies. To avoid this issue I think we need to run individual CW simulations for each wavelength as explained next.

(3) I have attached a simulation file and a script that runs a loop where we create a CW time signal for the signal source: cw_source_sweep.lsf (744 Bytes) test_modFG_CWsource -sweep.fsp (2.4 MB). In the source settings you can see that the signal is indeed CW after some initial raise time:

The simulations must run for long enough to reach a steady state where we can get the correct transmission. If you run the attached script you will generate a plot that is essentially the same we found from the broadband simulation for the signal alone:

(4) There is an additional problem with the normalization. When the signal is acting alone, we can use the sourcepower associated with it to normalize the results. This is what we did by using the regular transmission result. The problem happens when you have the pump acting as well because then you have two sources and the regular transmission calculation uses the incoherent sum of the sourcepower for both sources. Since the pump injects a significant amount of power, it will change the transmission values dramatically . Therefore, I think the value of 0.5 that you got in your simulation with the pump is not correct because it was calculated with this normalization. Probably, what you want is to normalize according to the power injected by the signal.

(5) Assuming no power from the pump gets coupled to the MZI, we could normalize to the sourcepower of the signal by multiplying the transmission by the ratio between the combined sourcepower and the sourcepower of the signal. This factor would be sourcepower(f)/sourcepower(f, 2, “signal”), where f is the frequency; see the sourcepower documentation for more details. However, in some of my trials I noticed that a significant amount of power is being coupled from pump into the MZI; you can check this by running a simulation with only the pump enabled. This coupled power leads to results larger than 1 after the normalization above.

(6) I am not sure about what would be a good method to account for the pump power coupled into the MZI. Maybe you can run two simulations: one with both the signal and pump enabled and one with only the pump enabled, saving the fields at the monitor where we calculate the transmission; then, you could subtract the fields of the pump simulation from those of the signal+pump simulation. These fields would be an estimate of the fields due to the signal alone and could be used for the transmission calculation. I say an estimate because this is a nonlinear simulation so we cannot simply use the superposition. I don’t know how the authors of the paper dealt with this normalization issue.

(7) You might not have to worry about the normalization if you just want to find the frequency for which you get zero transmission at the output when the pump is on (as shown in Fig. 4). However, I am surprised they can achieve this state without any power coupled from the pump into the MZI.

As you can see, the nonlinear simulation of a single MZI is actually quite challenging. My suggestion would be to take a step back to the single MZI situation and make sure the results of the simulation reflect the behavior described in the reference you provided.


Dear @fgomez

Thanks for the script. As you said, the dip is still the same, but what puzzles me is that on the state of Pump-Off, it’s a linear simulation! Correct me if I’m wrong; but the nonlinearity in the simulation is due to the effect of pump (high electric field from outside) on NLA, and that’s when we should consider simulation NL, Right?! Otherwise, in the state of source, permittivity plays a significant role, as it should, and because source is not powerful enough, the contribution from the chi3 term is very small, which makes simulation mostly linear.
But the problem is that, With that significant amount of power in pump, there should be some changes in NLA because of Kerr Effect! I think the location of Pump is incorrect! Otherwise, outside electric field must polarize NLA.
I don’t need to normalize the output. I just wanted to find the shift in the dip after enabling pump. Based on what you said, how do you think I can have the pump to effect NLA? Is it maybe because it’s not powerful enough, close enough or long enough to effect the arm? Because at any of these states, there must be at least a small change in the output!
The script is only for signal state, so I have to test pump state without the script, which based on normalization that you said, still the results wouldn’t be reliable! Could you edit it with the state of both sources enabled?!(sry, I’m not good with codes)
I’ll try to work on the Pump side of the simulation. If you have time, I would really appreciate it if you take a look at it again.

PS: did you try pump and source together with the same wavelengths ?! as far as I know, they must have the same input wavelengths!



Hi @MBAzari,

These are my answers to your latest questions:

That’s right. When the pump is off, the intensity of the signal does not seem strong enough to change the permittivity of the Kerr material via the chi3 term. The purpose of the pump is to increase the intensity of the local field at the Kerr material so that the permittivity changes due to the chi3 term.

I am not sure if the position of the pump waveguide is wrong. The intensity of the pump is quite high and there is power coupled from the pump waveguide to the MZI, which will probably result in a contribution from the chi3 term.

What I am not sure about is how to deal with the fields from the pump that will couple to the arm of the MZI and travel along it. When the signal is off and only the pump is on, you will get some fields traveling through the arm of the MZI and eventually reaching the output of the MZI. How do we distinguish these fields from those of the signal when both signal and pump are acting together? In a regular MZI we don’t have this problem because whatever we use to modify the behavior of the signal in one of the arms does not add any fields to it. For example, if we use an applied voltage to modify the refractive index in one of the arms, this does not add any fields to the MZI. In the nonlinear MZI, on the other hand, we are adding fields coupled from the pump to the MZI. Maybe the pump and signal are at different frequencies, but that is not clear from the information in the paper.

To set the pump as a CW signal as well just uncomment line 26:

I tried having both enabled but the results do not make much sense, there is no clear dip anymore:

I think the problem is that we do not know how to deal with the issue of the light coupled from the pump to the MZI or there is something from the paper that we misunderstood.

Hope this helps!


@fgomez @kchow
with the state of only pump on, close to zero power is transmitted to the MZ as in the image. so it could be neglected!

is it possible to apply voltage in MIM structures?!I have simulated an structure that was Directional coupplerb but I haven’t tried electrodes with plasmonic structures!

can we try it with different frequency?
in the paper it’s mentioned that the signal wavelength is set to be 795nm. that means without pump, the output should be off, because sgnal dips at 795nm. but in the results of the papaer, without pump, output is on !! how ?!

how can I normalize with only the source power? is there an script for it!
If I don’t need normalization, turning normalization off in the Setting Menu, will do it?!


Hi @MBAzari,

These are my answers to your latest questions:

Even a value of transmission of ~0.006 is quite large because this is a fraction of the power injected by the pump (which injects about 100 times more power than the signal because the amplitude is 10 times larger). Also I got larger values for the transmission for the wavelength range 0.7 to 0.9um, as shown below (transmission normalized to sourcepower from the pump):

I don’t think an applied voltage would work here. I was referring to more traditional examples like this one of a silicon Mach-Zender modulator.

I also did not understand this in the paper. Figure 4 there must have been generated for a different wavelength, probably near 830nm, where we see a dip (when pump is on) according to Figure 3.

The transmission calculation is not affected by the normalization state as explained here. The reason is that the normalization is done using sourcepower. If you want to remove the normalization multiply the transmission by sourcepower(f) where f is the array of frequencies of interest. Then you can renormalize the results as needed (for example, using the sourcepower for a particular source as I explained before). However, even if we ignore the normalization, we should be able to see a dip in the transmission at a certain frequency when the pump is on. I am not sure if there is a problem with our interpretation of the paper.