This is the UMFPACK Version 3.2 README file. UMFPACK: Copyright (c) 2002 by Timothy A. Davis, University of Florida, davis@cise.ufl.edu. All Rights Reserved. This is a terse overview of UMFPACK. Refer to the User Guide, UserGuide.ps (postscript) or UserGuide.pdf (PDF) for how to install and use UMFPACK. Description: UMFPACK is a set of routines for solving unsymmetric sparse linear systems, Ax=b, using the Unsymmetric MultiFrontal method. Written in ANSI/ISO C, with a Matlab (Version 6.0 and 6.1) interface. Authors: Timothy A. Davis (davis@cise.ufl.edu), University of Florida. UMFPACK Version 2.2.1 (MA38 in the Harwell Subroutine Library) is co-authored with Iain Duff, Rutherford Appleton Laboratory. Includes a modified version of COLAMD V2.0, by Stefan I. Larimore and Timothy A. Davis (davis@cise.ufl.edu), University of Florida. The COLAMD algorithm was developed in collaboration with John Gilbert, Xerox Palo Alto Research Center, and Esmond Ng, Lawrence Berkeley National Laboratory. Date, and version: Version 3.2, Jan. 1, 2002. Acknowledgements: This work was supported by the National Science Foundation, under grants DMS-9504974 and DMS-9803599. I would also like to thank the many researchers who provided sparse matrices from a wide range of domains and used earlier versions of UMFPACK/ MA38 in their applications, and thus assisted in the practical development of the algorithm (see http://www.cise.ufl.edu/research/sparse, future contributions of matrices are always welcome). The MathWorks, Inc., provided a pre-release of Matlab V6 which allowed me to release the umfpack mexFunction about 6 months earlier than I had originally planned. Penny Anderson (The MathWorks, Inc.), Anshul Gupta (IBM), and Friedrich Grund (WAIS) assisted in porting UMFPACK to different platforms. UMFPACK License: Your use or distribution of UMFPACK or any derivative code implies that you agree to this License. THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. Permission is hereby granted to use or copy this program, provided that the Copyright, this License, and the Availability of the original version is retained on all copies. User documentation of any code that uses this code or any derivative code must cite the Copyright, this License, the Availability note, and "Used by permission." If this code or any derivative code is accessible from within MATLAB, then typing "help umfpack" must cite the Copyright, and "type umfpack" must also cite this License and the Availability note. Permission to modify the code and to distribute modified code is granted, provided the Copyright, this License, and the Availability note are retained, and a notice that the code was modified is included. This software was developed with support from the National Science Foundation, and is provided to you free of charge. Availability: UMFPACK (including older versions, in Fortran) is available at http://www.cise.ufl.edu/research/sparse. MA38 is available in the Harwell Subroutine Library. This version of UMFPACK includes a modified form of COLAMD Version 2.0, originally released on Jan. 31, 2001, also available at http://www.cise.ufl.edu/research/sparse. COLAMD V2.0 is also incorporated as a built-in function in Matlab V6, by The MathWorks, Inc. (http://www.mathworks.com). COLAMD V1.0 appears as a column-preordering in SuperLU (SuperLU is available at http://www.netlib.org). -------------------------------------------------------------------------------- Files in this V3.2 (Jan. 1, 2002) distribution: -------------------------------------------------------------------------------- ---------------------------------------------------------------------------- Compiling umfpack.a and the umfpack mexFunction: ---------------------------------------------------------------------------- Makefile Unix Makefile Make.alpha Makefile additions for Compaq Alpha Make.generic Generic Makefile additions Make.linux Makefile additions for Linux Make.rs6000 Makefile additions for RS 6000 Make.sgi Makefile additions for SGI Make.solaris Makefile additions for Solaris mexopts.sh modified mexopts.sh to compile umfpack.mex* mexopts.sh.orig original mexopts.sh ---------------------------------------------------------------------------- Documentation: ---------------------------------------------------------------------------- ChangeLog change log License the UMFPACK License README this file UserGuide.bib references for user guide UserGuide.m4tex user guide source UserGuide.tex user guide in Latex (from UserGuide.m4tex) UserGuide.pdf user guide in PDF UserGuide.ps user guide in postscript UserGuide.dvi user guide in DVI ---------------------------------------------------------------------------- Matlab m-functions: ---------------------------------------------------------------------------- umfpack.m for "help umfpack" only umfpack_demo.m a full umfpack demo umfpack_details.m the details of how to use umfpack umfpack_make.m compile the umfpack mexFunction umfpack_report.m report statistics umfpack_simple.m a simple umfpack demo umfpack_btf.m solve Ax=b using umfpack and dmperm ---------------------------------------------------------------------------- User-callable C routines: ---------------------------------------------------------------------------- umfpack.h include file for user programs umfpack_col_to_triplet.[ch] convert col form to triplet umfpack_defaults.[ch] set Control defaults umfpack_free_numeric.[ch] free Numeric object umfpack_free_symbolic.[ch] free Symbolic object umfpack_get_lunz.[ch] get nz's in L and U umfpack_get_numeric.[ch] get Numeric object umfpack_get_symbolic.[ch] get Symbolic object umfpack_numeric.[ch] numeric factorization umfpack_qsymbolic.[ch] symbolic factorization, user Q umfpack_report_control.[ch] print Control settings umfpack_report_info.[ch] print Info statistics umfpack_report_matrix.[ch] print col or row-form matrix umfpack_report_numeric.[ch] print Numeric object umfpack_report_perm.[ch] print permutation umfpack_report_status.[ch] print return status umfpack_report_symbolic.[ch] print Symbolic object umfpack_report_triplet.[ch] print Triplet matrix umfpack_report_vector.[ch] print double vector umfpack_solve.[ch] solve a linear system umfpack_symbolic.[ch] symbolic factorization umfpack_timer.[ch] timer umfpack_transpose.[ch] transpose a matrix umfpack_triplet_to_col.[ch] convert triplet to col form umfpack_wsolve.[ch] solve a linear system ---------------------------------------------------------------------------- Matlab mexFunction ---------------------------------------------------------------------------- umfpackmex.c ---------------------------------------------------------------------------- C demo programs ---------------------------------------------------------------------------- umfpack_simple.c a simple demo umfpack_demo.c a full demo umfpack_demo.out output of umfpack_demo with Make.generic umfpack_demo.out64 output of umfpack_demo with Make.solaris, in LP64 mode and using the Sun Performance Library BLAS. umfpack_l_demo.c a full demo (long integer version) umfpack_l_demo.out output of umfpack_l_demo with Make.generic umfpack_l_demo.out64 output of umfpack_l_demo with Make.solaris, in LP64 mode and using the Sun Performance Library BLAS. ---------------------------------------------------------------------------- Non-user-callable C code: ---------------------------------------------------------------------------- umf_analyze.[ch] symbolic factorization of A'*A umf_apply_order.[ch] apply column etree postorder umf_assemble.[ch] assemble elements into current front umf_blas3_update.[ch] rank-k update umf_build_tuples.[ch] construct tuples for elements umf_build_tuples_usage.[ch] determine memory usage for umf_build_tuples umf_colamd.[ch] COLAMD pre-ordering, modified for UMFPACK umf_create_element.[ch] create a new element umf_dump.[ch] debugging routines umf_extend_front.[ch] extend the current frontal matrix umf_free.[ch] free memory umf_garbage_collection.[ch] compact Numeric->Memory umf_get_memory.[ch] make Numeric->Memory bigger umf_init_front.[ch] initialize a new frontal matrix umf_is_permutation.[ch] checks the validity of a permutation vector umf_kernel.[ch] the main numeric factorization kernel umf_kernel_init.[ch] initializations for umf_kernel umf_kernel_init_usage.[ch] determine memory usage for umf_kernel_init umf_kernel_wrapup.[ch] wrapup for umf_kernel umf_local_search.[ch] local row and column pivot search umf_lsolve.[ch] solve Lx=b umf_ltsolve.[ch] solve L'x=b umf_malloc.[ch] malloc some memory umf_mem_alloc_element.[ch] allocate element in Numeric->Memory umf_mem_alloc_head_block.[ch] alloc. block at head of Numeric->Memory umf_mem_alloc_tail_block.[ch] alloc. block at tail of Numeric->Memory umf_mem_free_tail_block.[ch] free block at tail of Numeric->Memory umf_mem_init_memoryspace.[ch] initialize Numeric->Memory umf_order_front_tree.[ch] column etree post-ordering umf_realloc.[ch] realloc memory umf_report_perm.[ch] print a permutation vector umf_report_vector.[ch] print a double vector umf_row_search.[ch] look for a pivot row umf_scale_column.[ch] divide the pivot column by the pivot and log LU umf_set_stats.[ch] set statistics (final or estimates) umf_solve.[ch] solve a linear system umf_symbolic_usage.[ch] determine memory usage for Symbolic object umf_transpose.[ch] transpose a matrix in row or col form umf_tuple_lengths.[ch] determine the tuple list lengths umf_usolve.[ch] solve Ux=b umf_utsolve.[ch] solve U'x=b umf_valid_numeric.[ch] checks the validity of a Numeric object umf_valid_symbolic.[ch] check the validity of a Symbolic object ---------------------------------------------------------------------------- Non-user-accessible C include files: ---------------------------------------------------------------------------- umf_config.h configuration file umf_internal.h definitions internal to UMFPACK umf_version.h version definitions (int or long)