From c0fbbd6adb6d9c45f3dcf4b46e70a03da37e4ee5 Mon Sep 17 00:00:00 2001 From: Pauli Virtanen <pauli.t.virtanen@jyu.fi> Date: Mon, 15 Jan 2024 14:28:24 +0200 Subject: [PATCH] solver: don't reset preconditioner on initial continuation Reusing same preconditioner for the continuation is a little bit faster. --- usadelndsoc/solver.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/usadelndsoc/solver.py b/usadelndsoc/solver.py index c8e2783..04c81ea 100644 --- a/usadelndsoc/solver.py +++ b/usadelndsoc/solver.py @@ -394,12 +394,12 @@ class Solver: minw = max(1e-6, 0.25 * abs_re_w) steps = [0.75**k for k in range(50) if 0.75**k > abs_re_w / 5] try: + self._M = M = None for domega in steps: _log_solve.debug(f" Continuation step {domega}") self._core.omega = old_omega + domega * ( 1 if np.real(old_omega) >= 0 else -1 ) - self._M = M = None self._Phi[...] = self._solve( eval_rhs, eval_jac_mul, @@ -421,7 +421,8 @@ class Solver: if np.isnan(self._Phi).any(): break _log_solve.debug(f" continuation step 0") - self._M = M = None + else: + self._M = M = None return self._solve( eval_rhs, eval_jac_mul, -- GitLab