Martin Staley
Mathematical Modeling and Analysis Group
Theoretical Division
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.