Information Technology Laboratory
Mathematical  Computational Sciences Division
Attractive Image NIST
 
Up About MCSD Services & Projects Publications Search

MCSD Software


MCSD staff have been involved in the development of a wide variety of software packages, many of which are in widespread use. Examples of these follow.

CMLIB
The NIST Core Math Library
A collection of high-quality, easily transportable Fortran subroutine sublibraries solving standard problems in many areas of mathematics and statistics compiled and maintained for use on NIST systems from supercomputers to workstations.
Status: Minimal Maintenance
Links: Download full library and Alternate
Contact: R. F. Boisvert
cnofm
Juror Selection Programs
In choosing a jury panel, one wishes to randomly and fairly select N jurors out of a pool of M names, where M is usually much larger than N. "Fairly" means that all combinations of N jurors should be equally likely to be chosen. Sample software for this problem was developed in June of 1994 at the request of the Administrative Office of the U.S. Courts. The software was included in a Request for Proposals for a turnkey system for jury selection. Except for very minor changes, these are the same as the 1994 versions. The algorithms are suitable for juror pools of any reasonable size (the upper limit is over two billion jurors).
Status: Not Maintained
Links: cnofm.c, cnofmx.c (for older compilers) and cnofm.f (F77)
Contact: J. L. Blue
colloc++
A prototype C++ class library for implementing the method of Matrix Decomposition using Orthogonal Spline Collocation for elliptic boundary value problems.
Status: Not Maintained
Links: Source
Contact: K. A. Remington
Delaunay
Triangulations and Tetrahedralizations
Software for constrained Delauney triagularizations (2D) and tetrahedralizations (3D).
Status: Active Maintenance
Contact: J. Bernal
DIVERSE
DIVERSE is a cross-platform, open source, API for developing virtual reality applications. We have developed two sets of software to enhance its capabilities. There is a set of DIVERSE applications, including TIM (Things In Motion) to visualize time-series positional data, and XWand, to transmit data from shared memory into X windows mouse events. There is also a set of DIVERSE DSOs (Dynamic Shared Objects), separately compiled functionality that can be linked into a visualization program. These include functionality for isolating and moving individual objects within a visualization, and for interaction between applications and visualization programs.
Status: Active Development
Contact: A. Peskin
ENVELOPE
A program for calculating envelope curves for oscillatory data.
Status: Minimal Maintenance
Contact: M. A. McClain
f90gl
A fortran interface for Mesa, a freely distributable 3D graphics library with an API which is very similar to that of OpenGL, and GLUT, a window system independent API toolkit for writing OpenGL programs. It provides both fortran 77 and fortran 90 interfaces, and can also be used with native OpenGL implementations.
Status: Active Maintenance
Contact: W. F. Mitchell
FCNPAK
Fortran subroutines for the associated Legendre (Ferrers) functions.
Status: Not Maintained
Links: Source
Contact: D. W. Lozier
FERD
Fortran program package for unfolding radiation spectra.
Status: Not Maintained
Links: Source
Contact: B. W. Rust
FERDO
Fortran program packages for unfolding radiation spectra.
Status: Not Maintained
Links: FERDO
Contact: B. W. Rust
Format
Macsyma utilities for user-directed hierarchical structuring of expressions, as well as for directing simplifications to selected subexpressions. Emphasizes semantic rather than syntactic description of desired forms. Includes utilities for obtaining efficiently the coefficients of polynomials, trigonometric sums and power series.
Status: Not Maintained
Links: Source
Contact: B. R. Miller
Harwell-Boeing I/O
A collection of C procedures for reading and writing Harwell-Boeing matrix files. Harwell-Boeing is the principal ASCII exchange format for sparse matrices.
Status: Minimal Maintenance
Contacts: K. A. Remington or R. Pozo
HFFT3
High-order fast-direct solution of the Helmholtz equation on rectangular two- and three-dimensional domains.
Status: Not Maintained
Contact: R. F. Boisvert
IML++
A C++ templated library of modern iterative methods for solving both symmetric and nonsymmetric linear systems of equations. The algorithms are fully templated in that the same source code works for dense, sparse, and distributed matrices.
Status: Minimal Maintenance
Contacts: R. Pozo or K. A. Remington
IMPI
The IMPI (Interoperable MPI) tester is an on-line service for testing compliance of an MPI library with the IMPI specification. IMPI is a set of protocols, implemented within an MPI library, that allow two or more MPI libraries to operate as a single MPI library that spans two or more separately administered parallel computers. Any developer of an MPI library that will include IMPI support can use this tester during development to verify that their library will interoperate with other IMPI enabled MPI libraries. This tester is accessed over the Internet, using a simple Java applet for the user interface, and is implemented in Java to mimic one or more remote clusters running IMPI/MPI. The IMPI tester includes a set of tests that exercise each of the IMPI protocols, communicating with the user's cluster over TCP/IP sockets, and returns pass/fail results to the user.
Status: Active Development
Contact: W. L. George
INVAR
An interactive nonlinear least squares program especially suited for separable problems.
Status: Minimal Maintenance
Links: Source
Contact: B. W. Rust
JAMA
A linear algebra package for Java. Includes LU, QR, and singular value decompositions, solution of linear systems, least squares, and eigenvalue problems.
Status: Minimal Maintenance
Contacts: R. F. Boisvert, K. A. Remington, B. R. Miller or R. Pozo
Jampack
An extensible collection of cooperating classes designed to perform matrix computations in Java applications..
Status: Active Maintenance
Contact: G. W. Stewart
Java Classes
User interface classes which extend java.awt developed in conjunction with HotGAMS.
Status: Minimal Maintenance
Contact: B. R. Miller
LAPACK++
LAPACK extensions for high performance linear algebra computations. This version includes support for solving linear systems using LU, Cholesky, and QR matrix factorizations.
Status: Not Maintained
Contact: R. Pozo
Matran
Fortran 95 wrapper that implements matrix operations and computes matrix decompositions using Lapack and the Blas. Provides the flavor and convenience of coding in matrix-oriented systems like Matlab, Octave, etc.
Status: Active Development
Contact: G. W. Stewart
MGGHAT
MultiGrid Galerkin Hierarchical Adaptive Triangles: a Fortran program for the solution of general second order linear self-adjoint elliptic partial differential equations with Dirichlet, natural, or mixed boundary conditions on 2D polygonal domains (possibly with holes). MGGHAT uses a finite element method with linear, quadratic, or cubic elements (user selectable) over triangles. Adaptive refinement via newest vertex bisection and multigrid iteration are both based on a hierarchical basis formulation.
Status: Not Maintained
Links: User's Guide and Alternate source
Contact: W. F. Mitchell
MPI Data Type Tools (AutoMap and AutoLink)
AutoMap is a tool designed to simplify the creation of MPI data-types. It works as a source-to-source compiler reading directly from the user typea definitions AutoLink is a tool designed to transfer dynamic data-types (like graphs) using MPI. It works as a library, giving the user access to high level functions to transfer dynamic data-types
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
Newman
Newman is a software package for the exact solution of systems of linear equations with integer coefficients on parallel clusters.
Status: Active Maintenance
Contact: A. J. Kearsley
ODRPACK
Subprograms for fitting a linear or nonlinear model to data. Designed primarily for fitting when the independent as well as the dependent variables have significant errors, ODRPACK implements a highly efficient algorithm for solving the weighted orthogonal distance regression problem. It can also be used to solve the ordinary least squares problem where all of the errors are attributed to the observations of the dependent variable.
Status: Minimal Maintenance
Contact: J. Rogers
OOMMF
The OOMMF (Object Oriented Micromagnetic Modeling Framework) project is aimed at developing portable, extensible public domain programs and tools for micromagnetics. The end product will be a completely functional, user-friendly micromagnetic code, with a well documented, flexible programmer's interface to allow developers outside the OOMMF project to swap their own code in and out as desired. The guts of the code are being written in C++ with a Tcl/Tk (and in the future, possibly OpenGL) interface. Target systems include a wide range of Unix platforms, Windows NT, and Windows 95/98.
Status: Active Development
Contacts: M. J. Donahue or D. G. Porter
OOf
OOF (Object Oriented Finite elements) is a tool for reading images of material microstructures, assigning properties to features of the image, and analyzing macroscopic properties via finite element analysis.
Status: Active Development
Contact: S. Langer
package
Provides a new [package] command for managing Tcl packages. The [package] it provides is meant to be a 100% compatible replacement for the built-in command [package] provided by the Tcl library. It extends the interface of the built-in [package] to provide more control over managing package dependencies, and to provide a more robust package indexing scheme.
Status: Active Maintenance
Contact: D. G. Porter
PADE
PADE is a flexible, customizable environment for developing parallel applications that use the Parallel Virtual Machine (PVM) message-passing library. It provides an integrated framework for all phases of development of a message-passing parallel application: editing, compilation, execution, and performance monitoring and enhancement. The PADE package consists of an intuitive graphical user interface, a suite of PVM utilities, and extensive documentation in PostScript, ASCII, and HTML formats. PADE is most useful with a heterogeneous virtual machine consisting of multiple architectures and/or multiple file systems where it aids the parallel developer by helping to keep track of which source files must be sent and compiled on which hosts, sending the files, issuing the compilation commands, and displaying the results of the compilation on the developer's terminal
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
PHAML
PHAML (Parallel Hierarchical Adaptive MultiLevel) is a parallel implementation (SPMD message passing) of the techniques used by MGGHAT. This program is written in Fortran 90 and uses either PVM or MPI for message passing.
Status: Active Development
Contact: W. F. Mitchell
QUADPACK
Fortran subprograms for evaluating definite integrals of functions of one variable, including singular integrands and infinite intervals.
Status: Not Maintained
Contact: D. Kahaner
Regen
Regen3.2 models helium flow and heat transfer in a regenerator of the type used in cryocoolers.
Status: Minimal Maintenance
Contact: A. O'Gallagher
SLATEC
Common Mathematical Library
A collection of Fortran subprograms for a wide variety of mathematical problems. A primary impetus for the library development was to provide portable, non-proprietary, mathematical software for supercomputers at a consortium of government-sponsored research laboratories.
Status: Not Maintained
Contact: D. W. Lozier
spblas
NIST Sparse BLAS Library
A collection of C procedures implementing basic linear algebra operations for sparse matrix computations. Part of the ongoing BLAS Forum standardization efforts.
Status: Active Maintenance
Contacts: K. A. Remington or R. Pozo
SparseLib++
A C++ class library for efficient sparse matrix computations across various computational platforms.
Status: Minimal Maintenance
Contacts: R. Pozo or K. A. Remington
STARPAC
A Fortran subprogram library for statistical data analysis. Its primary applications are time series and nonlinear least squares analysis, but it also includes subprograms for normal random number generation, line printer plots, basic statistical analysis, and linear least squares regression. STARPAC emphasizes the statistical interpretation of computed results.
Status: Minimal Maintenance
Contact: J. Rogers
StopWatch
A Fortran 90 module for measuring execution time of program segments. It is designed to be a portable, easy-to-use means of measuring execution time. It supports the wall clock, CPU clock, a breakdown of the CPU clock into user and system times, and returns all times in seconds. It provides a simple means of determining which clocks are available, and the precision of those clocks.
Status: Minimal Maintenance
Links: User's Guide
Contact: W. F. Mitchell
TNT
Template Numerical Toolkit
A numerical toolkit for linear algebra based on the C++ Standard Template Library, together with specialization of generic algorithms for maximum efficiency.
Status: Active Development
Contact: R. Pozo
THREEDMD
A fast 3D elliptic solver for distributed memory machines. Based on a Fourier method for Hermite bicubic collocation. PVM implementation.
Status: Not Maintained
Links: Source
Contact: K. A. Remington
VFFTPACK
Fortran subprograms for the fast Fourier transform of multiple real sequences which have been optimized for vector processors. The package includes a variety of trigonometric transforms.
Status: Not Maintained
Contact: R. F. Boisvert
VFNLIB
A suite of portable Fortran subprograms for the vectorized evaluation of Bessel functions and modified Bessel functions of orders zero and one for a vector of real arguments.
Status: Not Maintained
Contacts: R. F. Boisvert or B. V. Saunders
VOLKSGRAPHER
A small and easy to use library for generating the most common types of two dimensional graphs used by scientists.
Status: Not Maintained
Links: Source
Contact: D. Kahaner
WebSubmit
WebSubmit is a Web-based utility providing access to applications on a collection of heterogeneous computing resources. Its goal is to make it easy to use computing resources via the Web without requiring knowledge of the specifics of unfamiliar operating systems and dynamic application environments. Users can effectively log into distinct computing environments and perform tasks without needing a detailed knowledge of their operating environment. A collection of machines, referred to as the cluster and determined by the site administrators, can be accessed through WebSubmit. Strong authentication using the Secure Sockets Layer protocol lets registered users connect to the system, and when validated by a WebSubmit authority, gives them access to a group of application modules. Each application module is presented as an HTML form; this form is filled out and submitted to the server, which then processes the request and executes the desired tasks on the specified remote system using another secure protocol. The system is flexible and extensible, and its modularity promotes ease of use, maintainability, and interface development.
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
Zoltan
A dynamic parallel load-balancing library for partitioning problems over sets of processors. Such capability is critical to applications where work loads and/or geometric locality change as computations proceed. In addition, Zoltan can be used as a parallel static partitioner for non-dynamic applications, such as traditional finite element methods. MCSD staff have contributed to the development of Zoltan, which was developed at Sandia National Laboratories.
Status: Active Development
Contact: W. F. Mitchell


Privacy Policy | Disclaimer | FOIA
NIST is an agency of the U.S. Commerce Department.
Last updated: 2007-08-15.
Contact