> > It seems like first, the (snes->vec_rhs == snes->vec_sol) test should be > moved to SNESSolve where these are apparently set. > > This is not good enough since the next lines will fail if snes->vec_sol is > NULL.
That's what I suggested below. I can test this now if you like. Mark > I think we do not to substitute vec_func for vec_sol, but > we also need to move creation of the update vector since it must be the size > of the solution. Will do it now. > > Matt > > Second can we use snes->vec_func instead of snes->vec_sol here? This would > remove all dependance on vec_rhs and vec_sol in SNESSetup. > > Mark > > ! Extract global and local vectors from DM; then duplicate for remaining > ! vectors that are the same types > call MatGetVecs(solver%KKTmat,solver%xVec2,solver%bVec2,ierr) > call VecDuplicate(solver%bVec2,solver%rVec2,ierr) > > call SNESSetDM(solver%snes,solver%da,ierr) > > ! call SNESSetApplicationContext(solver%snes,solver,ierr) > ! call SNESSetApplicationContext(solver%snes,grid,ierr) > > ! 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 > > > > > > -- > 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
