On Fri, Oct 20, 2017 at 11:58 AM, Emil Constantinescu <emcon...@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 < >> emcon...@mcs.anl.gov <mailto:emcon...@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 >> <emcon...@mcs.anl.gov <mailto:emcon...@mcs.anl.gov> >> <mailto:emcon...@mcs.anl.gov <mailto:emcon...@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/63ae3ecac3af8ce782273a >> 76ad4152cddc2fd80a/src/ts/interface/ts.c?at=master& >> fileviewer=file-view-default#ts.c-884 >> <https://bitbucket.org/petsc/petsc/src/63ae3ecac3af8ce782273 >> a76ad4152cddc2fd80a/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/ <http://www.caam.rice.edu/~mk51/>