<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
<br>
</span>Yeah, but they are sparse quadratures.  That's sort of how Stefano has<br>
implemented it, though the concept should be generalized and<br>
fixtime=PETSC_MIN_REAL is not a nice way to denote an integral.<br>
<span class="gmail-"><br></span></blockquote><div><br></div><div>My quadrature implementation is very primitive: it is just function sampling and trapezoidal rule.</div><div>Having fixtime=PETSC_MIN_REAL is just a simple way to have both kind of objectives under the same API, and I'm open to suggestions.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">
>> Both methods need the Jacobian of the DAE wrt the parameters: H<br>
>> TSAdjointSetRHSJacobian(), S TSSetGradientDAE()<br>
>><br>
><br>
> Here I understand Stefano to be using DAE in the following sense: Suppose<br>
> my continuous problem is a Partial Differential-Algebraic Equation (PDAE).<br>
> Then after discretizing in space, which I would call Method of Lines, I am<br>
> left with a Differential-Algebraic Equation (DAE) in time.<br>
<br>
</span>Yeah, but the method isn't very useful in that context.  Fortunately,<br>
TSCreateAdjointTS() is an interface that makes it easy to replace the<br>
adjoint of the spatially-discretized operator with the discretization of<br>
the adjoint (i.e., call TSSetComputeRHSJacobian(tsadj, ...)).<br></blockquote><div><br></div><div>Wait, you are mixing two "Jacobians here", and this is why I prefer to call gradient one of them</div><div>The one (let's call it J_m) you set with  TSSetGradientDAE() (and TSAdjointSetRHSJacobian(), bad name) is needed by the quadrature rule for \int J_m^T L . The one that instead you can set via TSSetComputeRHSJacobian(tsadj, aJ...)). is for the adjoint DAE, i.e. Ldot  = L^T * aJ</div><div><br></div><div><br></div></div><div><br></div>-- <br><div class="gmail_signature">Stefano</div>
</div></div>