Simulation of graphene photodetector




I am trying to mimic the results in this paper: (

The structure consists of gold/pd antennas over a graphene layer.

I want to reproduce the graphs in Figure 1 (a) , Figure 3(a) and the absorption spectra in figure from the supplementary material (S3).

I tried to use volumetric permittivity method for modeling graphene layer and used palik data in the material database for Au, Pd, SiO2 and Si. The paper doesnot mention the thickness they have used for their FDTD simulations, so I tried using different thicknesses for the graphene layer like 1 nm, 0.5 nm and 10 nm. But none of these would give me similar results to those in the paper.

This is the E field intensity profile I got when I used 10 nm thick graphene for simulation.

Could you please check my simulation file and help me with these simulations? My simulation file: Graphene10.fsp (331.2 KB)

I appreciate your kind support.

Thanking you in anticipation,

simulation of a graphene based transistors
How to simulate a nonamer?

Hi Vivek,

Thanks for waiting. @aalam and I checked your simulation file and we have some comments and suggestions:

  • In your original simulation file it seems like the auto shutoff level does not decrease enough. For most simulations you need to make sure it goes down to ~1e-5 (the standard value of the auto shutoff min) or less in order to ensure that enough energy has left the simulation window; otherwise, you frequency-domain results will be affected by artifacts due to the early termination of the simulation.

  • It is also important to be aware that simulations using the bulk permittivity for graphene can be quite challenging because you need to check that there are enough mesh points inside graphene; also you need to make sure that the results converge as you reduce the thickness of the graphene layer. In your simulation, there are additional challenges due to the thin layers of Au, Pd and SiO2, which also require some care regarding the number of mesh points inside. Therefore, your simulation requires some careful convergence testing to determine the appropriate mesh for all these thin layers. Not only the mesh in the vertical direction (z direction in the paper) is important, you also need to make sure the mesh is fine enough in the plane of the structure (XY plane in the paper). Results such as the field profile in Fig. 1a and the resonance spectrum in Fig. 3a will depend a lot on the mesh, so if it is too coarse you might end up with different values of the field intensity and the resonance frequency.

  • In order to simplify the simulation, I suggest using the 2D surface conductivity mode for graphene. The advantage of this model is that it speeds up the simulation significantly as you don’t need to model the thin layer of graphene with a fine mesh. This also removes the requirement of finding an appropriate mesh for the graphene layer and selecting an appropriate thickness, so you can focus on the mesh for the thin metal and SiO2 layers. In the attached file Graphene10_2dcond.fsp (285.0 KB) you can see how this approach works.

  • In your original file the distance between the structure and the PML inside the Si substrate was less than half the maximum wavelength. This can sometimes affect the PML absorption due to evanescent fields that reach the boundary. It is a good practice to leave at least half the maximum wavelength as in the attached file. Also we use “steep angle” settings for the PML, which are recommended for the kind of setup you have, as explained in this posting.

  • We also improved the material fit as you can see in the Material explorer.

  • The results from the attached simulation file are closer to those in the paper but some work is still needed to get closer agreement. You can see that the mesh in the plane of the structure is probably still coarse compared to the one used in the paper. This explains part of the difference that still remains with respect to the paper. We think that probably the mesh has the most significant effect in the discrepancy, but material properties (not using exactly the same material model) could be responsible as well.


Dear Federico and Aalam,

Thank you for your kind response. Your response was quite helpful for me. But I have a few more queries:

  1. How can I obtain the graph on the right hand side in your response (figure 3(a) ) in the paper? Does it need some scripting? If so, could you please help me with the script file as well too?

  2. How would I be able to obtain the absorption spectra for the graphene layer if I model the graphene with a 2D rectangle? Am I supposed to use a very thin transmission box?

Thanking you in anticipation.

Best Regards,


Hi Vivek,

You are welcome, these are my answers to your new questions:

Sorry I did not explain this point more clearly. You can use the same monitor as for the image on the left. The power monitor “E_graphene_1” records the fields at a plane 2 nm above graphene. To get the field intensity at the center of the gap (x= 0, y = 2nm, z = 0 in the simulation) as a function of wavelength you can simply modify the plot settings in the Visualizer as shown below:

This is a very good question. Since you are using a truly 2D object you should not use the typical techniques such as the transmission box or calculating the difference between transmission at the top and bottom of the layer. However, you can still use an approach based on the surface conductivity and the fields in the plane of graphene. Assuming graphene is on the XY plane, the power absorbed by it would be:

You can get a good idea of how this approach works with these example files by @aalam: graphene_absorption.fsp (343.0 KB) and graphene_abs_test.lsf (889 Bytes). The script calculates the power absorbed by graphene using the surface conductivity (from the getfdtdsurfaceconductivity script command) and the fields recorded by a power monitor at the position of graphene. The plot generated by the script compares the power absorbed by graphene only with the power absorbed in the region between a monitor above and below graphene; since graphene is on top of a silicon layer, this layer also contributes to the absorption.

Therefore, if you only want the power absorbed by graphene, you should use the method based on the surface conductivity.

2d material reflection

[quote=“vshrestha, post:3, topic:1624”]
Dear Federico and Aalam,

I highly appreciate your kind response. I tried to implement the suggested method to calculate absorption in the graphene layer in the structure in the paper we discussed earlier to see if the results match with that of the absorption spectra in figure from the supplementary material (S3). My calculated spectra looks as follows whose value is too low compared to that in the paper.

Here is the simulation file and script I used for the calculation: Graphene10_2dcond_absorption.fsp (292.7 KB)
Absorption.lsf (699 Bytes)

Also, could you please suggest me how can we decide the value for scattering rate (ev)?

Thank you.


Hi Vivek,

The maximum absorption you are getting is around 1%, while in the paper they claim an absorption of ~10%. My suggestion would be to check the following:

(1) The effect of refining the mesh step dx, dy and dz for the mesh override region covering the antenna. It is possible that the field in graphene is very sensitive to the mesh at the resonance.

(2) The effect of changing the chemical potential and scattering rate. We have used 0.2eV for the chemical potential but I am not sure what value was actually used in the paper. From Fig. 1d. you can see that the chemical potential at zero gate voltage is different from zero but I was not able to identify the value they used.

(3) You could also run a simulation without the antennas to check if you can get the result in Fig S3. I would try this first because the simulation is much simpler and it should run much faster, so this would provide you a way to check the graphene parameters.

Regarding the choice of the scattering rate, I think you can get it from the mobility using the approach discussed in this posting:


Dear Federico,

I appreciate your kind response. Thank you very much.


Dear Federico,

I am sorry to bother you again but I am still trying to calculate the absorption in the graphene layer without the antennas so as to fix parameters for the graphene layer. I used mesh refinement for the graphene wih mesh overlap of 2.5nm X 2.5 nm along the surface of graphene but still the calculated absorption is too low with a maximum 0.2%. The expected absorption value should be 2.3% as reported in a lot of literature and is also seen from the absorption spectra in figure from the supplementary material (S3) of the paper under discussion. The calculated absorption spectra without the antennas looked like:

My simulation file and script file is:
scat_0.0018125chempot_0.15.fsp (296.8 KB)
Absorption.lsf (699 Bytes)

I would appreciate your kind suggestions to help me manage the graphene parameters. I checked with different scattering rates as well but the results still do not match.

Thank you.


Hi Vivek,

No problem, I am happy to help. These results are a bit puzzling but I have some tests in mind that I will try. I will get back to you with some suggestions.


Hi Vivek,

I did some checks of the absorbed power using an analytical approach. The idea is that since the structure without antennas is simply a multilayer stack we can use the stackrt tool to calculate the analytical reflection and transmission as done in this example:

For simplicity, I reduced the last simulation file you shared to a 2D simulation: 2Dtest.fsp (294.9 KB). I calculated the absorption of the stack graphene-SiO2-Si in three different ways:

  1. Using the conductivity method described previously
  2. Calculating the difference in transmission between monitors 1 nm above and 1 nm below graphene.
  3. Using stackrt (analytical).

These three results agree reasonably well. The difference between the two numerical methods and the analytical one can be further reduced by refining the mesh. For comparison, I included a calculation of the analytical absorption of graphene alone. All these results can be obtained by running the script Absorption_2D.lsf (2.0 KB).

The results for two chemical potentials, 0.15eV and 0eV, are shown below:

Note that the absorption ~0.2% for chemical potential 0.15eV is consistent with your simulation and with the analytical absorption. The absorption of graphene alone is larger, around 1%. For chemical potential 0eV the absorption is larger, ~2.2% for free standing graphene and ~0.45% with the rest of the structure. These results suggest that the absorption of ~2.3% without antennas quoted in the paper refers to the absorption of free-standing graphene for zero chemical potential.


Dear Federico,

I really appreciate your kind support in trying the different tests with graphene absorption.

I have two issues to ask about:

Issue 1:
I checked into the files you sent me and then just used a free standing graphene to check if the analytical curve as calculated using stacrt matches with the numerical calculation. I could see a huge discrepancy between the numerical and analytical curve for the chemical potential of 0 eV even if I refined the mesh to 1 nm.

The simulation file is: 2Dtest_Grapheneonly.fsp (297.0 KB)

My results comparing the numerical and analytical calculation of graphene absorption for chemical potential of 0 ev is as follows:

Would you please kindly suggest me the reason for such discrepancy?

Issue 2:
For the previous problem of enhancement of electrical field using antennas, I tried to check into the effect of grid size for the values of enhancement of electic field at the center of the nanogap of the antennas. I have disabled the graphene layer just for convinience. The grid size on the plane of SiO2 was reduced by a factor of 2 in lateral direction starting from 16×16 nm to 1×1 nm, while the grid size in the direction normal to the plane of SiO2 was reduced from 5 nm to 1 nm. The results were consistent for all the cases except when the grid size was 1×1×1 nm, when the results abruptly changed as shown in the figure below. Would you please suggest me the reason for such abrupt change and not being able to achieve consistent results for different grid sizes.

Attached is the simulation file for the antennas:
Grid_dx_1nm_dy_1nm_dz_1nm.fsp (296.7 KB)

Your kind support should be highly appreciated. I am very grateful to you.

Thank you.

Best Regards,


Hi Vivek,

Sorry for the long wait. Here are some comments about the two issues you pointed out:

Although the numerical results fluctuate around the correct analytical value, the maximum discrepancy you see is about ~25%, which is indeed quite substantial. The issue here is that due to the mesh override regions used for the nanoantenna, the mesh is very fine in a small region of the simulation. This can sometimes reduce the PML absorption so it is necessary to increase the number of PML layers. If you do this in your simulation, going from 12 to 24 layers, the maximum error reduces to ~3% as you can see below:

I also noted something weird regarding the size and position of the 2D rectangle in the file you attached. I think this is probably my fault since I noticed the same problem in the file 2Dtest.fsp I attached before. I modified this file in the earlier post and also corrected your file (increasing the number of PML layers as well): 2Dtest_Grapheneonly_modified.fsp (297.2 KB). Sorry for the confusion.

I suspect that the reason for the sudden jump from (dx, dy, dz) = (2, 2, 2)nm to (dx, dy, dz) = (1, 1, 1)nm is due to the PML absorption, as in the previous issue. The refinement of the grid in the antenna region can lead to reduced PML absorption. I would suggest increasing the number of PML layers to check if there is any improvement in the convergence testing. For instance, you could rerun the simulations with 24 PML layers.

Hope this helps!


Thank you very much Federico. You’ve been really kind and supportive.


I am interested in a graphene photodetector. I have some questions about simulating a graphene photodetector in the discussed paper.
When I saw one of the discussion about graphene, i.e. “electrical modeling of graphene in DEVICE” I was thinking that finally I can simulate graphene FET in lumerical. However that wasn’t work for me.
Actually I want to simulate and get the results in Fig.3 . I’ve tried so many ways to simulate a graphene FET in a DEVICE, but as you know it isn’t very easy due to 2D nature of graphene. I simulated the structure and extracted the generation rate in grapheme. But I don’t know how to insert it in a DEVICE as a true generation rate for graphene.
Here is my main Q:
Is there any way to simulate graphene FET in DEVICE in order to extract transistor characteristics, e.g. I-V plot, Rds?