<div dir="ltr"><div>If we calculate the gradient using the discrete adjoint without 
differentiating the controller, and then calculate the same gradient 
using finite difference (allowing the time steps to freely change), how different these results are?<br><br></div>Miguel</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 29, 2015 at 2:12 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Apr 29, 2015, at 1:51 PM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br>
><br>
> Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> writes:<br>
>>> If so, how is it done?<br>
>><br>
>>   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?<br>
><br>
> Barry, if you're using this for optimization, you might want the<br>
> gradient to be exactly consistent with the objective functional.  But<br>
> for that, you would need to differentiate the controller, which is<br>
> non-smooth in practice because the number of time steps can change and<br>
> stages could be rejected (solver failure).<br>
<br>
</span>  Ahh, yes for multiple forward runs yup.<br>
<span class=""><br>
><br>
> One approach would be to save the timestep sequence and have the<br>
> controller use that in subsequent *forward* runs.  If the dynamical<br>
> system behaves similarly for those steps, it would be okay to use the<br>
> same timestep sequence.<br>
<br>
</span> 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.<br>
<br>
  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.<br>
<span class="HOEnZb"><font color="#888888"><br>
  Barry<br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><font face="verdana, sans-serif"><b>Miguel Angel Salazar de Troya</b></font><span><font color="#888888"><br><font face="arial,helvetica,sans-serif">Graduate Research Assistant<br>Department of Mechanical Science and Engineering<br></font>University of Illinois at Urbana-Champaign<br>(217) 550-2360<br>
<a href="mailto:salaza11@illinois.edu" target="_blank">salaza11@illinois.edu</a></font></span><div><br></div></div></div>
</div>