TCAD is the application of computational methods and software tools for the analysis and design of integrated semiconductor devices and their fabrication processes. The computational methods deal with the assembly of large equation systems by utilizing discretized partial differential equations from different fields of physics. Special constraints related to high flexibility for the modeling are imposed . The great diversity of physical phenomena present in semiconductor devices themselves, and in the processes involved in their manufacture, make the field of TCAD extremely challenging. Each of the phenomena can usually be described by differential equations of varying complexity. The development of several different discretization schemes has been necessary in order to best model the underlying physics and to accommodate the mathematical peculiarities of each of these equations while transferring them to the discrete world of digital computing.
With the steady evolution of software tools and languages, the shift of programming paradigms can be clearly observed. During its first years our institute used only one- and two-dimensional data structures, due to the limitations of computer resources. The imperative programming paradigm was sufficient for this type of task . With the improvement of computer hardware and the rise of the object-oriented programming paradigm, the shift to more complex data structures was possible. The development of complex applications for process  and device  simulation is an example of this evolutionary path. More complexity is added when modeling requires a change in the underlying topological data structure, usually from structured grids to unstructured meshes; the use of alternative linear or nonlinear solver mechanisms [14,15]; different types of quantities, e.g., vectorial quantities; or a change in the discretization scheme. Not only does application development in TCAD require the utilization of up-to-date data structures and algorithms, but it also demands an overall high performance.