Pdeum 1.1: A Problem-Solving Environment for Partial Differential Equations

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.