- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm bringing in the preconditioned gmres solver with ilut into my nonlinear solver. I want to make sure I get this right for warm-starting, and also for updating the preconditioner. I couldn't find what to do in the docs.
To warm start gmres after a first solve pass has gone through, do I need to call dfgmres_init and dfgmres_check again, or can I just update the rhs and go straight to iterations, starting with RCI_request = 0?
Also, to restart from a new preconditioner, do I need to clean up all the memory and reinitialise the whole solve cycle, or can I just stop iterating, call dfgmres_init, generate the preconditioner, call dfgmres_check and start again with RCI_request = 0?
Thanks in advance,
Damien
To warm start gmres after a first solve pass has gone through, do I need to call dfgmres_init and dfgmres_check again, or can I just update the rhs and go straight to iterations, starting with RCI_request = 0?
Also, to restart from a new preconditioner, do I need to clean up all the memory and reinitialise the whole solve cycle, or can I just stop iterating, call dfgmres_init, generate the preconditioner, call dfgmres_check and start again with RCI_request = 0?
Thanks in advance,
Damien
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Could you please clarify your problem: you try to solve nonlinear system by fgmres with preconditioner or try to solve nonlinear system by your own solver that use fgmres internally internal that allow several fgmres loops?
With best regards,
Alexander Kalinkin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, I should have been clearer. It's my own nonlinear solver, using preconditioned gmres to solve the linear system internally.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
If I understood you correctly your solver could be organized by next way:
Loop over nonlinear solver
{.
On each nonlinear iteration
{dfgmres_init();
dcsrilut();
dfgmres_check();
loop over dfgmres();
dfgmres_get();}
.}
Its strongly recommended to call dfgmres_init() in beginning of each loop, in other way you need to set some parameters manually. Is it convenient for you?
With best regards,
Alexander Kalinkin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. I'm hoping to be able to reuse the preconditioner from previous nonlinear iterations to speed things up; this will be used on very large problems and dcsrilut() isn't parallel. I ran into problems before but I think it's because I wasn't callingdfgmres_init() and dfgmres_check() on every nonlinear iteration, only the first one. I'll try this and see how it goes.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Of course, you are able to reuse the preconditioner calculated on one nonlinear iteration on next iteration. As for me if you doesn't recalculate preconditioner several times on some nonlinear iteration your preconditioner will not good enoughprecond you linear system but it depends from your problem.
With best regards,
Alexander Kalinkin

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page