[petsc-users] projection methods in TS

Barry Smith bsmith at mcs.anl.gov
Sat Feb 4 21:37:19 CST 2017


  Emil,

   Information about "projection methods" vs solving as a DAE should be documented in the users manual, manual pages, or FAQ....


> On Feb 4, 2017, at 9:26 PM, Emil Constantinescu <emconsta at mcs.anl.gov> wrote:
> 
> 
> 
> 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