diff --git a/SimPEG/Solvers/Mumps.py b/SimPEG/Solvers/Mumps.py new file mode 100644 index 00000000..251ccbdb --- /dev/null +++ b/SimPEG/Solvers/Mumps.py @@ -0,0 +1,28 @@ +from mumps import DMumpsContext + +class MumpsSolver(): + A = None + ctx = None + x = None + + def __init__(self, A, **kwagrs): + + self.ctx = DMumpsContext(sym=0, par=1) + + if self.ctx.myid ==0: + self.A = A + self.ctx.set_icntl(14, 60) + self.ctx.set_centralized_sparse(A) + + self.ctx.set_silent() + self.ctx.run(job=4) # Factorization + + def solve(self,b): + self.x = b.copy() + self.ctx.set_rhs(self.x) + self.ctx.run(job=3) # Solve + + return self.x + + def clean(self): + self.ctx.destroy() diff --git a/SimPEG/Solvers/__init__.py b/SimPEG/Solvers/__init__.py new file mode 100644 index 00000000..041fdbf5 --- /dev/null +++ b/SimPEG/Solvers/__init__.py @@ -0,0 +1 @@ +from Mumps import Mumps \ No newline at end of file