<div dir="ltr">I encountered the problem while working on the adjoint code. Here is the fix I have in my branch<div><br></div><div><a href="https://bitbucket.org/petsc/petsc/branch/stefano_zampini/feature-continuousadjoint#Lsrc/ts/interface/ts.cT613">https://bitbucket.org/petsc/petsc/branch/stefano_zampini/feature-continuousadjoint#Lsrc/ts/interface/ts.cT613</a><br></div><div><br></div><div>However, I'm not sure if this is a problem just with my code. This is why I'm asking on the list.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-09-08 0:02 GMT+03:00 Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
  Example that demonstrates the current code is problematic in some cases?<br>
<div class="HOEnZb"><div class="h5"><br>
> On Aug 28, 2017, at 11:59 AM, Stefano Zampini <<a href="mailto:stefano.zampini@gmail.com">stefano.zampini@gmail.com</a>> wrote:<br>
><br>
><br>
> I was wondering if the following code in TSComputeRHSJacobian is correct when the user pass the reuse flag via TSRHSJacobianReuse<br>
><br>
>   if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) {<br>
>     PetscFunctionReturn(0);<br>
>   }<br>
><br>
> Should the above code be replaced by the following?<br>
><br>
>   if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) {<br>
>     if (ts->rhsjacobian.reuse) {<br>
>       ierr = MatShift(A,-ts->rhsjacobian.<wbr>shift);CHKERRQ(ierr);<br>
>       ierr = MatScale(A,1./ts->rhsjacobian.<wbr>scale);CHKERRQ(ierr);<br>
>       if (B && A != B) {<br>
>         ierr = MatShift(B,-ts->rhsjacobian.<wbr>shift);CHKERRQ(ierr);<br>
>         ierr = MatScale(B,1./ts->rhsjacobian.<wbr>scale);CHKERRQ(ierr);<br>
>       }<br>
>       ts->rhsjacobian.shift = 0;<br>
>       ts->rhsjacobian.scale = 1.;<br>
>     }<br>
>     PetscFunctionReturn(0);<br>
>   }<br>
><br>
><br>
> --<br>
> Stefano<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Stefano</div>
</div>