Extensible component-based architecture for FLASH, a massively parallel, multiphysics simulation code

FLASH is a publicly available high performance application code which has evolved into a modular, extensible software system from a collection of unconnected legacy codes. FLASH has been successful because its capabilities have been driven by the needs of scientific applications, without compromising maintainability, performance, and usability. In its newest incarnation, FLASH3 consists of inter-operable modules that can be combined to generate different applications. The FLASH architecture allows arbitrarily many alternative implementations of its components to co-exist and interchange with each other, resulting in greater flexibility. Further, a simple and elegant mechanism exists for customization of code functionality without the need to modify the core implementation of the source. A built-in unit test framework providing verifiability, combined with a rigorous software maintenance process, allow the code to operate simultaneously in the dual mode of production and development. In this paper we describe the FLASH3 architecture, with emphasis on solutions to the more challenging conflicts arising from solver complexity, portable performance requirements, and legacy codes. We also include results from user surveys conducted in 2005 and 2007, which highlight the success of the code.

[1]  Jianwei Li,et al.  Parallel netCDF: A High-Performance Scientific I/O Interface , 2003, ACM/IEEE SC 2003 Conference (SC'03).

[2]  I. Foster,et al.  Terascale Turbulence Computation on BG / L Using the FLASH 3 Code , 2006 .

[3]  Steven G. Parker,et al.  The CCA component model for high-performance scientific computing , 2006 .

[4]  Kum Won Cho,et al.  Development of Cactus Driver for CFD Analyses in the Grid Computing Environment , 2005, EGC.

[5]  Brad Gallagher,et al.  Terascale turbulence computation using the FLASH3 application framework on the IBM Blue Gene/L system , 2008, IBM J. Res. Dev..

[6]  C. Greenough A Survey of Available Tools for Developing Quality Software Using Fortran 95 , 2005 .

[7]  G. Bryan,et al.  Introducing Enzo, an AMR Cosmology Application , 2004, astro-ph/0403044.

[8]  Trevor Harmon Probing the palm OS , 2002 .

[9]  Scott R. Kohn,et al.  Managing complex data and geometry in parallel structured AMR applications , 2006, Engineering with Computers.

[10]  Scott R. Kohn,et al.  Managing application complexity in the SAMRAI object‐oriented framework , 2002, Concurr. Comput. Pract. Exp..

[11]  J. Stone,et al.  An unsplit Godunov method for ideal MHD via constrained transport , 2005, astro-ph/0501557.

[12]  B. Fryxell,et al.  FLASH: An Adaptive Mesh Hydrodynamics Code for Modeling Astrophysical Thermonuclear Flashes , 2000 .

[13]  David R. Chesney,et al.  Space Weather Modeling Framework: A new tool for the space science community , 2005, Journal of Geophysical Research.

[14]  V. G. Weirs,et al.  On Validating an Astrophysical Simulation Code , 2002, astro-ph/0206251.

[15]  J. F. Mckenzie,et al.  Differential ion streaming in the solar wind as an equilibrium state , 2005 .

[16]  Andrew Siegel,et al.  FLASH: Applications and Future , 2006 .

[17]  L. Reid,et al.  Introduction to FLASH 3.0, with application to supersonic turbulence , 2008 .