A workable approach for modernization of existing software into parallel/distributed applications is through coarse-grain restructuring. If, for instance, entire subroutines of legacy code can be plugged into a new structure, the investment required for the re-discovery of the details of what they do can be spared. The resulting renovated software can then take advantage of the improved performance offered by modern parallel/distributed computing environments, without rethinking or rewriting the bulk of their existing code. Our approach is simple and is in fact a cut-and-paste method. First we try to identify and isolate components in the legacy source code (the cut). Second, we glue them together by writing coordinator modules (glue modules) with the help of a coordination language (the paste). We have used Manifold as the glue language. Manifold is a general purpose coordination language developed at CWI(Centrum voor Wiskunde en Informatica) in the Netherlands and is specially designed to express cooperation protocols among components in component based systems. Our point of departure is two different pieces of existing sequential Fortran code from computational fluid dynamics (CFD). The first Fortran source code deals with a standard CFD problem solved with the so-called sparse-grid method and the other solves the same problem but now with the so-called semi-sparse-grid method. Applying our cut-and-paste method to these two programs results in {em one generally applicable coordinator module that can restructure both sequential programs into parallel applications (which now run on a shared memory machine) as well as distributed applications (which now run on a cluster of workstations). Before we give the actual restructuring of the two sequential programs, we first test the coordinator module with a simplified ``toy'' example. We also give some performance results.

Language Constructs and Features (acm D.3.3), Concurrent Programming (acm D.1.3), Language Classifications (acm D.3.2), Modes of Computation (acm F.1.2), Languages and Systems (acm I.1.3)
Programming languages (msc 68N15), Modes of computation (nondeterministic, parallel, interactive, probabilistic, etc.) (msc 68Q10), Mesh generation and refinement (msc 65N50), Multigrid methods; domain decomposition (msc 65N55), None of the above, but in MSC2010 section 65Nxx (msc 65N99), Other numerical methods (msc 76M25), Gas dynamics, general (msc 76N15)
Software (theme 1), Life Sciences (theme 5), Energy (theme 4)
CWI
Software Engineering [SEN]
Computer Security

Everaars, C.T.H, Arbab, F, & Koren, B. (2000). Parallel, distributed-memory implementation of sparse-grid methods for three-dimensional fluid-flow computations. Software Engineering [SEN]. CWI.