Device simulation of solar cell with conductive oxide


I am trying to simulate EQE in simple planar geometry consisting of Al-InO-Si-Al layers. I would like to model the change in EQE with different recombination values between InO/Si interface with final goal of fitting the EQE spectra with experiment.

I am having trouble with simulation. It does not converge when I set InO layer as a semiconductor(we know doping 5e19, mobility 50 and workfunction of 5.5eV from experiment). When I set InO as a metal then the recombination does not seem to have any effect on the current.

I have uploaded the device file ( Could you please let me know where the issue is.



It has been 6 days now, Any help ?


Please reply soon.


Hi @asolanki,

Our apologies for the long wait!! We’ve been pretty busy!

I had a chance to look at your file, I noted a couple of issues:

  • InO semi: you enabled the “band to band tunneling” recombination and selected the Hurkx model, however, all the coefficient are set to 0, this causes the simulation to fail. You need to set these coefficients or to disable this recombination type.
  • Generation rate: I’m not too sure where the generation rate comes from, its localization doesn’t really make sense (it covers a small part of the Si region). You’d probably need to run a FDTD simulation to calculate it using the same structure as in the DEVICE file.

When I disable the optical generation rate import, and the band to band tunneling recombination, the simulation converges.

Finally, in such simulation, you cannot set InO as a conductor, as conductors are treated as perfect electrical conductors and the simulation will not consider any charge movement inside such materials.

I hope this will help! :slight_smile:


Hi Gbaethge,

Thanks for the reply.

On the simulation file:

  1. The Band to band tunneling was only turned on to check if it helps with the convergence. It can remain turned off, the issue is the simulation is not converging with generation rate.
  2. The Generation rate is calculated from lumerical with similar stack as Device. In my experimental sample I have generation taking a spot away from metal and thus to test I have a thin generation region. Could you please explain how this would cause issue ?

To simplify the structure, I have attached a more simple DEVICE & Lumerical simulation file with just
metal/InO/si/Metal stack

This also fails to converge. My final goal is to see the EQE spectrum with different surface recombination velocities between InO/Si interface.

Please take a look and let me know if you can make it work.



Hi @asolanki,

Thanks for the clarification. Regarding the generation rate, it shouldn’t cause any issue, but its localization was a bit confusing.
I think I got why the simulation is not converging with the generation rate on. It seems to be related to the InO: the generation rate calculated by FDTD Solutions includes the InO layer. If you restrict the generation rate to apply only on silicon, the simulation is converging. To do so, you can set the object in DEVICE to be apply to the Si object only, by setting “Applicable Domains”:

Since the InO layer is just an electrode, you can also reduce the size of the analysis group in FDTD so it covers the Si only.

Additionally, you may need to change the solver type to Newton (in the advanced properties of CHARGE).


Thanks for the reply!

Actually, in my earlier tests, I had the analysis group which matched the Si region. That was too giving me a convergence error. Interestingly, when had the analysis group to start around 20nm away from InO-Si interface in Device the simulation would converge. But when I ran a wavelength sweep the simulation diverged at some of the wavelengths. So I believe the issue is due to the band bending at the Si-InO interface where Device is having some trouble.

Nevertheless, I changed the applicable domain to Si and the solver to Newton but the above simulation still diverges for me for different wavelengths (ex index 30). Can you see if your simulation is converging for different wavelength ? Thirdly the current value is always 0 for some wavelengths when it converges, which i dont understand.


Even though there is sharp band bending at Si-InO interface, the device does not show a diode like response when swept from -1 to 1V


Hi @asolanki,

Sorry for the delay!

My bad, I didn’t realize you were using the results from FDTD as different wavelength. This will be a problem, as this corresponds to the number of absorbed photons per unit volume:
$$g = \frac{P_{abs}}{\hbar\omega}$$
The generation rate used in the DEVICE CHARGE simulation is the integration of \(g\) over the simulation spectrum.

I haven’t had the chance to check this yet, I’ll get back to you as quickly as possible!


Thanks for the reply!

The G i am exporting is not integrated_G but has the spectral generation rate over the simulation range. So I can import multiple wavelengths to calculate EQE later. The simulation keeps crashing for some wavelength when I do sweep.

I have spent more than a month trying to figure this out. I look forward to hearing the solution as soon as possible.

Thank you.


Hi @asolanki,

I had a look at the data, there’s a large variation of amplitude of G vs wavelength (from \(2.0 \cdot 10^{25}\) to \(3.6 \cdot 10^{23}\). This could explain why some wavelengths cause a divergence in the calculation.
The generation rate (G integrated over the wavelength has a max value of \(2.2 \cdot 10^{24}\) so an order of magnitude lower.

I think the problem comes from the material (InO) definition: In your simulation, there is no mobility defined for electrons or holes (\(\mu_n \) and \(\mu_p\) are set to 0). This prevents charges from moving in this material.


I dont understand why a wavelength with high G would lead a divergence. Is there a limitation in Device on the maximum value of G ? This absorption is calculated from very simple planar Si structure, this is very much expected as spatial G it is proportional to wavelength dependent absorption depth in Si. I dont see why this should be an issue.

I have also tried the simulation with mobilities of ~40 we measure and it still does not give any diode behavior and still diverges with wavelength sweep. I also tried setting the InO parameters similar in Device to here, but it still diverges.

Could you please share with me your working simulation file, so that I can try to understand the differences.


Hi @asolanki,

I didn’t express myself clearly, I’m sorry about that. I don’t think there is a limitation but I was wondering if the difference could make it more difficult for the solver to converge.
Anyway, in this specific case, it seems the divergence is somehow linked to the trap-assisted recombination for the InO material.
I managed to get the simulation converging at different frequencies (I didn’t test all of them), by changing a couple of settings in the CHARGE solver (in the advanced tab):

  • I switched to the newton solver (you may need to enable the initialization and play with the init step size).
  • I set “gradient mixing” to fast

The second setting is usually used when high field models are enabled.

Regarding the diode behavior, I did some test disabling the generation rate import, but I could only some current at the top electroc for bias over 1V:
I attached the file:
solar_InO_test_remade check diode.ldev (6.4 MB)

The settings are similar to the ones I used to get the simulation converge except “gradient mixing” is disabled.