[petsc-dev] TS Terminology

Emil Constantinescu emconsta at mcs.anl.gov
Fri Oct 20 11:20:45 CDT 2017



On 10/20/17 11:06 AM, Matthew Knepley wrote:
> On Fri, Oct 20, 2017 at 11:58 AM, Emil Constantinescu 
> <emconsta at mcs.anl.gov <mailto:emconsta at mcs.anl.gov>> wrote:
> 
>     On 10/20/17 10:43 AM, Matthew Knepley wrote:
> 
>         On Fri, Oct 20, 2017 at 11:22 AM, Emil Constantinescu
>         <emconsta at mcs.anl.gov <mailto:emconsta at mcs.anl.gov>
>         <mailto:emconsta at mcs.anl.gov <mailto:emconsta at mcs.anl.gov>>> wrote:
> 
>              On 10/20/17 9:11 AM, Matthew Knepley wrote:
> 
>                  On Fri, Oct 20, 2017 at 9:23 AM, Emil Constantinescu
>                  <emconsta at mcs.anl.gov <mailto:emconsta at mcs.anl.gov>
>         <mailto:emconsta at mcs.anl.gov <mailto:emconsta at mcs.anl.gov>>
>                  <mailto:emconsta at mcs.anl.gov
>         <mailto:emconsta at mcs.anl.gov> <mailto:emconsta at mcs.anl.gov
>         <mailto:emconsta at mcs.anl.gov>>>> wrote:
> 
>                       On 10/20/17 7:57 AM, Matthew Knepley wrote:
> 
>                           I am confused by some of the terminology in
>         TS. At the top
>                           level, IFunction appears to mean the entire
>         equation
> 
>                               F(u, u_t, x) = 0
> 
> 
>                       Matt, page 141 of the manual: F(t, u, u_t) = G(t,
>         u), and
>                  not zero
>                       on the RHS side. To make the interface general we
>         allow
>                  internally
>                       for F:= F(t, u, u_t) - G(t, u) and then F=0.
> 
> 
>                  This is not "internal". Its the toplevel interface:
> 
>         https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884
>         <https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884>
>                 
>         <https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884
>         <https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884>>
> 
>                  It computes F - G.
> 
> 
>              That's what it should do in some cases. The user provides
>         either
>              ifunction or rhs funtion or both. The api to the solvers
>         can take
>              care of this stuff automatically - that's what I meant by
>         internal.
>              Different TS solvers can take different definitions of the
>         funtions;
>              e.g., imex need both, beuler can take ifuntion and/or rhs
>         function
>              but instead of writing beuler for both we choose the most
>         general
>              case (ifunction) and compose the functions accordingly. The
>         F - G is
>              transparent to the user. But somewhere the sausage needs to
>         be made
>              and I think that is the right level because that is least
>         likely to
>              change and least maintenance.
> 
> 
>         I know what it does. I looked at the code. You are missing the
>         point here.
> 
>         We cannot use the same word, IFunction, for two different
>         things, F and F-G. The argument that is is not user facing is
>         complete bullshit.
>         The user inputs the points for ifunction, and can also call the
>         toplevel interface.
> 
> 
>     Matt, we do not. IFunction is F(t,u_t,u), RHS function is G(t,u).
>     What we solve is F=G and not F=0. Do you doubt that?
> 
>     When the user specifies IFunction it is that F; when the user
>     specifies RHS it is that G.
> 
> 
> Nope. We use the word IFunction, specifically in the ifunction function 
> pointer to mean
> 
>    F
> 
> but we use the word IFunction, specifically in TSComputeIFunction, to mean
> 
>    F - G
> 
> And, no its visible to everyone, not just "TS developers".

Matt, that depends, if TS method is imex, then it computes just F, not 
F-G so your argument is not correct. If the method can do only implicit 
it computes F and subtracts G *if defined*. If the TS method can only do 
explicit and you define F then it fails.

Again, this has to do with the TS methods and PETSc doing the work for 
you of packing the functions in different ways.

Emil

>    Matt
> 
>     Now internally, because different solvers have different needs the
>     IFunction ... presented to the TS solver may look differently. This
>     is a design choice - if you are not a TS developer it should not
>     affect you.
> 
>     This is a design decision: if implemented at this level, we avoid
>     having every TS method be aware of the upper level functions.
> 
>     Emil
> 
> 
> 
> 
> 
> 
> -- 
> 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/>


More information about the petsc-dev mailing list