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/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.
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