Next: 4.2.3 Random Number Generator Up: 4.2 Code structure Previous: 4.2.1 Graphical User Interface

## 4.2.2 Flow Chart

The important steps SIMON is going through during a simulation run are shown in the flow chart in Fig. 4.4. A parser written in lex/yacc [77] reads in the circuit description and stores the information in linked lists. Then the equation system linking known

quantities with unknown ones are assembled. Afterwards the inner loop is entered where change in free energy, tunnel rate and the exponentially distributed duration between tunnel events for each possible event are computed. The event with the smallest duration is the winner and is used to compute the new state of the circuit. In the case of a  transient simulation with time dependent voltage sources one more test has to be passed before the time is advanced and a new event is simulated. If the  duration to the next tunnel event is bigger than a user defined time constant , which should be smaller than the smallest characteristic time constant of the voltage sources, no tunnel event takes place and the time is only advanced by the user defined time constant . A good choice for is , where is the maximum frequency of any voltage source present. A too long duration to the next tunnel event means that in the computed tunnel interval the voltage sources have changed considerably which demands a recalculation of tunnel rates. In Fig. 4.5 one can see that if the smallest time between two tunnel events, , is too big, the interval has to be partitioned into smaller steps .

Therefore the time is advanced only by , time dependent voltage sources are updated, and a new event is computed. In this way transient behavior is simulated more accurately. This method preserves the statistics of tunneling accurately to the first order. The probability that a tunnel event happens sometime before is

where the factor in front of the integral is a normalization factor to make the probability unity for . The probability that the event happens in the short time is thus . If is split up into n intervals long, one gets for the probability that the event happens within

which is correct to the first order with (4.1).

Next: 4.2.3 Random Number Generator Up: 4.2 Code structure Previous: 4.2.1 Graphical User Interface

Christoph Wasshuber