From: Roy Stogner <roystgnr@ic...>  20070813 22:37:15

To get some more reliability out of my CahnHilliard simulations on large timesteps, I'm implementing a theta method which, instead of the more traditional: u_new  u_old = delta_t * F(theta*u_new + (1theta)*u_old) will solve: u_new  u_old = delta_t * (theta*F(u_new) + (1theta)*u_old) This should give a second order method that can be more reliable (in my problem, in particular, it will avoid the extreme case where for traditional CrankNicholson F(u_new) can end up infinite and spoil the next timestep) at the cost of requiring twice as many evaluations of F. But what is it called? I don't want to commit the "EuleresqueSolver" class or "EulerLikeSolver" class if there's a better name out there, and this is such a simple scheme that I can't believe it hasn't been invented and named a hundred years ago, but I have no idea what that name would be. AdaptiveTimeSolver currently calculates u_dt and u_halfdt by taking one whole timestep and two half size timesteps, and then uses (u_dt  u_halfdt) as an error estimate while using u_halfdt as the final solution for the timestep. Would it make more sense to do a little Richardson extrapolation and use (2*u_halfdt  u_dt) for the timestep's final solution? I know that can give you second order accuracy from an otherwise first order accurate scheme, but do you always get an order deltat improvement in this way, and more importantly, how much is it likely to hurt stability? Perhaps I'll just make it a option, off by default.  Roy 