<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 20, 2017 at 11:58 AM, Emil Constantinescu <span dir="ltr"><<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/20/17 10:43 AM, Matthew Knepley wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
On Fri, Oct 20, 2017 at 11:22 AM, Emil Constantinescu <<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a> <mailto:<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a>>> wrote:<br>
<br>
    On 10/20/17 9:11 AM, Matthew Knepley wrote:<br>
<br>
        On Fri, Oct 20, 2017 at 9:23 AM, Emil Constantinescu<br>
        <<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a> <mailto:<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a>><br></span><div><div class="h5">
        <mailto:<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a> <mailto:<a href="mailto:emconsta@mcs.anl.gov" target="_blank">emconsta@mcs.anl.gov</a>>><wbr>> wrote:<br>
<br>
             On 10/20/17 7:57 AM, Matthew Knepley wrote:<br>
<br>
                 I am confused by some of the terminology in TS. At the top<br>
                 level, IFunction appears to mean the entire equation<br>
<br>
                     F(u, u_t, x) = 0<br>
<br>
<br>
             Matt, page 141 of the manual: F(t, u, u_t) = G(t, u), and<br>
        not zero<br>
             on the RHS side. To make the interface general we allow<br>
        internally<br>
             for F:= F(t, u, u_t) - G(t, u) and then F=0.<br>
<br>
<br>
        This is not "internal". Its the toplevel interface:<br>
<br>
        <a href="https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884" rel="noreferrer" target="_blank">https://bitbucket.org/petsc/pe<wbr>tsc/src/63ae3ecac3af8ce782273a<wbr>76ad4152cddc2fd80a/src/ts/<wbr>interface/ts.c?at=master&<wbr>fileviewer=file-view-default#<wbr>ts.c-884</a><br>
        <<a href="https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273a76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master&fileviewer=file-view-default#ts.c-884" rel="noreferrer" target="_blank">https://bitbucket.org/petsc/p<wbr>etsc/src/63ae3ecac3af8ce782273<wbr>a76ad4152cddc2fd80a/src/ts/<wbr>interface/ts.c?at=master&<wbr>fileviewer=file-view-default#<wbr>ts.c-884</a>><br>
<br>
        It computes F - G.<br>
<br>
<br>
    That's what it should do in some cases. The user provides either<br>
    ifunction or rhs funtion or both. The api to the solvers can take<br>
    care of this stuff automatically - that's what I meant by internal.<br>
    Different TS solvers can take different definitions of the funtions;<br>
    e.g., imex need both, beuler can take ifuntion and/or rhs function<br>
    but instead of writing beuler for both we choose the most general<br>
    case (ifunction) and compose the functions accordingly. The F - G is<br>
    transparent to the user. But somewhere the sausage needs to be made<br>
    and I think that is the right level because that is least likely to<br>
    change and least maintenance.<br>
<br>
<br>
I know what it does. I looked at the code. You are missing the point here.<br>
<br>
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.<br>
The user inputs the points for ifunction, and can also call the toplevel interface.<br>
</div></div></blockquote>
<br>
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?<br>
<br>
When the user specifies IFunction it is that F; when the user specifies RHS it is that G.<br></blockquote><div><br></div><div>Nope. We use the word IFunction, specifically in the ifunction function pointer to mean</div><div><br></div><div>  F</div><div><br></div><div>but we use the word IFunction, specifically in TSComputeIFunction, to mean</div><div><br></div><div>  F - G</div><div><br></div><div>And, no its visible to everyone, not just "TS developers".</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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.<br>
<br>
This is a design decision: if implemented at this level, we avoid having every TS method be aware of the upper level functions.<span class="HOEnZb"><font color="#888888"><br>
<br>
Emil<br>
<br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>