On Tue, May 8, 2012 at 5:23 AM, Dominik Szczerba <dominik at itis.ethz.ch>wrote:
> Hi, I do set my own KSP to SNES: > > > ierr = SNESCreate(PETSC_COMM_WORLD, &snes); CHKERRQ(ierr); > ierr = SNESSetKSP(snes, ksp); CHKERRQ(ierr); > > I set the ksp solver type, tolerances etc. Then I register > FormFunction using SNESSetFunction, and implement it as; > > > PetscErrorCode FormFunction(SNES snes, Vec x, Vec f, void *ctx) > > Now my question: is "x" in the signature above expected to be the same > as "x" obtained after a linear solve in the KSP object used in SNES > (that I pass inside ctx), or will "x" be generally differently-valued > due to e.g. the line search performed? > Newton-based SNES solves for snes->vec_sol_update, but evaluates at snes->vec_sol and using another vector inside the line search. If you are writing code that depends on the Vec being the same, you're doing it wrong. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120508/0817ea96/attachment.htm>
