[petsc-dev] TSComputeRHSJacobian

Barry Smith bsmith at mcs.anl.gov
Sun Sep 10 14:43:46 CDT 2017


  Stefano,

    Thanks, but I don't really want a fix. I want a code that I can run that demonstrates a problem (then we can evaluate fixes)

   Barry

> On Sep 8, 2017, at 11:51 AM, Stefano Zampini <stefano.zampini at gmail.com> wrote:
> 
> I encountered the problem while working on the adjoint code. Here is the fix I have in my branch
> 
> https://bitbucket.org/petsc/petsc/branch/stefano_zampini/feature-continuousadjoint#Lsrc/ts/interface/ts.cT613
> 
> However, I'm not sure if this is a problem just with my code. This is why I'm asking on the list.
> 
> 
> 
> 2017-09-08 0:02 GMT+03:00 Barry Smith <bsmith at mcs.anl.gov>:
> 
>   Example that demonstrates the current code is problematic in some cases?
> 
> > On Aug 28, 2017, at 11:59 AM, Stefano Zampini <stefano.zampini at gmail.com> wrote:
> >
> >
> > I was wondering if the following code in TSComputeRHSJacobian is correct when the user pass the reuse flag via TSRHSJacobianReuse
> >
> >   if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) {
> >     PetscFunctionReturn(0);
> >   }
> >
> > Should the above code be replaced by the following?
> >
> >   if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) {
> >     if (ts->rhsjacobian.reuse) {
> >       ierr = MatShift(A,-ts->rhsjacobian.shift);CHKERRQ(ierr);
> >       ierr = MatScale(A,1./ts->rhsjacobian.scale);CHKERRQ(ierr);
> >       if (B && A != B) {
> >         ierr = MatShift(B,-ts->rhsjacobian.shift);CHKERRQ(ierr);
> >         ierr = MatScale(B,1./ts->rhsjacobian.scale);CHKERRQ(ierr);
> >       }
> >       ts->rhsjacobian.shift = 0;
> >       ts->rhsjacobian.scale = 1.;
> >     }
> >     PetscFunctionReturn(0);
> >   }
> >
> >
> > --
> > Stefano
> 
> 
> 
> 
> -- 
> Stefano



More information about the petsc-dev mailing list