Goal: have each module be testable as independently as possible from the rest of the code
Tests should be very simple, light on memory.
Should eventually hook up with the FLASH test suite
What are obstacles?
Most modules have some knowledge of other units
Most modules need some form of Grid
Architecture: Lessons from FLASH 2 Example : Decentralize data management source mesh dbase amr PM data . amr PM func. UG UG UG data UG func source Grid AG PM func. UG UG data UG func PM data . FLASH2 FLASH3
IO UG AMR hdf5 netcdf hdf5 netcdf checkpoint() checkpoint() checkpoint() checkpoint() Lots of duplicate code! IO Common hdf5 netcdf checkpoint.F90 Calls generic methods open_file() write_data() Hdf5_open() ncmpi_open() Eliminate duplicate code
Useful in cases where high levels of resolution are needed in fixed areas of the domain
Squishy Grid or
FLASH 3 Architecture Four Cornerstones Setup tool assemble simulation Config files Tell setup how to Assemble simulation Driver Organize interactions Between units Unit Architecture API Inheritance Data management
FLASH3 Units Driver I/O Runtime inputs Grid Profiling Runtime viz Simulation Infrastructure monitoring Hydro Burn Gravity MHD Physics