"SciNapse: A Problem Solving Environment"

Stanly Steinberg
University of New Mexico
Department of Mathematics and Statistics
Albuquerque, NM, 97110
USA
E-mail:stanly@math.unm.edu


I am interested in developing general methods for solving modeling problems of
the type that appear in engineering and science. The current methods of solving
such problems range from simple analytic and numerical models to numerical
codes that consume a major portion of the computing cycles on the largest
computers. A most important characteristic of such problems is that their
effective solution requires a wide range of analytic and numerical techniques,
so wide that an individual cannot be an expert in all the required areas. I am
interested in how well and how much of such expertise can be "effectively"
captured in a problem solving environment. The problem solving environment must
be capable of using a computer algebra system to do analytic calculations and
of using high-speed large-scale floating-point computation. In addition, the
problem solving environment needs a user interface that allows an easy
description of the problem and a comprehensible presentation of any results,
either analytic or numeric.  Knowledge engineering techniques are used to
capture the known solution technology.

I will describe the SciNapse system which is an example of such a problem
solving environment on which I have worked for over three years. Recently,
a product, SciFinance, which is based on SciNapse and is used to model
financial derivative, has been marketed by SciComp, Inc.

In my opinion, within a few years, most users will interact with computers
using problem solving environments, which should strongly impact how scientific
computing will be taught at universities. Engineers and Scientists should
find SciNapse interesting because this system gives a glimpse of what the
future will probably look like, while mathematicians should find SciNapse
interesting because problem solving environments will become repositories
for large volumes of mathematical knowledge, including theoretical results,
and their construction will employ a large number of mathematicians.

		      SciNapse

SciNapse is a problem solving environment for numerically solving partial
differential equations.  The main interface to the system is the ``problem
specification language.''  This language allows an initial-boundary value
problem for a system of partial differential equations to be specified in terms
of invariant differential operators or in a particular coordinate system. The
region in which the differential equations hold is specified in terms of a
union of rectangles in some coordinate system. This allows rather general
regions appropriate for discretization using grids with the same structure as
rectangular grids.  The methods for discretizing the differential equations and
the boundary conditions can be specified by giving keywords for common methods
or by giving detailed mathematical replacement rules, or some combination of
both. In the case of finite-difference discretizations, simple ways exist for
specifying grid staggering and the placement of the boundaries in the staggered
grid.

The SciNapse system includes a template language for specifying algorithms.
One typical use for templates is to specify the over-all time evolution in
terms of a general method for taking individual time steps.  Then the
particular method for taking a time step can be chosen from a library of
templates, e.g. Runge-Kutta-Fehlberg or Dormand-Prince integrators, or a new
template may be written.  If the method is implicit, then a solver may also be
chosen from a library of solvers, e.g. preconditioned conjugate gradient or
quasi-minimal residual, or a new solver template can be written.  SciNapse has
heuristics for choosing solvers, and many other features of the solution
algorithm.  The SciNapse system is implemented in Mathematica and the templates
are executable Mathematica code, so they can easily be tested for correctness
in Mathematica.

SciNapse is a knowledge-based program synthesis system implemented with
objects, transformation rules, and a reasoning system.  A great deal of
knowledge engineering has gone into providing the system with extensive
information about how to solve initial boundary value problems in an
intelligent manner.  The system starts with an abstract notion of what is
needed to write a program recorded in its objects and starts filling in the
details based on rules associated with the objects. Information may be given to
SciNapse in files written by the user, from a simple terminal interface, or in
a graphical user interface. When SciNapse realizes that it doesn't have a piece
of information that it needs to specify a problem, it will ask the user for
that information, typically by giving a menu of alternatives.  Users can have
the system use its own knowledge whenever possible or can request that they be
asked to confirm system choices.  If some information has already been given to
SciNapse, then the reasoning system uses this to eliminate alternatives. Using
constraints (hard and fast rules about legal options and combinations),
heuristic rules of thumb for making decisions, and defaults, SciNapse can take
much of the burden of writing a program off the user.

Collaborators: R.L. Akers, E. Kant, C. Randall, R.L. Young,

Stanly Steinberg, Professor of Mathematics
Department of Mathematics and Statistics
University of New Mexico
Albuquerque NM 87131-1141 USA
stanly@math.unm.edu
http://math.unm.edu/~stanly/
Phone: 505-277-5323, FAX 505-277-5505
Office: Humanities 436

Consultant
SciComp Inc.
5806 Mesa Drive, Suite 250
Austin, TX 78731
phone: 512-451-1050
fax:   512-451-1622
stanly@scicomp.com
http://www.scicomp.com/