2d material reflection


I’m trying to do a simple normal incidence reflection/transmission spectrum of a thin layer of MoS2 on top of a glass substrate.

I imported the data for the dielectric function of MoS2 from another paper and made it a sampled data material. Now I am modelling it as layer of 0.615 nm on top of a glass substrate (that’s the approximate thickness of a monolayer of MoS2.) Actually the results I am getting for the reflection are pretty good in the sense that they match this paper very closely, which is encouraging since I took the values for dielectric constant of MoS2 from it.

In figure 1© in the paper you can see there is a slight peak in the reflectance at a little less than 2 eV, and my result shows a similar peak of ~.04 at ~630 nm. Then it goes to a larger peak slightly above .08 at ~400 nm as the paper does around 3 eV.

The problem in my result is that lumerical does not seem to resolve the splitting between the A&B peak. I’ve tried increasing the mesh around the interface to .1 nm.

I also tried making my material thicker (like up to 70 nm) and when I increase thickness I do start to get some features but I’m not sure if they’re Fabry-Perot resonances or some other effects. I also checked the material explorer fit for MoS2 and it seems to be good.

Thanks in advance for any help.

I also attached the text file for the MoS2 data and my FDTD file.

mos2.txt (2.8 KB)
mos2reflectance_2d.fsp (335.8 KB)

Simulation of graphene photodetector
How to customize a non-typical 2D material
如何在Lumerical FDTD中自定义非典型二维材料
Plasmonic enhancement of SHG
Graphene + MoS2 Heterostructure Modelling

Hi Nicolas,

I modified your simulation file and after some changes I was able to get a reflectance spectrum where all the peaks are resolved:

This plot compares the numerical results from FDTD with the analytical results from a transfer matrix calculation using stackrt. You can see that both results are very close to each other and to those in the paper.You can get this plot with the attached files mos2reflectance_2d_modied.fsp (257.2 KB) and comparison_reflectance.lsf (498 Bytes).

Some relevant changes I made:

  1. I increased the distance from the PML to the structure. It is always a good idea to make this distance at least half the maximum wavelength in order to avoid evanescent fields at the PML.
  2. It is not necessary to have a uniform mesh for the entire simulation region. This is not practical, especially in your case where you have a very thin layer of material. It is more efficient to use the auto nonuniform mesh setting which calculates the mesh according to a certain number of points per wavelength (see the Mesh setting tab here). To make sure that the thin layer of MoS2 is meshed correctly you can use a mesh override with very fine step.
  3. By changing the mesh accuracy you can see how the results get closer to the analytical ones. In your case, a mesh accuracy of 4 already gives quite good agreement.
  4. In some cases you also have to play with the PML settings. Here I used “steep angle” settings (you can read more about the different PML settings in this posting). By increasing the number of layers from 12 (the default) to 24 I was able to get better agreement with the analytical results.

Hope this helps!


Thank you so much.

I am still new to Lumerical and learning and your online documentation is quite good, but it’s always helpful to have somebody to point in the right direction.


Just a quick follow up as I was working on this I noticed it seems to be important to increase the auto-shutoff to at least 1e-08, otherwise it keeps giving the same result even with the other changes you stated implemented.


That’s a very good point that I forgot to mention. The default auto-shutoff 1e-5 works for most simulations but in some cases it is necessary to check the effect of changing it. In your example, if you use the default auto-shutoff you don’t get the splitting of the peak at low frequency:

You can see the reason why this happens when you look at the E field from the time monitor in your simulation. The plot below shows the results for auto-shutoff 1e-5 and 1e-8, zooming in the time range after 10fs.

Note that the larger auto-shutoff causes an early termination of the simulation and we miss the small resonance that kicks in at ~25fs.

It is always a good idea to include a few time monitors in your simulation and check their results to identify potential issues like this one.


excuse me!
I want to know what is the difference between the monitor reflectance and the reflectance_1 in this program?
why does the monitor (reflance) represent the reflection of the MoS2, not the MoS2 and the glass?


The numbers here do represent the reflectance of MoS2 on a glass substrate, as do the ones in the APS paper, as they did their experiments on a glass substrate.


One additional note:
For calculating the reflection here we used the monitor “Reflectance” behind the source to measure the reflected power directly. You can also use a monitor in front (such as “Reflectance_1”). The various methods for measuring reflection are explained in this link.


Since the 2016b release, FDTD Solutions and MODE Solutions now support importing sampled data (conductivity) for 2D material. This will allow users to model true 2D objects efficiently. More information can be found in the links below.



hi,i aslo tried to do a simple normal absorption of a thin layer of MoS2 on top of a glass substrate.i have learnt the abovementioned example,http://journals.aps.org/prb/pdf/10.1103/PhysRevB.90.205422,Fig.3(e) in this paper.how to write the script about absorption.


I wasn’t able to access the article that you referenced but if the material above and below the layer are not absorbing, then you can assume any difference in the transmitted power between a monitor above and below the layer is due to absorption of the layer, and you can use the following:

absorption = abs( transmission("above") - transmission("below") );

Where “above” and “below” are the names of the monitors above and below the layer.

This method is used to calculate absorption in the solar cell example here (discussed under the simualtion setup section):


hello,if the material above or below the MoS2 layer is absorbing, how can I acess the absorptance of this thin layer of MoS2?


Dear @wweitang,

Sorry for the wait! If you are modeling the MoS2 layer with some thickness (bulk permittivity), then you can follow @nlui’s approach placing the monitors right at the position where the layer starts and ends.

If you use a 2D rectangle instead (surface conductivity) you can calculate the absorption from the electric fields in the 2D rectangle as discussed in this post:

Hope this helps!