Computers were invented to automate tedious and error-prone tasks, especially in the context of numerical calculations for scientific simulation. Given the importance and difficulty of developing these simulations, it makes sense to study whether computers can assist in their production as well. This project focuses on the open-source project Sundance, which provides high-level syntax to describe finite element methods (FEM) for the numerical solution of partial differential equations, freeing users from the burdens of low-level programming. This approach can reduce development time from months to days or even hours, allowing scientists and engineers to get correct answers more quickly. Sundance is useful software starting from a solid theoretical basis, where the structure of finite element operators are derived and analyzed from software-based Frechet differentiation of variational forms.
Via this domain-specific embedded language, Sundance users (domain scientistis and engineers) can express and simulate nonlinear processes with little more difficulty than linear ones; Jacobians are calculated internally and automatically. This robust system automates not only standard simulations, but also sensitivity calculations, eigenvalue problems, and PDE-constrained optimization, all through the language of differentiation, providing a simple gateway to efficient ``embedded'' algorithms for optimization and control. Furthermore, in this project, Sundance will be extended to run on emerging architectures such as multicore CPU and GPU machines. New low-complexity finite element algorithms based on Bernstein polynomials will be developed and included within Sundance to further exploit this new hardware. Thus, this project represents concrete transformational contributions not only automating mathematical software but in core numerical algorithms, broadening the circle of domain specialists with access to leading-edge simulation technology.