On 21 March 2015 at 17:32, Emil Constantinescu <[email protected]> wrote: > When -ts_theta_adapt is used, then it detects the instability as an error > and reduces the step by a lot! wlte=1.24e+03 which means that the reduction > should be severe but the controller tries 0.1*dt and that seems to pass but > it "jig-saws" (take a look at the next attempted step), which means that it > is likely unstable.
I think -ts_theta_adapt is seriously broken, I cannot make sense of the way the error estimator is computed. I have an alternative implementation of adaptivity in PetIGA in custom Generalized-Alpha implementation. The adaptivity is not based on embed-RK like for TSCN, but in storing a solution vector from the previous step then estimate the LTE with backward differences. BTW, this idea can be generalized to any second-order method at the cost of tracking an extra solution vector and a bunch of Vec operations. Emil, if you want to try my code to give it a try, it is very easy to integrate, you just need to copy a file to your sources (https://bitbucket.org/dalcinl/petiga/src/tip/src/tsalpha1.c) and add a TSRegister() call after PetscInitialize(). Then you pass in the command line -ts_type alpha1 -ts_alpha_adapt. You can also pass -ts_alpha_radius 0.5 to add some high-frequency dissipation (the default is 1.0, then the method is roughly equivalent to the midpoint rule). PS: I would like to put all this in PETSc, but before that, I need help from you guys to make sure this method really makes sense. The fact that this has worked very well for me in some problems is not enough. -- Lisandro Dalcin ============ Research Scientist Computer, Electrical and Mathematical Sciences & Engineering (CEMSE) Numerical Porous Media Center (NumPor) King Abdullah University of Science and Technology (KAUST) http://numpor.kaust.edu.sa/ 4700 King Abdullah University of Science and Technology al-Khawarizmi Bldg (Bldg 1), Office # 4332 Thuwal 23955-6900, Kingdom of Saudi Arabia http://www.kaust.edu.sa Office Phone: +966 12 808-0459
