From 34a28c89b5b2ae26472d330ea7bc1c958bc3b689 Mon Sep 17 00:00:00 2001 From: Carl-Martin Pfeiler <carl-martin.pfeiler@asc.tuwien.ac.at> Date: Mon, 19 Aug 2019 16:00:08 +0200 Subject: [PATCH] guess(x0 in gmres) for MPS --- integrators/mps.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/integrators/mps.py b/integrators/mps.py index 98b0701..33138a2 100644 --- a/integrators/mps.py +++ b/integrators/mps.py @@ -312,6 +312,32 @@ class MPS(_integrator._Integrator, \ self._RHS = (2.0 / self._k) * (self._Mh_diag * self._Mag.m.vec.FV().NumPy()) +#------------------------------------------------------------------------------# + + + def _UpdateGuess(self): + if(self.parameters.guessType == "old"): + self._UpdateGuess_Old() + elif(self.parameters.guessType == None): + self._UpdateGuess_None() + else: + raise ValueError("guessType = ", self.parameters.guessType, "not known") + + +#------------------------------------------------------------------------------# + + + def _UpdateGuess_Old(self): + self._guess = self._Mag_eta.m.vec.FV().NumPy() + + +#------------------------------------------------------------------------------# + + + def _UpdateGuess_None(self): + self._guess = None + + #------------------------------------------------------------------------------# @@ -340,9 +366,12 @@ class MPS(_integrator._Integrator, \ self._Compute_LHS_iter() LHS = LHS_fix + self._LHS_iter + self._UpdateGuess() + self._Mag_eta.m.vec.FV().NumPy()[:], succ \ - = scipy.sparse.linalg.gmres(LHS, RHS , x0=None \ - , tol=self._solvetol, maxiter=4000, M=self._preconditioner, callback=self._callback) + = scipy.sparse.linalg.gmres(LHS, RHS \ + , x0=self._guess, tol=self._solvetol, maxiter=4000 \ + , M=self._preconditioner, callback=self._callback) diff_gf.vec.FV().NumPy()[:] = self._Mag_eta.m.vec.FV().NumPy()-oldIterate itError = sqrt( Integrate(diff_cf*diff_cf, self._GetMesh()) ) -- GitLab