Next: 2. Overview of JTPACK90
Up: JTpack90 (SIAM PPSC97 paper)
Previous: JTpack90 (SIAM PPSC97 paper)
1. Introduction
An effort was initiated recently at Los Alamos National Laboratory (LANL) to build a new 3-D high-resolution tool for
simulating casting processes, i.e. the flow of molten material into
molds and the subsequent cooling and solidification of the material.
The simulation process includes incompressible free-surface flow during
mold filling, heat transfer-driven convective flows during solidification,
and interface physics such as surface tension and phase change, all in
complex geometries.
This tool is known as TELLURIDE, and is described more fully elsewhere
in these proceedings [8].
Several decisions were made early in the design stages of TELLURIDE which
initiated and drove development of JTPACK90.
- An unstructured-mesh finite-volume approach would be used
to the complex geometries that would be modelled.
- Fortran 90 (F90) was chosen as the implementation language.
Though this was a fairly risky decision at the time due to
the relative scarcity of stable compilers, we felt that the
advantages over alternatives warranted the risk. For example,
F90 offers numerous syntactic improvements to Fortran 77(F77),
some of which will be discussed later. Compared with C++,
we like the fact that arrays are first-class objects in F90,
whereas in C++ every code effort seems to have its own
array class. Also, the F90 standard had been approved and was
in effect. Though this is not as much of a problem with C++ as
it was when this effort was started, the standard still has
not been finalized. We are now confident that our decision was
the correct one, as F90 compilers have become available for
virtually all platforms, and the syntactic advantages of F90 have,
among other things, allowed us to write code which is maintainable
and easy for new members to the team to become productive with.
- Parallelism would be via explicit message-passing using
MPI (Message Passing Interface). In addition, the message-passing
functionality would be encapsulated in an F90-accessible library,
thus hiding the details from the higher-level code. This library
is known as PGSLIB, and is described elsewhere in these
proceedings [2].
- Robust and efficient solution of large systems of linear equations
would be essential, as they would arise in several aspects of
a simulation (e.g. heat conduction, our projection method for
the Navier-Stokes equations, etc.).
One of use had developed an F77 package,
JTPACK77 [10], which implements a number of Krylov
subspace methods for solving linear systems of equations.
Since that package
was being used successfully for a number of efforts internal to LANL,
it made sense to consider it as a candidate from which to build a
similar F90 package for the TELLURIDE effort (and eventually
other applications). In addition, although there are numerous other
high-quality packages for
iteratively solving systems of linear equations in other languages,
such as ITPACK [7] and NSPCG [6] in F77,
AZTEC [4]
and
PETSc [1]
in C, and
Diffpack
in C++, we knew of no such effort in F90.
So development of JTPACK90 began with JTPACK77 as a starting point,
driven by the needs of TELLURIDE.
Next: 2. Overview of JTPACK90
Up: JTpack90 (SIAM PPSC97 paper)
Previous: JTpack90 (SIAM PPSC97 paper)
John A. Turner