Electrostatic Potential Convergence Problem



I’m working on a simulation of silicon solar cell with ITO as front contact. Having read the related threads and some articles, I modeled the ITO as a conductor material with work function of 4.7 eV and resistivity of 5 × 10−4 Ω cm. I apply 0 V on contacts.

With this setting , I get the error

The program terminated due to an error: Initialization failed to converge electrostatic potential update.
Error: there was an unknown parallel error. The error code is 9002, the process number is 0

I know that this problem already appeared several times in kx. However, I think that it is setup specific and I couldn’t solve it by simply changing refinement settings.

So, could you help me on this matter please ?


2D_Pyramid - Copie.ldev (6.8 MB)


Hi @mehmet-efe.gumus, You are correct, the error message “Initialization failed to converge electrostatic potential update” can happen due to different reasons and is usually specific to the simulation type and setup. The problem in your simulation setup is that the doping along the metal surfaces are not uniform. If you look at the screenshot below you can see that the doping on the ITO surface has a high value only at the top corners but has a value equal to the background doping below.

Also for the base contact the doping is getting smaller on the two sides (this one is due to the nature of the diffusion doping object which you can find here: What is the meaning of the different parameters of the diffusion doping object?). For the doping on the ITO surface if this variation in doping is not intentional and you intend to dope the entire surface then consider using an import doping object and define the doping using script. You can find some similar examples in these KX posts:

How to add a constant radial doping profile in DEVICE

Radial Doping of Star Structure

请教device 中mos结构的模拟

2D_Pyramid - Copie.ldev (6.9 MB)


I defined a constant doping region which covers the whole pyramid. However, the error was still there. Finally, I solved the convergence problem by slightly increasing the dimensions of pyramid’s apex. Maybe the “x span top” and “y span top” values were too small for meshing or the solver.

Thanks for help !

In fact, I realized that the same error occurs as soon as I apply a forward bias voltage. To me, the doping profile seems okay around the contact. Any ideas ?


Hi @mehmet-efe.gumus, I just wanted to let you know that I am looking at your file. I haven’t been able to figure out a way to fix this convergence issue yet but I will update you as soon as I fix it. Thanks for waiting.


Hi @aalam , thanks for letting me know. I appreciate your help. I had the same convergence problem with a planar Si-ITO contact. So, now I’m trying to model ITO as a heavily doped large bandgap semiconductor as mentioned [here] (Electrical simulation of Metal-oxide-ITO-semiconductor structure) and here. By placing an electrode on top, I will try to get an idea on its lateral resistance.


Hi @mehmet-efe.gumus, I have figured out where the problem in your simulation was coming from. The main problem was coming from the fact that when you defined a surface recombination velocity at the Si-ITO interface, you applied it to majority carriers as well. This is not supported by the CHARGE solver as surface recombination at metal-semiconductor interfaces is only applied to minority carriers (Material interface). Disabling the “apply to majority carrier” option should solve the convergence problem.

A few minor issues that i noticed was:

  1. You created your ITO contact using two structures ITO and ITO_frame and was applying two different electrical contacts to the two of them. This can cause an issue with the solver as you can not have two different electrical contacts in contact with each other. The solution is to place the two structures inside a structure group and then apply a single electrical contact boundary condition to the structure group.

  2. For your bottom diffusion n doping the junction width was so large that the doping was dropping to a smaller value at the left most and right most corners. I reduced the junction width to 0.05 um. Alternatively you can make the x span of the doping object large to make sure that the doping stays constant at the entire metal surface.

Here is the updated file. Hope this will solve your problem: 2D_Pyramid - Copie MOD.ldev (6.9 MB)


Great ! Thank you so much for your help.