On Sat, 9 May 2020 at 23:44, Mohammed Ashour <[email protected]> wrote:
> I'm using TSALPHA1, as in ierr = TSSetType(ts,TSALPHA1); CHKERRQ(ierr); > > Well, TSALPHA1 uses some vectors keeping intenal state, as you know, generalized-\alpha is not really a one-step method. That intenal state should be saved and loaded if you want to implement a truly correct checkpoint/restart. But PETSc does not currently provide access to this vector in its public API, so you will have to hack things around. IIRC, just saving and restoring the internal V1 vector is all what you need, maybe also set ts->steprestart to FALSE and properly set the ts->steps counter. Or you can just ignore these detail, and restart the easy way from just the saved solution, at the price of a very small "glitch" at the restart time. But note that this glitch just means that you temporarily change the scheme to reinitialize, and it is exactly the same thing the implementation does at the initial time to initialize the method (as you surely know, the method is also not trully self-starting). The restarting procesure as implemented in TSALPHA1 is not in the literature, it is of my own cooking but based on rather trivial relations performing two steps with dt/2 time step size, the fist of those inner steps using backward-Euler. -- Lisandro Dalcin ============ Research Scientist Extreme Computing Research Center (ECRC) King Abdullah University of Science and Technology (KAUST) http://ecrc.kaust.edu.sa/
