Error: Initialization failed to converge electrostatic potential update



I have an error in device. This error is " The program terminated due to an error: Initialization failed to converge electrostatic potential update". Can you help me to solve it, please?




Error : For information on how your program can cause an assertion failure

Hi. This error message indicates that the solver failed to calculate an initial (approximate) solution for the first bias point. If your starting point in the simulation is a non-zero voltage at some contact then a solution would be to start the simulation at zero voltage and then use a voltage sweep to go towards the non-zero value. This initialization error could be due to issues with the simulation set up as well. However that would depend on your particular setup and if using a zero bias at the beginning does not help then I would be happy to take a look at your file.




Thanks for your reply. This error solved when i change the value of max refine steps. But this error " PLC Build: Mismatch between number of faces when searching for duplicates" is still appears.

This is the file




Hi. This error message indicates that the solver is having trouble creating the 3D geometry. Before I take a look at you file, please check out this KX post that talks about how you can resolve issues with 3D geometry building in DEVICE: Geometry building issue in 3D simulation for DEVICE.



I made the two solutions but the error is still appear.



Hi Yara, I changed a couple of things that made the meshing work. First of all, having two concentric circle is always hard on the solver (in terms of geometry building). Also, since both your circles are the same material there is no point in having the smaller circle. I have therefore disabled it. Secondly, since you have an oxide covering all of the simulation region, you do not need an additional layer of SiO2 on top of the GaAs. So I disabled that as well. Finally, the edges of the simulation region was touching the surface of the circle on the sides since it had exactly the same width as the circle. This would create very narrow wedges in the oxide surrounding the circle around those points. I have made the simulation region slightly wider. The solver was then able to mesh the structure without any issue. Please take a look at the screenshot below to see the three changes.



Thanks for your reply. But I made these things because this the structure in the paper.
I will sent to you the paper to take a look in it.
I want to ask, If i make these changes, the result will be the same as the result in paper?



Hi. The shell in the paper is simply showing the doped region on the outer layer of the nanowire. It is still one single material inside the nanowire. Therefore you do not need the second circle.

The oxide layer seems to be only on the surface of the substrate. The “oxide” that you had in your file can be filled with the Air material instead and the “SiO2” object can be activated. If you only make this adjustment then the setup should be identical to the one in the paper.



Thanks for your reply. I will do this and tell you the result.




I made the changes (remove the second cylinder and SiO2 layer), but this error appears after running 14%.

"The program terminated due to an error: The simulated result is incomplete. Please review the log files for details.

Error: there was an unknown parallel error. The error code is 9002, the process number is 0".

How can i solve this error, please.



I am sorry, but you didn’t reply to my problem.


split this topic #12

A post was split to a new topic: Error in running solar cell FOM script



Hi @yara_elsebaai. I am really sorry for the delay. I have taken another look at the file and it does produce an error while running. When I looked at the file again, I noticed that the doping profile needed some modification. Also, I noticed that the oxide layer on top of the GaAs substrate was running through the interface between the substrate and the nanowire. This should not be the case. The oxide should be on top of the uncovered surface of the GaAs substrate. The nanowire should be sitting right on top of the substrate. There should not be an oxide layer between these two. I have made some changes to the file again. Here is the modified file (GaAs3_MOD.ldev (3.7 MB)). Please note that I deleted the optical generation object to make the file size smaller. Below is a list of changes that I made,


  1. I removed the oxide layer and the inner circle as discussed earlier.
  2. I extended the nanowire so that there is no gap between it and the substrate.
  3. I have used a ring top contact instead of the flat plate so that the metal is only in contact with the heavily doped sidewall and not the lightly doped center.
  4. I have adjusted the simulation region to simulate a quarter of the device by using the symmetry. Note that I had to shift the lower-left corner of the simulation region from the center slightly (by 1 nm) to help with the geometry building (the PLC mismatch error came back).
  5. I used the top of the simulation region to define the height of the nanowire (you can edit this value to make sure the height is okay).


  1. The GaAs (substrate) material that you created had a zero mobility value which would force the solver to diverge. I have used the default GaAs material for the substrate instead.


  1. The import doping for the nanowire looked inaccurate as the undoped center was very narrow. In the paper they had a radius of 0.06 micron for the undoped core. I have used the script here (Create a radial diffusion doping profile in DEVICE) to create a new doping profile that will have a 0.06 micron undoped core and have used that instead to dope the nanowire.
  2. I have also used a simple uniform doping object to dope the substrate but you can replace that with a diffusion doping object if necessary.
  3. The substrate and background doping objects had “n type” selected for the dopant type. I have switched them to “p type”.


  1. I have adjusted the bias to go from 0 to 1.1 V so that the open circuit voltage can be reached.


Thank you for your reply.

I want to ask about:
1- the base and emitter must be the same coordinates (i.e. base must be 400 nm).
2- the generation is the same as the file that i sent or be around the full structure.
3- After running, I want to get a characteristic curve (I & V) and the power curve but the results not correct.


what about the other question that in the last email?

Thanks very much.



Can you please share a schematic to show what you mean by same coordinate here. Also which dimension do you want to equal 400 nm?

Yes. Even though we are simulating a quarter of the structure, we can use the full generation rate (only a quarter of it will get used). Once you have the results please keep in mind that the current should be multiplied by 4 to get the total current.

I noticed that the mesh order of the “base” object got reset to 2 for some reason. I have set this back to 1 so that it cuts out from the GaAs substrate. The problem was that the p+ doping was not getting applied at the bottom surface of the substrate. The simulation should run fine with this change. Below is the I-V I get from the simulation,

I will send the new file with the generation object to you via email since it is too large to share here.



Hi Yara, I am attaching the modified file here again. To make sure that the size is small enough I have removed the import generation object. Please import the data again and just make sure that it is placed appropriately.

GaAs3_MOD_2.ldev (3.7 MB)



The problem is the same as the problem in the last file. I make the same changes and the file running correctly. thanks very much and i’am sorry because i didn’t make a new topic.


1 Like


Hi, I got the same error when I use Device to simulate a PN Junction (with large reverse bias voltage). When I set the bias voltage to 0V, the error went away. But once I increase the reverse bias voltage, the convergence issue comes back again. Since I do want to see how the device behaves at higher reverse bias voltage, I wonder if there’s any solution to that.

By the way, it seems the problem only comes up when I enable “impact ionization”. For my case, all I care is the electric field distribution at large reverse bias voltage (and breakdown). I understand that “impact ionization” affect I-V simulation a lot from here. However, I am not quite sure about what the “impact ionization” option does to electric field distribution simulation. Does that matter at all? If not, I am very happy to disable it.



Hi @luyazhang, the electron/hole transport will affect your electric field distribution and since impact-ionization will affect the transport, you will need to keep the mechanism enabled (specially because you are looking for breakdown).

A few things to mention here:

  1. Convergence is always hard at breakdown. Even with all the steps described below, the simulation may fail at breakdown voltage and you may not be able to simulate for voltages beyond breakdown.

  2. In the material database where you have enabled the model for impact ionization, try choosing “grad phi” for the “driving field” entry. This will use a simpler model to calculate the electric field in the model implementation and will make the simulation more stable. However, this option will only be valid if you do not have a heterojunction. If you have a heterojunction then you will have to use EdotJ which is a more complex approach and harder to converge.

  3. In the “Advanced” tab of the CHARGE solver properties, enable “gradient mixing” and set it to “fast”. This change is necessary of you are using a field-dependent material model (like impact ionization or high field mobility).

  1. When you are near breakdown, the solver will be more prone to diverging. Try using smaller voltage steps in such cases.


Hi Ahsan,

Thanks for reply - I’ll give a try.

And in the CHARGE Advanced tab, what is the difference between “gradient mixing = fast” and “fast mixed mode”? Do I need to enable fast mixed mode?