[petsc-users] TSAdjoint not working correctly when using TSThetaSetEndpoint(true)

Zhang, Hong hongzhang at anl.gov
Tue Jun 2 22:51:43 CDT 2020


I checked the results again and can confirm that it is a bug on our side. A merge request has been created to fix it:
https://gitlab.com/petsc/petsc/-/merge_requests/2830

Thanks,
Hong (Mr.)

On Jun 2, 2020, at 6:26 PM, Salazar De Troya, Miguel <salazardetro1 at llnl.gov<mailto:salazardetro1 at llnl.gov>> wrote:

Hong,

That is not the correct result, however, we can obtain the correct result if we comment ts.setThetaEndpoint(True). Why is it so?

Thanks
Miguel

From: "Zhang, Hong" <hongzhang at anl.gov<mailto:hongzhang at anl.gov>>
Date: Tuesday, June 2, 2020 at 3:31 PM
To: "Salazar De Troya, Miguel" <salazardetro1 at llnl.gov<mailto:salazardetro1 at llnl.gov>>
Cc: "petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>" <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>>
Subject: Re: [petsc-users] TSAdjoint not working correctly when using TSThetaSetEndpoint(true)

Miguel,

After I uncommented ts.setThetaEndpoint(True) and removed ts.setProblemType(False.ProblemType.LINEAR) in your code, I got the following result:

hongzhang at Hongs-MacBook-Pro$ python3 petsc_question_2.py
Cost function
Vec Object: 1 MPI processes
  type: seq
127.781
Exact value: 127.78112

Numerical sensitivity w.r.t. a
12.778122049945212
Real sensitivity w.r.t a
12.7781121978613

Numerical sensitivity w.r.t. b
83.8907580310942
Real sensitivity w.r.t b
211.67168296791954

-ts_type cn gives the same result. What was the problem you encountered?

Thanks,
Hong (Mr.)


On Jun 2, 2020, at 2:36 PM, Salazar De Troya, Miguel via petsc-users <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>> wrote:

Hello,

I am attaching a simple example that uses TSAdjoint to calculate the sensitivity of a 1 degree of freedom ODE. When using theta methods, it returns the right sensitivity as given by the analytical solution. When I set `ts.setThetaEndpoint(True)`, it does not work. Is there a theoretical reason why? I was using this option because using the options

ts.setType(ts.Type.THETA)
ts.setTheta(0.5)
ts.setThetaEndpoint(True)

is equivalent to using ts.Type.CN

Thanks
Miguel

Miguel A. Salazar de Troya
Postdoctoral Researcher, Lawrence Livermore National Laboratory
B141
Rm: 1085-5
Ph: 1(925) 422-6411
<petsc_question_2.py>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200603/6f3be672/attachment-0001.html>


More information about the petsc-users mailing list