Highly parallel structured adaptive mesh refinement using parallel language-based approaches (original) (raw)

Adaptive Mesh Re®nement (AMR) calculations carried out on structured meshes play an exceedingly important role in several areas of science and engineering. This is so not just because AMR techniques allow us to carry out calculations very eciently but also because they model very precisely the multi-scale fashion in which nature itself works. Many AMR applications are also amongst the most computationally intensive calculations undertaken making it necessary to use parallel supercomputers for their solution. While class library-based approaches are being attempted for parallel AMR we point out here that recent advances in the Fortran 90/95 standard and the OpenMP standard now make it possible to carry out highly parallel AMR calculations using language-based approaches. The language-based approaches oer several advantages over library-based approaches, the two principal ones being portability across parallel platforms and the best possible utilization of Distributed Shared Memory (DSM) hardware on machines that have such hardware. They also free up the applications scientist from being constrained by the static features of a class library. The choice of Fortran also ensures maximal reuse of pre-existing Fortran 77 applications and full Fortran 77-based processing eciency on each computational node. Our implementation of the ideas presented here in the ®rst author's RIEMANN framework essentially permits any serial, uniform grid, stencil-based Fortran code to be turned into a parallel AMR code. In this paper we ®rst describe our strategy for using Fortran 90 in an object-oriented fashion. This permits AMR applications to be expressed in terms of familiar abstractions that are natural to the www.elsevier.com/locate/parco Parallel Computing 27 (2001) 37±70 (D.S. Balsara), nortonc@bryce.jpl.nasa.gov (C.D. Norton). 0167-8191/01/$ -see front matter Ó 2001 Elsevier Science B.V. All rights reserved. PII: S 0 1 6 7 -8 1 9 1 ( 0 0 ) 0 0 0 8 8 -0