On Wed, Oct 9, 2013 at 3:25 PM, Mark F. Adams <[email protected]> wrote:
> I see this in SNESSetUp doc: > > For basic use of the > SNES<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNES.html#SNES> > solvers > the user need not explicitly call > SNESSetUp<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetUp.html#SNESSetUp>(), > since these actions will automatically occur during the call to > SNESSolve<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSolve.html#SNESSolve>(). > However, if one wishes to control this phase separately, > SNESSetUp<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetUp.html#SNESSetUp>() > should be called after > SNESCreate<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESCreate.html#SNESCreate>() > and optional routines of the form SNESSetXXX(), but before > SNESSolve<http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSolve.html#SNESSolve> > (). > > > I hit this error line in SNESSetUp: > > if (snes->vec_rhs == snes->vec_sol) > SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_IDN,"Solution vector cannot be right > hand side vector"); > > I put this in a debugger and found that these are both 0 (hence equal). > It is not obvious what SNESSetXXX I might be missing. I've appended what > setxxx stuff I'm doing. > > Mark > > ! Set function evaluation routine and vector > call SNESSetFunction(solver%snes,solver%rVec2,FormFunction,solver,ierr) > > call > SNESSetJacobian(solver%snes,solver%KKTmat,solver%KKTmat,FormJacobian,solver,ierr) > > ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > ! Customize nonlinear solver; set runtime options > ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > ! Set runtime options (e.g., -snes_monitor -snes_rtol <rtol> -ksp_type > <type>) > call SNESSetFromOptions(solver%snes,ierr) > > call SNESSetUp(solver%snes,ierr) ! pre setup, same as (old) KSP > Your Fortran is hurting my eyes :) Is solver%rVec2 == 0? Matt -- 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
