Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pseudo transient methods #15

Closed
ChrisRackauckas opened this issue Aug 18, 2019 · 4 comments
Closed

Pseudo transient methods #15

ChrisRackauckas opened this issue Aug 18, 2019 · 4 comments

Comments

@ChrisRackauckas
Copy link
Member

@utkarsh530
Copy link
Member

utkarsh530 commented Jan 6, 2021

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
Copy link
Member

utkarsh530 commented Jan 6, 2021

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

A simpler implementation for alpha(sigma_n):
image

@ChrisRackauckas
Copy link
Member Author

@ChrisRackauckas
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants