A constant time step size is used when the advantages of variable step size are small as for example for simple periodic input signals, e.g., sinusoids, and when one wants to avoid the computational overhead of a sophisticated time step control. The most important case where constant time step sizes are used is when the simulation results are the input of some post processing in which a constant time step size leads either to higher accuracy or to more efficient algorithms, e.g., discrete Fourier transformation.
In the general case a variable time step size is used. For simple problems the optimum time step size can be determined analytically. When simulating general semiconductor devices this is not possible and therefore numeric methods have to be used to estimate the step size.
One method to determine the optimum time step size is to estimate the discretization error and then choose the step size in such a way that a given threshold is not exceeded. However, in most cases the estimation of the discretization error is computationally quite expensive and might exceed the advantage gained in comparison to a simpler method which chooses time step sizes that are smaller than the optimum step size. For example in the two-level step doubling method [35] for a chosen step size one transient step is calculated with this step size and compared to the result of two transient steps with half the step size to estimate the time discretization error Et (see Fig. 4.5).
Et = . || Ct/2 - Ct|| | (4.2) |
Here Et is the discretization error for a time step of size t. The order of the time discretization which is one for the backward Euler method is given by q. Ct is the value of the discretized quantity C after a time step of size t. Ct/2 is the value of the same quantity after two time steps of size t/2 starting at the same instance.
The only method to guarantee that the step sizes are not chosen too big is to check the discretization error. For many applications this is not practicable and therefore other quantities are used to estimate the step size and to decide whether the last step was too big. Many of these methods are computationally very efficient but they have to be used with caution because there is no direct control of the discretization error. Therefore some experience is required in choosing appropriate parameters.
A very simple method to determine whether the time step size can be increased or has to be reduced is to use the number of iterations of the nonlinear equation system which are necessary to compute a time step. Another frequently used method is to check the update norm of the last calculated time step n.