On Fri, Nov 3, 2017 at 7:42 PM, zakaryah . <[email protected]> wrote:
> Hi Bikash, > > I agree with Barry. If your function changes, quasi Newton methods build > up the approximation to the Jacobian from sequential evaluations of the > function. If your Jacobian doesn't change too much when the boundary > conditions change, just keep the last approximation and update it with the > new function. Otherwise I don't see what you want to do. > > I don't think you need to call SNESGetSolution, you should be able to just > access the vector that you pass to SNESSolve. > This is one situation where my method of enforcing Dirichlet conditions, namely to eliminate them completely from the system being solved, is clearly superior. I would eliminate those constrained variables. Matt > On Nov 3, 2017 6:34 PM, "Bikash Kanungo" <[email protected]> wrote: > > Hi Barry, > > So for Newton solvers that would work by explicitly setting the boundary > conditions in my gradient(function) and Jacobian vectors. But in > quasi-Newton solvers where the Jacobian is built from a history of previous > Jacobians and current gradient vector, I can't enforce a new boundary > condition. I can change the current gradient vector appropriately but I > don't see a way handle the the Jacobian. > > Thanks, > Bikash > > > > On Fri, Nov 3, 2017 at 6:20 PM, Smith, Barry F. <[email protected]> > wrote: > >> >> >> You should not need to "tamper" with the solution process to achieve >> this. >> >> I would just change how my FormFunction and FormJacobian behave to >> implement the different boundary conditions. Why would that not work? >> >> Barry >> >> > On Nov 3, 2017, at 4:39 PM, Bikash Kanungo <[email protected]> wrote: >> > >> > Hi Matt, >> > >> > I want to update the Dirichlet boundary condition on the solution >> vector on-the-fly. One way to do it is to destroy the current snes solver >> and create a new one with the new Dirichlet boundary condition (which means >> setting a new solution vector with a different size, size = # of >> non-Dirichlet rows). But is it possible to work with the current snes and >> instead enforce the new Dirichlet boundary condition on the current >> solution vector? >> > >> > Thanks, >> > Bikash >> > >> > On Fri, Nov 3, 2017 at 5:19 PM, Matthew Knepley <[email protected]> >> wrote: >> > What do you want to do to it? >> > >> > Matt >> > >> > On Fri, Nov 3, 2017 at 5:14 PM, Bikash Kanungo <[email protected]> >> wrote: >> > Hi, >> > >> > I'm trying to solve a nonlinear problem using BFGS Quasi-Newton solver. >> I would like to tamper the solution vector x on-the-fly, based on some >> criterion. Is there a way to do so? Will SNESGetSolution(SNES snes, Vec * >> x) allow me to do so for each SNES iteration? >> > >> > Thanks, >> > Bikash >> > >> > -- >> > Bikash S. Kanungo >> > PhD Student >> > Computational Materials Physics Group >> > Mechanical Engineering >> > University of Michigan >> > >> > >> > >> > >> > -- >> > 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 >> > >> > https://www.cse.buffalo.edu/~knepley/ >> > >> > >> > >> > -- >> > Bikash S. Kanungo >> > PhD Student >> > Computational Materials Physics Group >> > Mechanical Engineering >> > University of Michigan >> > >> >> > > > -- > Bikash S. Kanungo > PhD Student > Computational Materials Physics Group > Mechanical Engineering > University of Michigan > > > -- 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 https://www.cse.buffalo.edu/~knepley/ <http://www.caam.rice.edu/~mk51/>
