[petsc-users] Vec is locked read only

Rongliang Chen rl.chen at siat.ac.cn
Sat Apr 2 08:03:22 CDT 2016


Hi Matt,

Many thanks for your helps. I will change the way that I used for the 
boundary condition setup.

Best regards,
Rongliang


On 04/02/2016 08:49 PM, Matthew Knepley wrote:
> On Sat, Apr 2, 2016 at 7:46 AM, Rongliang Chen <rl.chen at siat.ac.cn 
> <mailto:rl.chen at siat.ac.cn>> wrote:
>
>     But I need to setup the boundary conditions for the solution
>     vector X, which is in FormMassTimeStep().
>
>
> Make a copy. The solution vector is used in the solver, and you have 
> no idea exactly what it is doing with it.
> Or put your boundary conditions in the initial guess to SNESSolve().
>
>    Matt
>
>     Best regards,
>     Rongliang
>
>
>     On 04/02/2016 08:37 PM, Matthew Knepley wrote:
>>     On Sat, Apr 2, 2016 at 7:37 AM, Rongliang Chen
>>     <rl.chen at siat.ac.cn <mailto:rl.chen at siat.ac.cn>> wrote:
>>
>>         Hi Matt,
>>
>>         How to check in the explicit method? This kind of errors does
>>         come out in the explicit method.
>>
>>
>>     You said "that is I use the explicit method with the same
>>     function FormMassTimeStep(), this error disappeared"
>>
>>         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?
>>
>>
>>     Yes.
>>
>>        Matt
>>
>>         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
>>
>>
>>
>>
>>     -- 
>>     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/00585963/attachment-0001.html>


More information about the petsc-users mailing list