On Tue, Mar 11, 2014 at 12:46 AM, Fande Kong <[email protected]> wrote:
> Thanks, > Never mail me personally. That is what the list is for. > If we follow a), we can not change any options from command line for the > second solve. > No, you miss the whole point of changing the prefix: SNESSetOptionsPrefix(snes, "second_"); so that afterwards second_pc_type lu will be picked up by the second call to SNESSetFromOptions(). However, as I said before, I think there is no reason to do this. Matt > On Mon, Mar 10, 2014 at 10:35 PM, Matthew Knepley <[email protected]>wrote: > >> On Mon, Mar 10, 2014 at 11:29 PM, Fande Kong <[email protected]> wrote: >> >>> Hi all, >>> >>> I am trying to solve two different nonlinear equations. I first solve >>> the first nonlinear equation using a snes within which a ksp is >>> preconditioned by a pcasm. And then I want to use the solution of the first >>> nonlinear equation as an initial guess to solve the second nonlinear >>> equation, but this time I want to switch the preconditioner to pcmg. How >>> could I finish this by creating snes only once, then using snessolve() >>> twice, and switching preconditioner for linear solvers? >>> >> >> It seems like you gain nothing at all by reusing the SNES, and complicate >> your code. I would not do it. >> >> If you insist, you can >> >> a) Change the prefix, and call SNESSetFromOptions() before the second >> solve >> >> b) Pull out the PC (SNESGetKSP, SNESGetPC) and set it there >> >> Note that in any event, you will have to reset the function/Jacobian >> methods for the second solve. >> >> Thanks, >> >> Matt >> >> >>> Fande >>> >> >> >> >> -- >> What most experimenters take for granted before they begin their >> experiments is infinitely more interesting than any results to which their >> experiments lead. >> -- Norbert Wiener >> > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
