[petsc-users] Vec is locked read only

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


On 04/02/2016 09:08 PM, Matthew Knepley wrote:
> On Sat, Apr 2, 2016 at 8:03 AM, Rongliang Chen <rl.chen at siat.ac.cn 
> <mailto:rl.chen at siat.ac.cn>> wrote:
>
>     Hi Matt,
>
>     Many thanks for your helps. I will change the way that I used for
>     the boundary condition setup.
>
>
> I will note that we (Barry, Jed, Mark, and I at least) have adopted 
> the view that by and large
>
>   a) global vectors are for solvers
>
>   b) local vectors are for assembly
>
> For me, that means local vectors have ghost values and boundary 
> conditions, but global vectors
> have them removed. This is how SNES ex12 and ex62 are organized.
>
Does this means that if I want to use the local vector (obtained by 
DMGlobalToLocalBegin and DMGlobalToLocalEnd), I need to reset the 
boundary conditions for the local vector before I use it?

Best regards,
Rongliang

>   Thanks,
>
>      Matt
>
>     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
>
>
>
>
> -- 
> 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/375d0ab6/attachment-0001.html>


More information about the petsc-users mailing list