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.
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.