5.3 How to choose the numerical parameters

Whether or not the simulation converges depends on the physical parameters: large densities of traps or ions, widely different electron and hole mobilities, strong illumination conditions, large steps in time, light intensity or voltage all add to the challenge of finding a solution. If \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} SimSS}}\) or \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\) struggle, or even fail, to find a solution, then it might help to modify the numerical parameters. Table 5.1 shows the most relevant numerical parameters and their typical values. Refer to section 2.9 to make the best use of tweaks to these parameters.

The numerical parameters impact the speed, convergence, accuracy, or any combination of these. The main ones being \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} NP}}\), \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolDens}}\), \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} minAcc}}\), \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxAcc}}\) and \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} grad}}\). While \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} NP}}\) and \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolDens}}\) greatly influence the speed and convergence they also govern the accuracy of the solution. On the other hand, \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} grad}}\) can—in some cases—really improve the speed without sacrificing the accuracy of the solution.

For transient simulations, one has to define an input file with times, voltages, etc. Obviously, the resulting time steps impact the accuracy of the simulation, with larger time steps typically being less accurate than smaller ones. It might, therefore, be tempting to use very small time steps, especially if \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\) struggles to converge. However, extremely small time steps can be the cause of the problem: If the time step is very small (for example 1 ps), then any noise in the potential or charge density is amplified which leads to a large displacement current. As a result, the total current might not be sufficiently uniform and \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\) does not converge. Thus, while reducing the time step can help in obtaining a stable and accurate solution, care must be taken not to overdo it.

Table 5.1 Typical value of the most important numerical parameters: they affect the accuracy, speed, and convergence behaviour of the simulations. These values are merely intended as a starting point and may require tailoring in order to get the best results.

parameter

typical value

comments

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} NP}}\)

100–400

increase if high accuracy is required

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolPois}}\)

1e-4–1e-5

 

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxDelV}}\)

1–10

reduce if convergence is difficult

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxItPois}}\)

300

 

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxItSS}}\)

1000

larger values can make sense in \(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\)

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxItTrans}}\)

1000

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\) only

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolCurr}}\)

1e-4

 

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolDens}}\)

1e-5

reduce if high accuracy is needed, increase if convergence is difficult

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} minAcc}}\)

0.5

reduce if convergence is difficult

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} maxAcc}}\)

0.95

reduce if program crashes

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} convVar}}\)

1

for transient simulations

 

1, 2

for steady-state simulations

 

3

worth a try for difficult cases

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} grad}}\)

0–4

 

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} tolVint}}\)

1e-6

\(\mathtt{\require{color}{\color[rgb]{0.000000000000000,0.500000000000000,0.500000000000000} ZimT}}\) only