On 3/23/15 4:44 AM, Lisandro Dalcin wrote:
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, that's a neat idea. If you are basically moving in the multistep realm for error estimation with one-step methods, I think there are two considerations:

1. The equations need to be continuous (no restarting, no events) or they would have to reset the error estimator somehow.

2. Backward differences are sensitive to time stepping changes; unlike one-step methods that can accommodate any step changes, B-D has strict limits for stability. While this does not play a crucial role (it is just the estimator); if the time step varies wildly (can be easily constrained), it may create some problems with the estimator.

Emil

Reply via email to