Framework and Methodology for Verification of a Complex Scientific Simulation Software, Flash-X
Akash Dhruv, Rajeev Jain, Jared O'Neal, Klaus Weide, Anshu Dubey
TL;DR
The paper addresses the challenge of verifying a highly composable, multiphysics simulation framework, Flash-X, where correct functionality must be maintained across numerous component permutations. It introduces a scaffolded testing methodology and a FlashTest-driven framework that constructs platform-specific test.info files from repository-defined tests (tests.yaml) and suite definitions, enabling automated, reproducible verification across diverse environments. Key contributions include the concept of test scaffolding to achieve broad coverage without exhaustive permutations, a workflow for initialization, suite setup, and execution via the flashxtest toolkit, and a governance model with gatekeepers to balance development needs with quality assurance. The approach provides practical guidance for verifying complex scientific software and can serve as a template for similar open-source, gatekept projects dealing with highly configurable, PDE/ODE-based simulations and AMR-enabled solvers.
Abstract
Computational science relies on scientific software as its primary instrument for scientific discovery. Therefore, similar to the use of other types of scientific instruments, correct software and the correct operation of the software is necessary for executing rigorous scientific investigations. Scientific software verification can be especially difficult, as users typically need to modify the software as part of a scientific study. Systematic methodologies for building test suites for scientific software are rare in the literature. Here, we describe a methodology that we have developed for Flash-X, a community simulation software for multiple scientific domains, that has composable components that can be permuted and combined in a multitude of ways to generate a wide range of applications. Ensuring sufficient code coverage by a test suite is particularly challenging due to this composability. Our methodology includes a consideration of trade-offs between meeting software quality goals, developer productivity, and meeting the scientific goals of the Flash-X user community.
