Skip to content

basnijholt/mumpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mumpy

Python bindings for the MUMPS package MUMPS: a parallel sparse direct solver

Installation

On Linux

Either install mumps with:

sudo apt-get instal libmumps-scotch-dev 

Both on Linux and OSX

or use the conda package on conda-forge

conda config --add channels conda-forge conda install cython mumps numpy scipy libgfortran pip install git+git@github.com:basnijholt/mumpy.git 

and use the following build.conf (if on Linux, not needed for OSX)

[mumps] include_dirs = $CONDA_PREFIX/include library_dirs = $CONDA_PREFIX/lib libraries = zmumps mumps_common pord metis esmumps scotch scotcherr mpiseq gfortran extra_link_args = -Wl,-rpath=$CONDA_PREFIX/lib 

Usage

import scipy.sparse.linalg as sla from scipy.sparse import identity import mumpy.mumps as mumps def sparse_diag(matrix, k, sigma, **kwargs): """Call sla.eigsh with mumps support.   Please see scipy.sparse.linalg.eigsh for documentation.    Notes  -----  mumpy only works with complex numbers at the moment.  """ class LuInv(sla.LinearOperator): def __init__(self, A): inst = mumps.MUMPSContext() inst.analyze(A, ordering='pord') inst.factor(A) self.solve = inst.solve sla.LinearOperator.__init__(self, A.dtype, A.shape) def _matvec(self, x): return self.solve(x.astype(self.dtype)) opinv = LuInv(matrix - sigma * identity(matrix.shape[0])) return sla.eigsh(matrix, k, sigma=sigma, OPinv=opinv, **kwargs)

About

Python bindings for the MUMPS package MUMPS: a parallel sparse direct solver

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages