simulation region in FDTD and DEVICE for lateral p-i-n diode



I am new to Lumerical and trying to simulate a lateral p-i-n diode for solar cell application.

I cannot get a proper I-V curve. I need to make sure first about simulation regions in FDTD and DEVICE. Can you please look at the screen shots and see if it is correct?


Hi. Looking at the screenshots, the simulation setup seems to be fine. However, it is hard to tell if everything is okay just by looking at the screenshots. can you share the project files? If you save them in layout mode then the sizes will be smaller. For the DEVICE file, if it is still too large, remove the optical generation object and just attach the .mat file saved by FDTD.


Hi aalam
thanks a lot for reply
files are attached. including script file for Jsc, Voc and eff calculations.

lateral_pindiode.fsp (292.7 KB)
lateral_pindiode.lsf (1.1 KB)

lateral_pindiode.ldev (1.8 MB)
lateralpin_AR.mat (576.9 KB)


Hi. Thanks for sharing the files. The FDTD setup looked fine to me. You may want to use symmetric/anti-symmetric boundary conditions to make the simulation even faster. However this is optional since the simulation is already fast enough.

In the DEVICE file, I noticed a problem with the doping which was responsible for the wrong I-V. In your original setup, the n+ and p+ doping objects were being introduced from the side. Since you are using diffusion doping objects and the doping exponentially falls at a smaller value at the surface of these objects, the doping at the metal-semiconductor interface was very small (see screenshot below).

I have modified the doping objects as shown below to make the doping large at the top surface instead. If you run the simulation now (with and without the optical generation), you will see that the I-V looks like a proper diode I-V. Here is the modified file: lateral_pindiode_MOD.ldev (1.8 MB). Please note that I have modified the bias range as well.

Next I looked at the script file. While calculating the surface area, the length in z direction should come from the “norm length” property of the simulation region given that you are doing a 2D simulation. If you were doing a 3D simulation then Lz would come from the z span. I have corrected this at line 13. Also, on line 14 where current density is calculated, the multiplication factor was wrong. I have corrected this and have included the units of the different variables on the different script lines (4,12,13,14) to make this easily understandable. The script now works fine as well (see plots below). Here is the modified script file: lateral_pindiode_MOD.lsf (1.2 KB).


Hi Aalam,

thanks for your help.

I runned modified files without any change, but still there is problem in my I-V curve,and I couldnt generate the same reult as you. (I tried the same bias range 0~1, and also from -0.1~1)

As you can see from attached screen shots, the open circuit voltage is negative. also, I-V curves of dark and light was the same.


My apologies. I forgot to mention that I had removed the optical generation rate from the file to make its size small enough. Please put in the optical generation rate in and it should work.



for above results, I had added the generation rate, but I dont know why It didnt work for me.


I just downloaded the file from my post and ran the simulation again. It ran fine for me. One thing to check would be the location of the generation rate. By default when you load the generation rate, it is not centered on top of the semiconductor region. You will need to adjust the x,y,z values if the import generation object to make sure it is properly placed over the semiconductor. if the generation rate is not on top of the semiconductor then the photocurrent will be zero.


I did but still it doesnt work for me. and there is no photo current.

But when I import Bulk generation I can see photogeneration and similar curves that you got. (Value of Jsc and Voc are too big)


Correct results with bulk generation rate, I cannot figure out what is wrong with my generation file.
when I import generation rate file it has a red sign on it as figure attached, do you know what is that, please?

appreciate your help


The red symbol denotes that the generation rate object contains data. Can you share a screenshot of the parameters in the property editor window of the import generation object? Is the scaling factor set to zero somehow?



From your screenshot, it looks like this is the case! The scaling factor is set to zero so no generation rate is getting applied. Just set this value to 1 and the simulation should work!


Hi Aalaam,

I am very thankful to you. It works very well know.

Thanks for your great help