Mathematical Modeling and Analysis Group
Los Alamos National Laboratory
C++ template techniques, including template metaprogramming, expression
templates, and algorithm specialization, provide new opportunities to build
easy-to-use, compact, efficient, and easily maintainable codes to solve
complicated systems of partial differential equations. Pdeum (the PDE Unification Modules) is a new PDE problem solving environment developed in LANL's T-7 group. Pdeum uses generic programming and compile-time polymorphism to allow library writers and application developers to create high level modules that are combined at compile time, providing both flexibility and efficiency. C++ generic programming techniques unify the solution algorithms for large systems of PDEs so the software can systematically use general patterns and data flow, providing a coherent, notationally consistent toolbox. Our library implements an advanced, unique stencil system that substantially extends the C++ "expression template" technique to apply finite difference operators, including new high-quality mimetic difference operators that preserve underlying mathematical symmetries. All of these elements work together to enable a rapid development environment for the numerical solution of PDEs. This talk will introduce Pdeum and briefly discuss some of our design considerations. From there we'll examine a few example codes.