Emil,

    Matt is correct. He is complaining about the NAME of the function 
TSComputeIFunction; and he should also complain about its manual page that 
states

TSComputeIFunction - Evaluates the DAE residual written in implicit form 
F(t,U,Udot)=0

When imex flag is on the function computes F(t,U,Udot) but when imex flag is 
off it computes F(t,U,Udot) - G(t,U)

I think he is requesting this function name be changed (and the docs be fixed). 
Presumably similarly for the Jacobian also.

A better name would be TSComputeImplicitPartofFunction or even better 
TSComputeImplicitlyHandledPartofFunction.  The name TSComputeIFunction is 
fundamentally confusing (it is not to you because in your head you are 
translating it mentally to TSComputeImplicitlyHandledPartofFunction()

  Now does anyone have better names for this and are there other similar name 
problems that need to be fixed? Perhaps a bunch of other names also could 
benefit from renaming?

  Barry





> On Oct 20, 2017, at 11:06 AM, Matthew Knepley <[email protected]> wrote:
> 
> On Fri, Oct 20, 2017 at 11:58 AM, Emil Constantinescu <[email protected]> 
> wrote:
> On 10/20/17 10:43 AM, Matthew Knepley wrote:
> On Fri, Oct 20, 2017 at 11:22 AM, Emil Constantinescu <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>     On 10/20/17 9:11 AM, Matthew Knepley wrote:
> 
>         On Fri, Oct 20, 2017 at 9:23 AM, Emil Constantinescu
>         <[email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]>>> 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>
> 
>         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
>  
> 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/

Reply via email to