Mentions légales du service

Skip to content
Snippets Groups Projects

Activate null pivot detection for mumps

Merged MARAIT Gilles requested to merge feature/pymumps into master
1 file
+ 6
12
Compare changes
  • Side-by-side
  • Inline
+ 6
12
@@ -340,6 +340,8 @@ class Mumps():
def setup(self, A):
self.init(A)
# Activate "null pivot detection"
self.driver.set_icntl(24, 1)
self.factorize()
def init(self, A):
@@ -363,12 +365,8 @@ class Mumps():
self.driver.drive(2) # Facto
self.is_facto = True
def solve(self, b, inplace=False):
if inplace: # Not sure about that...
x = b
else:
x = b.copy()
self.driver.set_RHS(x)
def solve(self, b):
self.driver.set_RHS(b)
if self.is_facto:
self.driver.drive(3)
else:
@@ -376,11 +374,7 @@ class Mumps():
self.driver.drive(6)
self.is_facto = False
if inplace:
x = self.driver.get_solution()
return x
else:
return self.driver.get_solution()
return self.driver.get_solution()
def schur(self, A, interface):
self.init(A)
@@ -399,7 +393,7 @@ class Mumps():
x = np.zeros_like(b)
x[self.interface] = y # x = [0, y]
x = b - self.A @ x # x = [bI-AIG y, ...]
self.solve(x, inplace=True) # x = [AII_inv (bI-AIG y), ...]
x = self.solve(x) # x = [AII_inv (bI-AIG y), ...]
x[self.interface] = y # x = [AII_inv (bI-AIG y), y]
return x
Loading