SciML / SteadyStateDiffEq.jl

Solvers for steady states in scientific machine learning (SciML)
Other
30 stars 22 forks source link

Pseudo transient methods #15

Closed ChrisRackauckas closed 3 years ago

ChrisRackauckas commented 4 years ago
utkarsh530 commented 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:

  1. Do we currently have support for Laplacian operator, i.e. the diffusion term?
  2. What exactly I have to implement in this issue? My initial guess is Something on the lines of RootFind algorithm using AIIE Method? However, I found the alternative link https://ctk.math.ncsu.edu/PAPERS/Kelley_Liao_2013.pdf (I guess its the same paper).

After reading both of them, I am pretty sure that we have to implement this scheme:

image

For solving this ODE for the steady-state:

image

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.

utkarsh530 commented 3 years ago

Stepsizing control image I guess the algorithm should have adaptive stepsize, please confirm it.

A simpler implementation for alpha(sigma_n): image

ChrisRackauckas commented 3 years ago

https://projects.ncsu.edu/crsc//reports/ftp/pdf/crsc-tr02-18.pdf

ChrisRackauckas commented 3 years ago

https://epubs.siam.org/doi/abs/10.1137/S0036142903431298?journalCode=sjnaam