*MINIMOS-NT* solves
**f** = 0 using a damped Newton
algorithm:

- ^{k . }u |
= | f(x^{k}) |
(5.1) |

x^{*} |
= | x^{k} + d^{ . }u |
(5.2) |

= | (5.3) |

Applying the finite boxes discretization scheme to the basic semiconductor equations one gets for each quantity located at the grid point

where

In case of a Dirichlet condition, (5.4) is not needed as the value of is determined by (5.5). In case of a Neumann condition (5.6) can be used to calculate (5.4) as fluxes over contacts and interfaces cannot be obtained by discretizing the semiconductor equations.

As is obvious from these considerations, boundary and interface points have to
be handled in a different manner compared to points located inside the
segments. In a generic device simulator like *MINIMOS-NT* which can handle an
arbitrary number of contacts, segments, and interfaces, efficient handling of
these situations is of utmost importance. This is achieved by treating the
segments separately from the boundary conditions in such a way that all
segment points are treated in the same manner. (5.4) is
calculated for all segment points including boundary points.
The derivatives of (5.4) for all grid points (
**f**_{S})
with respect to the solution vector
**x** yield the segment matrix
_{S}.

The system matrix
(Jacobian) will be assembled from two
parts, namely the direct part
_{B} (boundary models) and the
transformed part
_{S} (segment models). The latter will be multiplied
by the so called row transformation matrix
_{B} before contributing to
the system matrix
. The same treatment applies for the right hand
side vector
**b**.

= | _{B} + _{B}^{ . }_{S} |
(5.7) | |

b |
= | b_{B} + _{B}^{ . }b_{S} |
(5.8) |

The direct part of the system matrix
_{B} and the row transformation
matrix
_{B} are set up by the boundary models, while the transformed
part
_{S} will be handled by the segment models.
_{B} is
initialized to be the unity matrix. In the actual implementation only entries
different to the unity matrix will be stored. Direct matrix multiplication is
avoided by assembling the transformation matrix in a pre-pass. The
transformation matrix allows for arbitrary linear combination of the equations
found in
_{S} and is normally extremely sparse with most of the
non-zero entries being 1. For the special case with the main-diagonal
entry
*t*_{i, i} = 0, the constitutive relation for grid point *i* will not contribute to the
final constitutive relation *i*. Another special case is
*t*_{i, j} = *t*_{j, j} = 1 which simply
combines rows *i* and *j* of
_{S} and adds them to row *j* of
_{B}.

1999-05-31