[petsc-users] TS question 1: how to stop explicit methods because they do not use SNES(VI)?

Ed Bueler elbueler at alaska.edu
Mon Feb 13 13:53:14 CST 2017


Dear Petsc --

This is the first of two short TS usage questions.

My problem is both stiff (diffusive PDE) and constrained, so I require

   -snes_type vinewton{rs|ss}ls

*and* I split my ODE system into IFunction and RHSFunction

   F(t,u,u_t) = G(t,u)

where F(t,u,u_t) = u_t + f(t,u) in my case (i.e. no mass matrix needed),
and the stiff part goes in f(t,u).

With this arrangement TS types beuler, theta, bdf, arkimex all work quite
well.  However, the program runs and produces nonsense with type rk and
ssp, that is, explicit methods.

So my question is, how do I ask the TS (at run time) whether the chosen TS
type will or will not call its SNES at each step?  If SNES is not going to
be used then I want to SETERRQ and stop.  That is, I want to error-out if
the *method* is fully explicit.

Note the constraints are enforced by the SNESVI, as they should be, not ad
hoc projection.  Also, as a technical matter, I cannot require my iterates
to be feasible inside my IFunction evaluation because that would break
VINEWTONSSLS.

Neither TSProblemType (mine is NONLINEAR) nor TSEquationType (mine is
IMPLICIT I guess) seem to address this?  My problem is indeed nonlinear and
has stiff parts, but it is not a DAE and it *is* constrained.

Thanks!

Ed

PS  I'd prefer not to enumerate the existing TS types and error on the bad
ones.  It is not nicely-maintainable.



-- 
Ed Bueler
Dept of Math and Stat and Geophysical Institute
University of Alaska Fairbanks
Fairbanks, AK 99775-6660
301C Chapman and 410D Elvey
907 474-7693 and 907 474-7199  (fax 907 474-5394)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170213/e6c87857/attachment.html>


More information about the petsc-users mailing list