[petsc-dev] Discussion about time-dependent optimization moved from PR

Barry Smith bsmith at mcs.anl.gov
Tue Oct 17 09:48:20 CDT 2017


> On Oct 17, 2017, at 9:20 AM, Jed Brown <jed at jedbrown.org> wrote:
> 
> Barry Smith <bsmith at mcs.anl.gov> writes:
> 
>>> On Oct 17, 2017, at 7:43 AM, Stefano Zampini <stefano.zampini at gmail.com> wrote:
>>> 
>>> 
>>> 
>>> 
>>>   What happens if you call TSCreateAdjointsTS() on a TS obtained with TSCreateAdjointsTS()? Is the resulting TS useful?
>>> 
>>> 
>>> I don't think so.
>> 
>>   Hmm, this is rather bothersome. So the new TS that comes out is not
>>   really a full-featured TS (using your new extended TS object that
>>   knows about adjoints)? 
> 
> Is it useful to precondition Newton with Newton preconditioned with
> Newton?  
> 
>>   It is like a subclass of TS that can only do timestepping? This
>>   goes back to my concern that TS shouldn't be overloaded with all
>>   the adjoint sensitivity stuff, there should be a higher level
>>   PetscSensi object that does sensitivities and it contains multiple
>>   TS for the ODE/DAE integrator and one for "reverse" mode.
> 
> Let's not mix together Stefano's TSComputeObjectiveAndGradient (which
> could easily go into a helper PetscSensi) with the control flow needed
> to create/integrate an adjoint system.

   Jed,

    I am not mixing them!  I am not even considering the TSComputeObjectiveAndGradient() at all I am only considering
the "the control flow needed to create/integrate an adjoint system." My PetscSensi is not for TSComputeObjectiveAndGradient level stuff.


>  In my opinion, it must be
> possible to have a comparable/same interface to create a discrete
> adjoint (which depends on the forward implementation) as to create a
> continuous adjoint (with customizable space and time discretization).

   Absolutely and fundamentally. No argument at all about this.

> 
> I think we should postpone discussion of higher level convenience
> functions like TSComputeObjectiveAndGradient or some new organization
> thereof until we agree about the basic representation of adjoints.

   Totally agree and that is what I have done. 

>  My
> preference is for TSCreateAdjointTS() which the user can customize to
> use arbitrary time integration methods (thus becoming a
> "continuous-in-time" adjoint) and to use different spatial
> discretizations (for consistency with the adjoint PDE).

   I understand, I think TSCreateAdjointTS() is not the right model. I think that the correct model is, for example

PetscSensiCreate()
PetscSensiSetObjective.... or whatever etc etc
PetscSensiGetIntegrator(,&TS)
PetscSensiGetAdjointIntegrator(,&TS).
...

  Note I am not married to the current model of TSSolve/TSAdjointSolve().

  Barry







More information about the petsc-dev mailing list