Does linearly implicit mean that you can solve any nonlinear system with the ROSW methods? I set my entire system using TSSetIFunction, without any TSSetRHSFunction.
I wanted to try the ROSW methods because the THETA methods seems to want a time step much much smaller than the courant time step for the nonlinear solver to converge. I checked the validity of the solution and it is indeed right, so the residual evaluation should be correct. I'm solving for the general relativistic mhd equations in a fixed background spacetime (kerr blackhole). There are large variations in the density and pressure and I use slope limiters. On Sat, Mar 8, 2014 at 7:22 PM, Jed Brown <[email protected]> wrote: > Peter Brune <[email protected]> writes: > > > You can control Jacobian lagging with -snes_lag_jacobian and > > -snes_lag_jacobian_presists by setting the option > > -ts_rosw_recompute_jacobian to true. Otherwise it defaults to having it > > recompute once per timestep by setting the SNES to do so, wiping out the > > persistent lagging. This will give you a rather odd pattern of Jacobian > > assembly, and I don't recommend it at all. Your Jacobian will often be > > computed on the unconverged nonlinear solution, and may be garbage. What > > would be more reasonable is for us to add some option at the TS level to > > lag the Jacobian by a number of steps. > > Rosenbrocks are linearly implicit and have to use the true Jacobian (so > if you play games with lagging, the method is no longer consistent). > The W methods can use an approximate Jacobian, but the method has no way > to know how often the Jacobian needs to be updated (the method becomes > unstable if you lag too much). If you want to lag further than a step, > I recommend writing a Rosenbrock (W) with more stages. This way you > have a consistent error estimator and don't need a special controller. >
