Closed ChrisRackauckas closed 3 years ago
I went through this paper https://www.math.uci.edu/~qnie/Publications/ja62.pdf. I talk about solving ODEs at steady state using adaptive implicit Euler with inexact solver (AIIE) method. I cannot access the second link pdf. I have some questions regarding SteadyStateDiffEq.jl:
After reading both of them, I am pretty sure that we have to implement this scheme:
For solving this ODE for the steady-state:
My initial thoughts are that since this scheme is suited better for steady-state solutions but has a significant overlap with Newton's method, what could be the possible way to implement it?
Instead of reinventing the whole wheel, it would be better to use the abstractions already written in NLsolve.jl
(iteration scheme). Still, I am wondering how to handle the adaptive delta change. I guess that could be done by providing an "augmented Jacobian" to the NLsolve (The term inv(delta)*I + F'(u)
) where F'(u) is the normal Jacobian. That would require separately handling NLsolve for SteadyStateDiffEqProblem because delta changes with each iteration and hence augmented Jacobian cannot be computed in normal ways. If we can handle calculating augmented Jacobian ourself for each iteration in SteadyState repo only, I guess that could work without writing code in NLsolve, which I am currently unclear about.
I could think of the naive way that working on the similar lines of NLsolve.jl
, implement the code as a whole in the SteadyStateDiffEq.jl repository. This could prove too strenuous and might be reinventing the whole wheel.
@ChrisRackauckas let me know your thoughts and help me design a suitable roadmap.
Stepsizing control
I guess the algorithm should have adaptive stepsize, please confirm it.
A simpler implementation for alpha(sigma_n):