Abstract
Partial differential equations (PDEs) are ubiquitous to the mathematical description of physical phenomena. They describe the relationships between functions of more than one independent variable and partial derivatives with respect to those variables. Typical examples in the physical sciences describe the evolution of a field in time as a function of its value in space, such as in wave propagation or heat flow. There is a plethora of numerical PDE solvers, and FiPy <
http://www.ctcms.nist.gov/fipy> will not be the last addition to that collection. Many existing PDE solver packages focus on the important, but arcane, task of actually numerically solving the linearized set of algebraic equations that result from the discretization of a set of PDEs. The need for many researchers, in our experience, is higher-level than that. They have the physical knowledge to describe their model, and can apply differential calculus to obtain appropriate governing conditions, but when faced with rendering those governing equations on a computer, their skills (or time) are limited to explicit finite differences on uniform square grids. Of the PDE solver packages that focus on an appropriately high level, many are proprietary, expensive and difficult to customize. A search of the internet turns up a multitude of codes with promising names and abstracts, but they are generally unapproachable by those who don't already know the answer to the question they are asking. As a result, scientists spend considerable resources repeatedly developing limited tools for specific problems.