Matlab interface to LUSOL
Fortran Matlab C Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
gen
matlab
src
.gitignore
CHANGES.md
LICENSE.md
NOTES.md
README.md
makefile

README.md

LUSOL

LUSOL maintains LU factors of a square or rectangular sparse matrix.

This repository provides LUSOL source code and a Matlab interface.

The code is distributed under the terms of the MIT License or the BSD License.

Contents

  • gen/: code generation scripts and specification files
  • matlab/: Matlab interface code
  • src/: LUSOL Fortran code
  • LICENSE: [Common Public License][CPL]
  • makefile: GNU Make file to build interface

Download and install

Pre-built downloads are available on the Github release page.

Installation simply requires adding the matlab subdirectory to your Matlab path. This may be done with Matlab's addpath function.

If the interface has not been built, please follow the directions below.

Basic usage

In Matlab:

% get L and U factors
[L U P Q] = lusol(A);

See >>> help lusol.

Advanced usage

In Matlab:

% create lusol object
mylu = lusol_obj(A);

% solve with lusol object (ie x = A\b)
x = mylu.solveA(b);

% update factorization to replace a column
mylu.repcol(v,1);

% solve again with updated factorization
x1 = mylu.solveA(b);

See >>> help lusol_obj.

Build

Environment

The build environments as of 2016-01-26 are:

  • Fedora 21 & Matlab 2013b
  • Mac OS X 10.11 & Matlab 2015b

Building the LUSOL interface in other environments may require modification of makefile and matlab/lusol_build.m.

Requirements

Linux:

  • make
  • gcc
  • gfortran
  • Matlab

Mac:

  • Xcode for clang and make
  • gfortran (possibly via Homebrew)
  • Matlab

Notes:

  • The matlab binary must be on the system PATH.
  • python3 is required to generate the interface code. However, the interface code is pre-generated and included in the repository.
  • It is necessary to launch Xcode and accept the license agreement before building the interface.
  • The smaller Xcode Command Line Tools package does not appear to work with Matlab 2015b. The full Xcode install is required.

Setup mex

Matlab's mex compiler driver must be configured to use the appropriate C compiler. This can be achieved by executing mex -setup from the Matlab prompt or operating system terminal. On Linux the selected compiler must be the correct version of gcc. On Mac OS X 10.9 the selected compiler must be clang. It is a good idea to match the compiler suggested on the Mathworks supported compilers page. See this note on Matlab compatibility with Xcode 7.

Install gfortran on Mac OS X

  1. Install Homebrew
  2. $ brew install gcc

Steps

From the base directory:

$ make
$ make matlab

Test:

$ make matlab_test

See <NOTES.md> for example build output.

Notes

The basic requirements to build LUSOL are GNU make, gfortran, a C compiler, and Matlab. The build works with gcc on Linux and clang on Mac OS X. It may be necessary to modify the compiler variables in the makefile (CC, F90C, and F77C) depending on the operating system and environment.

The matlab executable must be on the system path. On Mac OS X with Matlab R2015b this is achieved with:

$ export PATH=/Applications/MATLAB_R2015b.app/bin:$PATH

The makefile may have to be modified on Mac OS X depending on versions of Matlab and gfortran.

Authors