I just tried. But it gives me same pattern. After One iteration, it diverges. I am now sure some thing is wrong with my setting.
On Aug 18 2018, at 12:59 pm, Justin Chang <[email protected]> wrote: > > Have you tried SNESVINEWTONRSLS? In my experience, I seem to have slightly > better luck with that one instead of SNESVINEWTONSSLS > > On Sat, Aug 18, 2018 at 12:56 AM Amir <[email protected] > (https://link.getmailspring.com/link/[email protected]/0?redirect=mailto%3Amhbaghaei%40mail.sjtu.edu.cn&recipient=cGV0c2MtdXNlcnNAbWNzLmFubC5nb3Y%3D)> > 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 > > (https://link.getmailspring.com/link/[email protected]/1?redirect=http%3A%2F%2Fuser.dm&recipient=cGV0c2MtdXNlcnNAbWNzLmFubC5nb3Y%3D)); > > 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); > > > > > >
