[petsc-users] ARKIMEX produces incorrect values

Ed Bueler elbueler at alaska.edu
Sun Aug 30 18:04:55 CDT 2020


Actually, ARKIMEX is not off the hook.  It still gets the wrong answer if
told the whole thing is implicit:

$ ./ex54 -ts_type arkimex -ts_arkimex_fully_implicit    # WRONG  (AND
REALLY SLOW)
error norm at tf = 1.000000 from 224 steps:  |u-u_exact| =  2.76636e+00

versus

$ ./ex54 -ts_type arkimex      # WRONG BUT IFunction IS OF FLAGGED FORM
error norm at tf = 1.000000 from 16 steps:  |u-u_exact| =  1.93229e+01

$ ./ex54 -ts_type bdf   # RIGHT
error norm at tf = 1.000000 from 33 steps:  |u-u_exact| =  9.29170e-02

So I am not sure what "Methods with an explicit stage can only be used with
ODE in which the stiff part G(t,X,Xdot) has the form Xdot + Ghat(t,X)."
means.

Ed


On Sun, Aug 30, 2020 at 2:57 PM Ed Bueler <elbueler at alaska.edu> wrote:

> Darn, sorry.
>
> I realize the ARKIMEX page does say "Methods with an explicit stage can
> only be used with ODE in which the stiff part G(t,X,Xdot) has the form Xdot
> + Ghat(t,X)."  So my example does not do that.  Is there a way for
> ARKIMEX to detect that dG/d(Xdot) = I?
>
> Ed
>
> On Sun, Aug 30, 2020 at 2:44 PM Ed Bueler <elbueler at alaska.edu> wrote:
>
>> Dear PETSc --
>>
>> I tried twice to make this an issue at the gitlab.com host site, but
>> both times got "something went wrong (500)".  So this is a bug report by
>> old-fashioned means.
>>
>> I created a TS example,
>> https://github.com/bueler/p4pdes-next/blob/master/c/fix-arkimex/ex54.c
>> at my github, also attached.  It solves a 2D linear ODE
>> ```
>>    x' + y' = 6 y
>>         y' = x
>> ```
>> Pretty basic; the known exact solution is just exponentials.  The code
>> writes it as F(t,u,u')=G(t,u) and supplies all the pieces, namely
>> IFunction,IJacobian,RHSFunction,RHSJacobian.  Note both F and G must be
>> seen by TS to get the correct solution.  In summary, a boring (and
>> valgrind-clean ;-)) example.
>>
>> For current master branch it runs fine for the fully-implicit methods
>> (e.g. BDF, CN, ROSW) which can use the IFunction F, including with
>> finite-differenced Jacobians.  With BDF2, BDF2+-snes_fd, BDF6+tight tol.,
>> CN, BEULER, ROSW:
>> $ ./ex54
>> error norm at tf = 1.000000 from 33 steps:  |u-u_exact| =  9.29170e-02
>> $ ./ex54 -snes_fd
>> error norm at tf = 1.000000 from 33 steps:  |u-u_exact| =  9.29170e-02
>> $ ./ex54 -ts_rtol 1.0e-14 -ts_atol 1.0e-14 -ts_bdf_order 6
>> error norm at tf = 1.000000 from 388 steps:  |u-u_exact| =  4.23624e-11
>> $ ./ex54 -ts_type beuler
>> error norm at tf = 1.000000 from 100 steps:  |u-u_exact| =  6.71676e-01
>> $ ./ex54 -ts_type cn
>> error norm at tf = 1.000000 from 100 steps:  |u-u_exact| =  2.22839e-03
>> $ ./ex54 -ts_type rosw
>> error norm at tf = 1.000000 from 21 steps:  |u-u_exact| =  5.64012e-03
>>
>> But it produces wrong values with ARKIMEX:
>> $ ./ex54 -ts_type arkimex
>> error norm at tf = 1.000000 from 16 steps:  |u-u_exact| =  1.93229e+01
>>
>> Neither tightening tolerance nor changing type (`-ts_arkimex_type`) helps
>> ARKIMEX.
>>
>> Thanks!
>>
>> Ed
>>
>> PS  My book is at a late proofs stage, and out of my hands.  It should
>> appear SIAM Press in a couple of months.  In all the examples in my book,
>> only my diffusion-reaction system example using F(t,u,u') = G(t,u) is
>> broken.  Thus the motivation for a trivial ODE example as above.
>>
>>
>> --
>> Ed Bueler
>> Dept of Mathematics and Statistics
>> University of Alaska Fairbanks
>> Fairbanks, AK 99775-6660
>> 306C Chapman
>>
>
>
> --
> Ed Bueler
> Dept of Mathematics and Statistics
> University of Alaska Fairbanks
> Fairbanks, AK 99775-6660
> 306C Chapman
>


-- 
Ed Bueler
Dept of Mathematics and Statistics
University of Alaska Fairbanks
Fairbanks, AK 99775-6660
306C Chapman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200830/9ca07cb1/attachment-0001.html>


More information about the petsc-users mailing list