Metaprogramming and operator-overloaded classes for numerical simulations