I am planning to use differentialEquations.jl to solve a stiff system of ordinary differential equations in which the Jacobian is sparse with dense blocks. Such systems are well known in this community as they appear in networks with dynamics (for e.g. biology to chemistry) prescribed on the nodes of the network.
Here is what I am wondering about.
1/ Non-Linear Solver at Each Time Step
1.1/ Can the performance of the non-linear solver at each time step be monitored (equivalent of -snes_monitor in PETSc e.g.)
1.2/ Can the setting of the non-linear solver (tolerances, Jacobians approximations) be changed
2/ Linear Solver at Each Non-Linear Step
Can the linear solver (preconditioned Krylov method) be customized and monitored?
3/ Sparsity structure of the Jacobian
The ODE has the form \dot{x} = A x + f(x) leading to a sparse Jacobian with dense blocks. Can the SplitFunction be used to specify an additive preconditioned that treats the contribution A and Jac(f(x)) separately?