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 <elbue...@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