The dividends of investing in computational software design: A case study. (March 2019) - Dubey, Anshu; Tzeferacos, Petros; Lamb, Don Q
A significant fraction of computational software for scientific research grows through accretion. In a common scenario, a small group develops a code for a specific purpose. Others find the software useful, so they add to it for their own use. The software grows to the point where its management becomes intractable and scientific results obtained from it become unreliable. This is in stark contrast with a small number of scientific codes that have undergone a design process, be it due to an upfront investment, or when haphazardly grown codes have reset and started again. At a minimum, these codes reduce the time to obtain research results for the communities they serve because individual researchers do not have to develop their own codes. They provide further benefits; the results they produce are more reproducible due to greater scrutiny, leading to better science. One of the more overlooked benefits, which is perhaps of greater significance, is that a well-designed code can expand to serve communities beyond the ones it was designed for. Thus, research communities with similar computational requirements can symbiotically improve computation-based research for each other. In this article, we present a case study of FLASH, a code that was designed and developed for simulating thermonuclear runaways such as novae and type Ia supernovae in astrophysics. Designed to be modular and extensible, users from several diverse research areas have added capabilities to it and adapted it for their own communities. Examples include cosmology, high-energy density physics, core-collapse supernovae, star formation, fluid–structure interactions, and chemical combustion. We give a summary of design features that facilitated the expansion and quantify the effort needed to expand into some of the above-mentioned fields. We also quantify the impact on different communities by mining the database of publications using FLASH, collected by its developers.