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

Question regarding choice of Newton solver in IDA #594

Open
ianabel opened this issue Oct 22, 2024 · 2 comments
Open

Question regarding choice of Newton solver in IDA #594

ianabel opened this issue Oct 22, 2024 · 2 comments
Labels

Comments

@ianabel
Copy link

ianabel commented Oct 22, 2024

IDA provides a default Newton method (Modified Newton with no globalization) for solving the nonlinear algebraic system at every timestep. However, IDA also implements a Newton+Linesearch algorithm which is (as far as I can tell) only used from within IDACalcIC, and cannot be selected as the nonlinear solver for the per-timestep systems.

Is there a deep reason for not using linesearch globalization with the systems that IDA produces ? I am considering implementing a custom SUNNonlinearSolver to do some sort of parallelized Newton+LS and wondered if this was known to be a bad idea :)

@ianabel ianabel added the triage label Oct 22, 2024
@cswoodward
Copy link
Collaborator

cswoodward commented Oct 22, 2024

Because IDA uses adaptive step sizes, there is a general assumption that steps will not be so large that globalization will be necessary with Newton's method. If Newton fails, IDA will cut the time step and recompute it. The default max number of iterations for Newton is kept low to minimize costs for these conditions. Do you have a problem with excessive Newton iteration counts with IDA?

@balos1 balos1 added question and removed triage labels Oct 22, 2024
@ianabel
Copy link
Author

ianabel commented Oct 23, 2024

I have not seen IDA do this currently, but I'm about to embark on a process of tuning the adaptive stepper to make the timesteps as long as possible. I'm also comparing to a code that does wind up thrashing its newton solver somewhat, and wanted to avoid this with my IDA implementation.

I guess the correct solution is to tune the adaptive steps so that the Newton iteration converges in a small number of iterations, but never leaves the region where one would need a sufficient-decrease + backtrack approach.

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

No branches or pull requests

3 participants