MINIMOS-NT solves
f = 0 using a damped Newton
algorithm:
- k . u | = | f(xk) | (5.1) |
x* | = | xk + d . u | (5.2) |
= | (5.3) |
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 ( fS) 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 | = | bB + B . bS | (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 ti, i = 0, the constitutive relation for grid point i will not contribute to the final constitutive relation i. Another special case is ti, j = tj, j = 1 which simply combines rows i and j of S and adds them to row j of B.