def test03_basic(self): """ solve """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) myobj.solve(self.uMdiag.vector(), myobj.Mdiag) diff = (myobj.one - self.uMdiag.vector()).array() self.assertTrue(np.linalg.norm(diff)/np.linalg.norm(myobj.one.array()) < 1e-14)
def test04_mult(self): """ overloaded * operator """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) self.uMdiag.vector().axpy(1.0, myobj*myobj.one) diff = (myobj.Mdiag - self.uMdiag.vector()).array() self.assertTrue(np.linalg.norm(diff)/np.linalg.norm(myobj.Mdiag.array()) < 1e-14)
def test01_entries(self): """ Lump matrix """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) err = 0.0 for index, ii in enumerate(self.M.array()): err += abs(ii.sum() - myobj.Mdiag[index]) self.assertTrue(err < index*1e-16)
def test02(self): """ Invert lumped matrix """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) err = 0.0 for ii in range(len(myobj.Mdiag.array())): err += abs(1./myobj.Mdiag[ii] - myobj.invMdiag[ii]) self.assertTrue(err < ii*1e-16)
def test04_mult(self): """ overloaded * operator """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) self.uMdiag.vector().axpy(1.0, myobj * myobj.one) diff = (myobj.Mdiag - self.uMdiag.vector()).array() self.assertTrue( np.linalg.norm(diff) / np.linalg.norm(myobj.Mdiag.array()) < 1e-14)
def test02(self): """ Invert lumped matrix """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) err = 0.0 for ii in range(len(myobj.Mdiag.array())): err += abs(1. / myobj.Mdiag[ii] - myobj.invMdiag[ii]) self.assertTrue(err < ii * 1e-16)
def test01_entries(self): """ Lump matrix """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) err = 0.0 for index, ii in enumerate(self.M.array()): err += abs(ii.sum() - myobj.Mdiag[index]) self.assertTrue(err < index * 1e-16)
def test03_basic(self): """ solve """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M) myobj.solve(self.uMdiag.vector(), myobj.Mdiag) diff = (myobj.one - self.uMdiag.vector()).array() self.assertTrue( np.linalg.norm(diff) / np.linalg.norm(myobj.one.array()) < 1e-14)
def test01_set(self): """ Set operator """ myobj = LumpedMatrixSolver(self.V) myobj.set_operator(self.M)
def test00(self): """ Create a lumped solver """ myobj = LumpedMatrixSolver(self.V)