[petsc-users] Discrete adjoint and adaptive time stepping
Barry Smith
bsmith at mcs.anl.gov
Wed Apr 29 14:12:43 CDT 2015
> On Apr 29, 2015, at 1:51 PM, Jed Brown <jed at jedbrown.org> wrote:
>
> Barry Smith <bsmith at mcs.anl.gov> writes:
>>> If so, how is it done?
>>
>> We just keep the history of the time-step sizes and then use those time-step sizes when doing the backward integration. Seems simple to me, am I missing something?
>
> Barry, if you're using this for optimization, you might want the
> gradient to be exactly consistent with the objective functional. But
> for that, you would need to differentiate the controller, which is
> non-smooth in practice because the number of time steps can change and
> stages could be rejected (solver failure).
Ahh, yes for multiple forward runs yup.
>
> One approach would be to save the timestep sequence and have the
> controller use that in subsequent *forward* runs. If the dynamical
> system behaves similarly for those steps, it would be okay to use the
> same timestep sequence.
Presumably if that single set of dt (from the first run) is not sufficient for some later runs one could possibly use the union of the dt of several runs for all the runs. (that is run adaptively and inconsistently several runs to determine where dt needs to be controlled and then use the various smaller of the dt at the different time regions for a full set of consistent runs). Of course if the various smaller of the dt requires a tiny dt for all time steps then you are not getting an advantage of adaptive time-stepping, but ok.
The idea of actually propagating the gradients through the time-step controller seems IMHO to be absurd; I won't even put it on our game plan until we have many more things done and much more practical experience.
Barry
More information about the petsc-users
mailing list