[petsc-users] Vec is locked read only

Rongliang Chen rl.chen at siat.ac.cn
Sat Apr 2 07:37:14 CDT 2016


Hi Matt,

How to check in the explicit method? This kind of errors does come out 
in the explicit method.

What do you mean "You should never be changing the input guess"? Do you 
mean that the value of the solution vector X in FormFunction are not 
allowed to be changed by the user defined function?

Best regards,
Rongliang

On 04/02/2016 08:19 PM, Matthew Knepley wrote:
> On Sat, Apr 2, 2016 at 7:15 AM, Rongliang Chen <rl.chen at siat.ac.cn 
> <mailto:rl.chen at siat.ac.cn>> wrote:
>
>     Hi Matt,
>
>     That's right. The FormMassTimeStep() is inside the FormFunction()
>     and I call the FormFunction() in this way:
>     SNESSetFunction(user->snes, algebra->f, FormFunction,
>     (void*)user). How can I know the X is read-only or not?
>
>
> Exactly that you get this error message, and it should be in the 
> documentation.
>
>     If I do not use the SNESSolve, that is I use the explicit method
>     with the same function FormMassTimeStep(), this error disappeared.
>     So it seems that the SNESSolve locked the vector X.
>
>
> Then we need to put that check in the explicit method as well. You 
> should never be changing the input guess.
>
>   Thanks,
>
>     Matt
>
>     Best regards,
>     Rongliang
>
>     On 04/02/2016 07:59 PM, Matthew Knepley wrote:
>>     On Sat, Apr 2, 2016 at 6:49 AM, Rongliang Chen
>>     <rl.chen at siat.ac.cn <mailto:rl.chen at siat.ac.cn>> wrote:
>>
>>         Hi Dave,
>>
>>         I did not call any VecGetArrary and VecGetArraryRead in
>>         function FormMassTimeStepFunction().
>>
>>
>>     It looks like you have a function FormMassTimeStep() inside your
>>     FormFunction() method. This
>>     has an argument X, the solution guess, which is read-only.
>>     However, you are calling DMLocalToGlobal()
>>     using that X, which is illegal, since its read-only. Is this right?
>>
>>        Matt
>>
>>         Best regards,
>>         Rongliang
>>
>>         On 04/02/2016 06:20 PM, Dave May wrote:
>>>
>>>
>>>         On 2 April 2016 at 11:18, Rongliang Chen <rl.chen at siat.ac.cn
>>>         <mailto:rl.chen at siat.ac.cn>> wrote:
>>>
>>>             Hi Shri,
>>>
>>>             Thanks for your reply.
>>>
>>>             Do you mean that I need to change the VecGetArrary() in
>>>             /home/rlchen/soft/petsc-3.6.3/src/dm/interface/dm.c to
>>>             VecGetArrayRead()?
>>>
>>>
>>>         No - you should change it in your function
>>>         FormMassTimeStepFunction().
>>>         The input vector x passed into SNESComputeFunction() is read
>>>         only.
>>>
>>>
>>>
>>>             I tried it and I got a warning when I make the petsc:
>>>
>>>             /home/rlchen/soft/petsc-3.6.3/src/dm/interface/dm.c: In
>>>             function ‘DMLocalToGlobalBegin’:
>>>             /home/rlchen/soft/petsc-3.6.3/src/dm/interface/dm.c:1913:5:
>>>             warning: passing argument 2 of ‘VecGetArrayRead’ from
>>>             incompatible pointer type [enabled by default]
>>>             In file included from
>>>             /home/rlchen/soft/petsc-3.6.3/include/petscmat.h:6:0,
>>>             from /home/rlchen/soft/petsc-3.6.3/include/petscdm.h:6,
>>>             from
>>>             /home/rlchen/soft/petsc-3.6.3/include/petsc/private/dmimpl.h:6,
>>>             from /home/rlchen/soft/petsc-3.6.3/src/dm/interface/dm.c:1:
>>>             /home/rlchen/soft/petsc-3.6.3/include/petscvec.h:420:29:
>>>             note: expected ‘const PetscScalar **’ but argument is of
>>>             type ‘PetscScalar **’
>>>
>>>             Best regards,
>>>             Rongliang
>>>
>>>             ---------------------
>>>             Rongliang Chen,   PhD
>>>             Associate Professor
>>>
>>>             Laboratory for Engineering and Scientific Computing
>>>             Shenzhen Institutes of Advanced Technology
>>>             Chinese Academy of Sciences
>>>             Address: 1068 Xueyuan Avenue, Shenzhen University Town,
>>>             Shenzhen, Guangdong (518055), P. R. China
>>>             E-mail: rl.chen at siat.ac.cn <mailto:rl.chen at siat.ac.cn>
>>>             Phone: +86-755-86392312 <tel:%2B86-755-86392312>
>>>
>>>
>>>             On 04/02/2016 05:03 PM, Abhyankar, Shrirang G. wrote:
>>>
>>>                 Use VecGetArrayRead instead of VecGetArray
>>>
>>>                 http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecGetArray
>>>                 Read.html
>>>
>>>
>>>                 Shri
>>>
>>>                 -----Original Message-----
>>>                 From: Rongliang Chen <rl.chen at siat.ac.cn
>>>                 <mailto:rl.chen at siat.ac.cn>>
>>>                 Date: Saturday, April 2, 2016 at 3:51 AM
>>>                 To: PETSc users list <petsc-users at mcs.anl.gov
>>>                 <mailto:petsc-users at mcs.anl.gov>>,
>>>                 "rongliang.chan at gmail.com
>>>                 <mailto:rongliang.chan at gmail.com>"
>>>                 <rongliang.chan at gmail.com
>>>                 <mailto:rongliang.chan at gmail.com>>
>>>                 Subject: [petsc-users] Vec is locked read only
>>>
>>>                     Dear All,
>>>
>>>                     My code got the following error messages, but
>>>                     the code works well for
>>>                     the petsc optimized version
>>>                     (--with-debugging=0). Anyone can tell me how
>>>                     to fix this problem?
>>>
>>>                     Best regards,
>>>                     Rongliang
>>>
>>>
>>>                     [0]PETSC ERROR: --------------------- Error Message
>>>                     --------------------------------------------------------------
>>>                     [0]PETSC ERROR: Object is in wrong state
>>>                     [0]PETSC ERROR:  Vec is locked read only,
>>>                     argument # 1
>>>                     [0]PETSC ERROR: See
>>>                     http://www.mcs.anl.gov/petsc/documentation/faq.html
>>>                     for trouble shooting.
>>>                     [0]PETSC ERROR: Petsc Release Version 3.6.3,
>>>                     Dec, 03, 2015
>>>                     [0]PETSC ERROR: ./Nwtun on a 64bit-debug named
>>>                     rlchen by rlchen Sat Apr
>>>                     2 15:40:32 2016
>>>                     [0]PETSC ERROR: Configure options
>>>                     --download-blacs --download-scalapack
>>>                     --download-metis --download-parmetis
>>>                     --download-exodusii
>>>                     --download-netcdf --download-hdf5
>>>                     --with-mpi-dir=/home/rlchen/soft/Program/mpich2-shared
>>>                     --with-debugging=1 --download-fblaslapack
>>>                     --download-chaco
>>>                     [0]PETSC ERROR: #1 VecGetArray() line 1646 in
>>>                     /home/rlchen/soft/petsc-3.6.3/src/vec/vec/interface/rvector.c
>>>                     [0]PETSC ERROR: #2 DMLocalToGlobalBegin() line
>>>                     1913 in
>>>                     /home/rlchen/soft/petsc-3.6.3/src/dm/interface/dm.c
>>>                     [0]PETSC ERROR: #3 FormMassTimeStepFunction()
>>>                     line 191 in
>>>                     /home/rlchen/soft/3D_fluid/FiniteVolumeMethod/PETScCodes/codefor3.6/SetupF
>>>                     unctions.c
>>>                     [0]PETSC ERROR: #4 FormFunction() line 46 in
>>>                     /home/rlchen/soft/3D_fluid/FiniteVolumeMethod/PETScCodes/codefor3.6/SetupF
>>>                     unctions.c
>>>                     [0]PETSC ERROR: #5 SNESComputeFunction() line
>>>                     2067 in
>>>                     /home/rlchen/soft/petsc-3.6.3/src/snes/interface/snes.c
>>>                     [0]PETSC ERROR: #6 SNESSolve_NEWTONLS() line 184 in
>>>                     /home/rlchen/soft/petsc-3.6.3/src/snes/impls/ls/ls.c
>>>                     [0]PETSC ERROR: #7 SNESSolve() line 3906 in
>>>                     /home/rlchen/soft/petsc-3.6.3/src/snes/interface/snes.c
>>>                     [0]PETSC ERROR: #8 SolveTimeDependent() line 843 in
>>>                     /home/rlchen/soft/3D_fluid/FiniteVolumeMethod/PETScCodes/codefor3.6/Nwtun.
>>>                     c
>>>                     [0]PETSC ERROR: #9 main() line 452 in
>>>                     /home/rlchen/soft/3D_fluid/FiniteVolumeMethod/PETScCodes/codefor3.6/Nwtun.
>>>                     c
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>     -- 
>>     What most experimenters take for granted before they begin their
>>     experiments is infinitely more interesting than any results to
>>     which their experiments lead.
>>     -- Norbert Wiener
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener

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


More information about the petsc-users mailing list