4.3.1 Design

Figure 4.10 shows the individual components of ViennaMini. The core of the simulator is its expandable problem facility, providing specific simulation setups, such as the basic semiconductor equations (Section 4.1) and related additional models. These problems use the ViennaMath library to setup the PDEs, and forward it, along with other information such as solver parameters, to the ViennaFVM library, taking care of the assembly and solution process.


pict


Figure 4.10: The currently available components of ViennaMini. The central simulator orchestrates the individual components, forming the actual simulation application. Blue components indicate exchange layers, whereas grey components relate to the actual kernels, such as pugixml. Note that additional kernels can be added, for instance, additional discretizations such as the FEM provided by ViennaFEM.


The device class stores a ViennaGrid mesh object in its state and allows to store and access additional meta information, such as the segment roles. A segment role associates device-specific part to a segment, like contact, oxide, or semiconductor. Also, an expandable device template class hierarchy enables to generate devices, which can be directly used for simulations. Among the currently implemented device templates are a two-dimensional pn-junction diode and a three-dimensional capacitor. The set of templates can be further extended by implementing additional devices, adhering to the device template interface imposed by the corresponding virtual class hierarchy. The following sections discuss the individual parts of ViennaMini in detail.