[petsc-users] projection methods in TS

Emil Constantinescu emconsta at mcs.anl.gov
Sat Feb 4 21:26:24 CST 2017



On 2/4/17 11:00 AM, Matthew Knepley wrote:
> On Sat, Feb 4, 2017 at 9:47 AM, Gideon Simpson <gideon.simpson at gmail.com
> <mailto:gideon.simpson at gmail.com>> wrote:
>
>     Would setting it up as a DAE in petsc be algorithmically euivalent
>     to a projected method (i.e., step of standard RK followed by
>     nonlinear projection)?

Not quite, if you set it as a DAE, then both the time stepping part and 
the algebraic constraint are solved at the same time (you are going to 
use an implicit time stepping method.

So for backward Euler and DAE, PETSc solves something like:

y_{n+1} - y{n} - dt* f(y_{n+1}) = 0
g(y_{n+1}) = 0

By projection (assuming index 1 or 2): you are solving

y* - y{n} - dt* f(y*) = 0

then initialize SNES to y* and solve:

g(y_{n+1}) = 0

In some cases g(y_{n+1}) may not have a value (you may not land on the 
manifold that is defined by the conservation property). Whereas, if you 
define it as a DAE in almost all cases (there are crazy exceptions) you 
will.


Emil

>
> I am not sure, as I do not understand those solvers. However, I wrote my
> own solver that does exactly that MIMEX.
>
>    Matt
>
>
>     -gideon
>
>>     On Feb 3, 2017, at 11:47 PM, Matthew Knepley <knepley at gmail.com
>>     <mailto:knepley at gmail.com>> wrote:
>>
>>     That is one answer. Another one is that this particular system is
>>     a DAE and we have methods for that.
>>
>>        Matt
>>
>>     On Fri, Feb 3, 2017 at 8:40 PM, Barry Smith <bsmith at mcs.anl.gov
>>     <mailto:bsmith at mcs.anl.gov>> wrote:
>>
>>
>>         TSSetPostStep(); in your function use TSGetSolution() to get
>>         the current solution.
>>
>>           Please let us know how it works out
>>
>>            Barry
>>
>>
>>
>>         > On Feb 3, 2017, at 7:14 PM, Gideon Simpson
>>         <gideon.simpson at gmail.com <mailto:gideon.simpson at gmail.com>>
>>         wrote:
>>         >
>>         > I’m interested in implementing a projection method for an
>>         ODE of the form:
>>         >
>>         > y’ = f(y),
>>         >
>>         > such that g(y) = 0 for all time (i.e., g is conserved).
>>         Note that in a projection method, a standard time step is made
>>         to produce y* from y_{n}, and then this is corrected to obtain
>>         y_{n+1} satisfying g(y) = 0.
>>         >
>>         > There were two ways I was thinking of doing this, and I was
>>         hoping to get some input:
>>         >
>>         > Idea 1: Manually loop through using taking a time step and
>>         then implementing the projection routine.  I see that there is
>>         a TSStep command, but this doesn’t  seem to be much
>>         documentation on how to use it in this scenario.  Does anyone
>>         have any guidance?
>>         >
>>         > Idea 2: Is there some analog to TSMonitor that allows me to
>>         modify the solution after each time step, instead of just
>>         allowing for some computation of a statistic?
>>         >
>>         >
>>
>>
>>
>>
>>     --
>>     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
>
>
>
>
> --
> 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


More information about the petsc-users mailing list