A Programming Framework for Physics
Brandt Steven · Figshare · 2015
The fundamental difficulty with scientific software is that the existing languages are either too general-purpose and too low-level, or both. Thus, physics equations are entangled with the way they are implemented, even to low level details such as grid structure, cache optimization, etc. Because everything is coupled, it is difficult for the various scientific communities to adapt to algorithm or hardware advances. More importantly, it means that researchers cannot specialize as easily. Everyone must understand physics, software engineering, and computer science to a to a very deep level, and the learning process, especially for students, is much more arduous than it needs to be. In principle, it should be possible to independently specify (1) the scientific equations to be solved; (2) the type of grids; (3) the type of numerical methods, e.g. time integrators, elliptic solvers; (4) the intended execution platform (desktop, accelerated cluster, etc.); (5) performance goals, e.g. as fast as possible, minimum cost, etc.