On Wed, Mar 18, 2009 at 5:27 PM, Jed Brown <jed at 59a2.org> wrote: > On Wed 2009-03-18 13:59, Matthew Knepley wrote: > > I cannot understand why you cannot use TSSetMatrices() > > TSSetMatrices is only for linear problems and doesn't generalize nicely > to nonlinear problems, especially with matrix-free methods. The > functionality I'm looking for involves a possibly variable, possibly > singular (with huge null space for DAE), possibly nonlinear (as with fully > implicit moving mesh schemes) Alhs. With my high-order Galerkin scheme, > Alhs can only be available as MatShell (so MatAXPY is hard to implement) > because an assembled Alhs would be an order of magnitude denser than the > preconditioning matrix associated with the unshifted Jacobian (J=F' if > we are solving Alhs(u,t) u_t = F(u,t)). >
> This can all be handled in a way that would work nicely with JFNK and > avoid storing Alhs in any form, but I think the user's function > evaluation and matrix assembly needs to provide shifted versions (such > as 1/dt*Alhs-J where J = F'(u)). The shift is usually a trivial amount > of work during function evaluation and matrix assembly. Preconditioners > can still be lagged effectively as long as the shift does not change > rapidly. Even if the shift does change rapidly, reassembling the > preconditioning matrix could still often be avoided by just doing a > lumped shift (function evaluation and matrix-free Jacobians can change > the shift, using a consistent mass matrix, at zero cost). > > Is this more clear? Not a whole lot. Needs to go slower, since I think there are a bunch of embedded assumptions, and I worry that the most simple, general interface cannot be seen until they are clarified. I want it spelled out very very explicitly. So, to begin, you are unhappy with A_lhs(t) u_t = F(u,t) where A_lhs is a linear operator. Is this true? For now, I will assume that A_lhs(t) is actually a nonlinear operator O_lhs(u,u_t,t). Then we have O_lhs(u,u_t,t) - F(u,t) = 0 So if we do Backward-Euler, O_lhs(u^n+1,t^n+1) - dt F(u^n+1,t^n+1) - O_lhs(u^n,t^n) = G = 0 so for Newton (O'_lhs - dt F') du = G So are you asking for a nonlinear operator O? After I understand the answers to these, I can start to understand the comments about shifts, etc. that talk about implementing this new model. I just want to clarify the movement away from the original TS model. Matt > Jed > -- 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20090318/a231dffd/attachment.html>