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

Barry Smith bsmith at mcs.anl.gov
Mon Feb 13 14:26:26 CST 2017


> On Feb 13, 2017, at 1:53 PM, Ed Bueler <elbueler at alaska.edu> wrote:
> 
> 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.

   Sounds like a bug to me. The methods should be checking if an IFunction is being provided and error out in that case.

  Barry

> 
> 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)



More information about the petsc-users mailing list