From 0691b46d38fd110b34966b2ba298be1c1a3d59d6 Mon Sep 17 00:00:00 2001 From: Christoph Groth <christoph.groth@cea.fr> Date: Thu, 16 Feb 2012 12:53:05 +0100 Subject: [PATCH] work around memory leak in scipy.sparse.linalg --- kwant/solvers/sparse.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/kwant/solvers/sparse.py b/kwant/solvers/sparse.py index 559d17c9..c0568011 100644 --- a/kwant/solvers/sparse.py +++ b/kwant/solvers/sparse.py @@ -8,6 +8,20 @@ import scipy.sparse as sp import scipy.sparse.linalg as spl from kwant import physics, system +# This patches a memory leak in scipy: +# http://projects.scipy.org/scipy/ticket/1597 +# +# TODO: Remove this code once it is likely that the official bug fix has +# reached all of our users. +def del_for_umfpackcontext(self): + self.free() +try: + if not hasattr(spl.dsolve.umfpack.UmfpackContext, '__del__'): + spl.dsolve.umfpack.UmfpackContext.__del__ = del_for_umfpackcontext +except: + pass +del del_for_umfpackcontext + def make_linear_sys(sys, out_leads, in_leads, energy=0, force_realspace=False): """ -- GitLab