# Coverage for pySDC/projects/parallelSDC/GeneralizedFisher_1D_FD_implicit_Jac.py: 100%

## 12 statements

, created at 2024-09-20 17:10 +0000

1import scipy.sparse as sp

2import numpy as np

3from scipy.sparse.linalg import spsolve

5from pySDC.implementations.problem_classes.GeneralizedFisher_1D_FD_implicit import generalized_fisher

8# noinspection PyUnusedLocal

9class generalized_fisher_jac(generalized_fisher):

10 def eval_jacobian(self, u):

11 """

12 Evaluation of the Jacobian of the right-hand side

14 Args:

15 u: space values

17 Returns:

18 Jacobian matrix

19 """

21 # noinspection PyTypeChecker

22 dfdu = self.A[1:-1, 1:-1] + sp.diags(self.lambda0**2 - self.lambda0**2 * (self.nu + 1) * u**self.nu, offsets=0)

24 return dfdu

26 def solve_system_jacobian(self, dfdu, rhs, factor, u0, t):

27 """

28 Simple linear solver for (I-dtA)u = rhs

30 Args:

31 dfdu: the Jacobian of the RHS of the ODE

32 rhs: right-hand side for the linear system

33 factor: abbrev. for the node-to-node stepsize (or any other factor required)

34 u0: initial guess for the iterative solver (not used here so far)

35 t: current time (e.g. for time-dependent BCs)

37 Returns:

38 solution as mesh

39 """

41 me = self.dtype_u((self.init[0], self.init[1], np.dtype('complex128')))

42 me[:] = spsolve(sp.eye(self.nvars) - factor * dfdu, rhs)

43 return me