Skip to main content

IBM Research

Numerical Analysis Objects - NAO 

We are investigating ways to improve the ease of use and ease of creation of software for Numerical Simulation; specifically problems requiring the solution of Differential Equations. This is at heart a software engineering problem, and many of the problems encountered are shared by other application areas, and hopefully will be solved by software engineers. Among software application areas Numerical Analysis is unusual in terms of the variety of data structures that are needed, and the lack of robustness of algorithms. This is not pejorative, solution methods are simply very problem dependant, and the number of problem types is large. Data structures need to either match the solution method for efficiency, or to match the problem type to conserve storage. These particular difficulties are amenable to a well known technique called data abstraction, which allows data structures to be dealt with uniformly, even as the implementation varies widely, and allows the interface to algorithms to be standardized, with the details hidden, not removed.

 As part of this project, we have implemented a set of abstract base classes for objects such as geometrical regions, functions, operators, algorithms and problems. These define how a user interacts with these objects: what information can be obtained, and how the object may be manipulated. On top of this base we have written a class library which contains implementations of some of the more common objects, and a library of Utilities for things such as drawing and printing. We would like you to try it, either by using the algorithms and classes that have already been implemented, or by adding your own, and let us know how well the abstractions apply to your own particular field.

 We have tried to acheive the (utopian) goal of language independance. The Class Library itself is written in C++, but can be used from C++, C and Fortran (via stub routines). An interpretor based on Tcl/Tk and a Visual Programming Language interface are in the works.

What's New? Dec. 18, 2003.

What's New? Nov. 15, 2002.

What's New? July 1, 1999.
Introduction.
Describes the basic philosophy of the NAO Objects: What it is, what it can do.
Object Primer.
An overview of the objects (Geometric Regions, Functions, and Operators) with which NAO defines.
Glossary.
Definitions of some of the concepts and terms used in this documentation.
User's Guide.
Describes how to write, link and run C++, Fortran and C programs, and how to use the Data Explorer visual programming language, and the Interpretor.
Object Programmer's Guide.
Describes how to implement a custom object, and how to provide the different interfaces.
Class Reference and Subroutine Reference.
Describe each of the objects and subroutines, calling sequences and details of how they function.
Examples.
Illustrate the use of various objects.
List of wrapped packages.
Describes non-NAO tools that have been wrapped with NAO interfaces.
The C++ Interface: The DX Interface:
  • Primer
  • Reference
  • Examples.
The C Interface: The TCL Interface:
The Fortran Interface: The Matlab Interface:

The Corba Interface:

Additional information


[Comments| NAO home page ]

[Research home page]

 [ IBM home page | Order | Privacy | ContactIBM | Legal ]