-snes_monitor -snes_linesearch_monitor -pc_type lu
produces what? Barry The line search failing means that the direction computed is not a descent direction which could be due to a bad Jacobian or inconsistent constraints. > On Aug 17, 2018, at 11:56 PM, Amir <[email protected]> wrote: > > Hi > I need to apply constraint to primitive variables. I am troubling to set up > SNESVI. After running the code, I feel SNES is not actually solving. After > one iteration of SNES, I got DIVERGED_LINESEARCH, with NO changing in > function norm. > I think the way I set VI maybe wrong. Sorry for my simple explanation. > Very thankful for your time. > Amir > SNESCreate(PETSC_COMM_WORLD,&snes); > SNESSetApplicationContext(snes,&user); > SNESSetDM(snes,user.dm); > SNESSetFunction(snes,NULL,FormFunction,&user); > FormInitialSolution(user.X,&user); > SNESSetSolution(snes,user.X); > SNESMonitorSet(snes,MySNESMonitor,&user,NULL); > SNESSetType(snes,SNESVINEWTONSSLS); > SNESSetNormSchedule(snes, SNES_NORM_ALWAYS); > SNESVISetVariableBounds(snes,user.XLOWER,user.XUPPER); > SNESGetLineSearch(snes,&linesearch); > SNESLineSearchSetType(linesearch,SNESLINESEARCHBT); > SNESLineSearchSetVIFunctions(linesearch, NULL, SNESNormFunction); > SNESSetFromOptions(snes); > SNESSolve(snes,NULL,user.X); >
