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