Device simulation tools must have implemented the mathematical models, represented by equations. For instance, the sketched basic semiconductor equations (Section 4.1) are usually used in combination with the finite volume discretization scheme to assemble a system of equations. Typically, the assembly process is interwoven with the formulation of the PDE, confining a formulated PDE to be solved solely with a single specific discretization. Or in other words, the mathematical structure of a PDE is typically sacrificed when transferred to code, because only discretized versions are implemented, as is for example the case for the deal.II library [92]. The FEniCS project [114] provides a highly expressive approach to implement and solve PDEs, however, it relies on code generation and separate library routines, introducing other drawbacks such as inferior support for legacy code [115]. This particular aspect is especially problematic for the field of semiconductor device simulation as a plethora of such implementations is available.
Other highly expressive implementations for such an approach have been developed [77], however, a decoupling between formulating PDEs and the applied discretization is typically not applied. Usually no equation objects are provided which are decoupled from a discretization scheme. Hence, advanced users are required to discretize the equation by hand, as in-depth knowledge of the discretization scheme is required.
This offers utmost flexibility, but on the other side the missing convenience layer results in decreased usability, effectively excluding end users from utilizing such an approach. Therefore, prominent FEA tools like COMSOL Multiphysics [22] provide an automatic discretization approach, hiding the technical details. This enables to reach end users who can therefore focus on the physics, as primarily the PDEs modeling the physical problem are required by the simulation tool.
Also, the basic physical models represented by the utilized PDEs are usually augmented with further models, by, for instance, introducing additional terms into the equation or by adding additional equations such as the heat-flow equation. This augmentation step is essential for device modeling, as it allows researchers to investigate new mathematical approaches for simulating physical phenomena. For instance, such an approach is required for introducing recombination models, such as the Shockley-Read-Hall model [116][117], into the right-hand side of the continuity equations (Equations 4.2-4.3).
Overall, a particular challenge in this context is to retain the mathematical structure of a PDE. The simulation tool should be capable of automatically discretizing an equation object, e.g., a PDE, with an appropriate discretization schema. Such an approach requires a symbolic math kernel, supporting the setup and manipulation of mathematical expressions. Furthermore, these expressions must support run-time changes to enable, for example, the introduction of additional terms to extend the modeling via GUIs or scripting interfaces like Python.