Most of the currently available software packages for the finite element method at source code level follow a procedural programming style, presumably mainly for historical reasons. Only a low level of abstraction is achieved therein, so that for each spatial dimension a separate implementation is required. This is in contrast to the mathematical description, which is typically independent of the underlying spatial dimension due to the use of differential operators such as divergence and gradient. By applying modern abstraction facilities provided by C++, a programming framework for the finite element method was developed that fully decouples the problem formulation from the spatial dimension at source code level. The mathematical description, i.e. the weak formulation, can be given directly in source code, while the spatial dimension and other discretization parameters such as the polynomial degree of ansatz functions can be conveniently configured in separate configuration classes. In this way, all information about the problem under investigation is available at compile time, which allows the compiler to generate code with run-time efficiency comparable to hand-tuned code.
The current research focuses on a spherical harmonics expansion approach for the solution of the Boltzmann transport equation. Such a deterministic solution approach has several advantages compared to Monte-Carlo methods, for example high energy effects such as impact ionization can be analyzed more accurately, which is of high importance for nanoscale devices. In the long term, the advantages of the finite element framework shall be used for adaptive solution algorithms of the Boltzmann equation, for both the adaptive meshing and adaptive selection of the number of terms in the spherical harmonics expansion.
|