\section{Conclusions and Future Directions}
\label{sec:CONCLUSION}

We have identified a class of complex  dynamic grid computations that
arise in a variety of scientific and computational engineering settings. 
Constructing software to implement parallel simulation of these
computations is a costly endeavor, requiring that developers
have or acquire significant experience in parallel programming technologies.
Even then the potential for introducing subtle faults into
parallel software, such as deadlocks, makes 
a correct parallel solution more difficult to
produce than a sequential solution.
Focusing on this specific domain of discrete-time simulations
enabled identification, design and implementation of a collection 
of reusable software components called the PAGS framework.
Our experience leads us to believe that PAGS enables 
high-quality simulation
software to be developed more cheaply and without an excessive negative
impact on performance relative to custom-built simulations. 

PAGS has been applied to implement some well-understood grid
problems with good success.  We are working to apply it to
significantly more complex problems involving:
\begin{description}
\item[dynamic size and shape changes in partitions]{
By monitoring the amount of computation being performed
in different partitions over the course of a simulation
we can vary the size of partitions to adapt to the 
changing nature of the computation wavefront.
Correctness of the simulation can be assured by using
lookaheads to pause the computation in the partitions that
are being refined.}

\item[distributed-memory and heterogeneous simulation]{
We have also developed a distributed-memory version of PAGS.
A worker executing in such a simulation can also 
be a shared-memory PAGS computation executing on a shared-memory
multi-processor.  In this way, a hierarchy of distributed and
shared computations can cooperate to further improve simulation
performance.}

\item[meta-processing of partitions]{
In distributed-memory PAGS, partition migration can be used
to achieve load-balancing.  This same approach can be used
to fault dormant portions of the computation to disk
enabling PAGS to accommodate massive-memory simulations.}

\item[higher-level programming support]{
We can provide additional abstractions layered atop PAGS
that automate the process of specifying sub-problem
topology.  For common classes of problems, such as stencil-based
relaxation problems, this is straightforward.  In general,
topology can be extracted from sequential codes using inspector
loops whose bodies configure the PAGS framework.}

\end{description}
To evaluate the enhanced PAGS framework we are using it to solve challenging
real-world simulation problems in the areas of:
non-steady state fluid dynamics, turbulent reacting flow, 
and modeling of the thermo-mechanical response of soldered components.
