Discontinuous Galerkin method on three-dimensional tetrahedral meshes. The usage of C++ template metaprogramming
Abstract:
Many mathematical physics problems possess considerable computational complexity, especially when solving problems on three-dimensional meshes, which sometimes may be very large. Discontinuous Galerkin method is an example of such a problem. That is why the decreasing of the computing amount is an actual task. One of the possible methods of decreasing of the computing amount is to move some part of computations to the compile stage. C++ language with the appearance of templates (in the initial version of the language they were absent) gives such a possibility. This work illustrates the usage of template metaprogramming to speed-up the discontinuous Galerkin method. Besides, template metaprogramming sometimes allows to simplify an algorithm by its generalizing.