The Algorithm Library is a new object-oriented tool set for the development and customization of programs which are explicitly designed to meet the high performance demands of TCAD applications. It joins a library of C++ classes offering
For that purpose the Algorithm Library provides a minimal C++ compatible set of data (Parameter) types and MDL functions which serve as kernel for application specific extensions with user defined Model and Parameter classes. These application specific extensions are stored in separate modules which can be dynamically loaded on demand during the runtime of the programs.
A maximum of runtime performance of the integrated MDL interpreter in detail and the whole process of the algorithm and model management in general is achieved by taking advantage of the very common structure of TCAD applications separating the program flow into three distinct phases:
The model and parameter instantiation scheme provided by the Algorithm Library is designed so that the overhead for the dynamic allocation for structures and temporary values is mainly worked out in the initialization phase. Another advantage of the MDL interpreter language over other general purpose interpreter languages in the field of TCAD applications is the built-in support for the model and parameter abstraction concept designed to ease the joint work of physicists and computer scientists by covering the complexity of the underlying C++ class hierarchies.
For application developers the Algorithm Library structures provide a completely transparent interface to Model definitions, which requires no distinction between Models contained in the compiled source code of the simulator, Models defined during runtime on the input deck using the MDL interpreter, and Models which are dynamically added to the application using MDL Model extension libraries of compiled MDL definitions. Thus no additional effort is required to allow the subsequent redefinition or overloading of complete Models, single algorithms or parameter values during runtime by using MDL definitions without having to change or recompile the source code of the application itself.