SUPERLU, C++ programs which illustrate the use of the SUPERLU library for the fast direct solution of large sparse systems of linear equations.
Although SUPERLU is written in C, these examples show how a C++ program can pass data to SUPERLU and receive results computed by it.
SUPERLU contains a set of subroutines to solve a sparse linear system A*X=B. It uses Gaussian elimination with partial pivoting (GEPP). The columns of A may be preordered before factorization; the preordering for sparsity is completely separate from the factorization.
SUPERLU is implemented in ANSI C, and must be compiled with an ANSI C compiler. It provides functionality for both real and complex matrices, in both single and double precision. The initial letter of a routine name indicates the arithmetic type and precision:
SUPERLU includes functions to read a sparse matrix from a file in the Harwell-Boeing sparse matrix format.
Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from U.S. Dept. of Energy)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
SUPERLU is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version.
CC, a data directory which contains a description and examples of the CC format, ("compressed column") for storing a sparse matrix, including a way to write the matrix as a set of three files.
CG_RC, a C++ library which implements the conjugate gradient method for solving a positive definite sparse linear system A*x=b, using reverse communication.
HB, a data directory which contains examples of Harwell Boeing (HB) files, a sparse matrix file format;
MGMRES, a C++ library which applies the restarted GMRES algorithm to solve a sparse linear system, by Lili Ju.
ST_TO_CC, a C library which converts sparse matrix data from Sparse Triplet (ST) format to Compressed Column (CC) format.
SUPERLU_OPENMP, C++ programs which illustrate how to use the SUPERLU library with the OpenMP parallel programming interface, which applies a fast direct solution method to solve sparse linear systems, by James Demmel, John Gilbert, and Xiaoye Li.
Many of the examples read the matrix from a file, which uses the Harwell-Boeing sparse matrix format. These matrices include:
C_SAMPLE uses CGSSV to solve a 5x5 system. Single precision complex arithmetic is used.
C_SAMPLE_HB reads a 5x5 matrix from a file in Harwell-Boeing (HB) format, into compressed column (CC) format, and then uses CGSSV to solve the linear system. Single precision complex arithmetic is used.
C_SAMPLE_ST reads a 5x5 matrix from a file in Sparse Triplet (ST) format, into compressed column (CC) format, and then uses CGSSV to solve the linear system. Single precision complex arithmetic is used.
D_SAMPLE uses DGSSV to solve a 5x5 system. Double precision real arithmetic is used.
D_SAMPLE_HB reads a 5x5 matrix from a file in Harwell-Boeing (HB) format, into compressed column (CC) format, and then uses DGSSV to solve the linear system. Double precision real arithmetic is used.
D_SAMPLE_ST reads a 5x5 matrix from a file in Sparse Triplet (ST) format, into compressed column (CC) format, and then uses DGSSV to solve the linear system. Double precision real arithmetic is used.
S_SAMPLE uses SGSSV to solve a 5x5 system. Single precision real arithmetic is used.
S_SAMPLE_HB reads a 5x5 matrix from a file in Harwell-Boeing (HB) format, into compressed column (CC) format, and then uses SGSSV to solve the linear system. Single precision real arithmetic is used.
S_SAMPLE_ST reads a 5x5 matrix from a file in Sparse Triplet (ST) format, into compressed column (CC) format, and then uses SGSSV to solve the linear system. Single precision real arithmetic is used.
Z_SAMPLE uses ZGSSV to solve a 5x5 system. Double precision complex arithmetic is used.
Z_SAMPLE_HB reads a 5x5 matrix from a file in Harwell-Boeing (HB) format, into compressed column (CC) format, and then uses ZGSSV to solve the linear system. Double precision complex arithmetic is used.
Z_SAMPLE_ST reads a 5x5 matrix from a file in Sparse Triplet (ST) format, into compressed column (CC) format, and then uses ZGSSV to solve the linear system. Double precision complex arithmetic is used.
You can go up one level to the C++ source codes.