The chapter discusses contemporary developments in scalable solver software and their transforming effect, enabling "physicists" to function at the frontier of algorithmic technology while concentrating primarily on its application-that is, refining its model and understanding and employing its results-rather than, for instance, debugging split-phase communication transactions. This is possible only through a division of labor or, as a computer scientist would say, a "separation of concerns," because the sophistication of solution algorithms and their implementation on massively parallel distributed hierarchical memory computers have outstripped the understanding even of any individual mathematician and computer scientist who builds a career on this task alone. Modern scientific software engineering means many things to many people, but in its cluster of distinguishing characteristics are abstract interface definition, object orientation, componentization, self description, self-error checking, self-performance monitoring, and design for performance, portability, reusability, and extensibility. Historically, the challenge for software designers, who were once primarily the physicists who understood the entire problem in a vertically integrated way, was to increase the functionality and capability for a small number of the users who were expert in the domain of the software.
ASJC Scopus subject areas
- Chemical Engineering(all)