> On Feb 13, 2017, at 1:53 PM, Ed Bueler <[email protected]> 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)
