[petsc-users] Vec is locked read only

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


Got it. Thanks Matt.

Best regards,
Rongliang


On 04/02/2016 09:18 PM, Rongliang Chen wrote:
> 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/9ef81e25/attachment-0001.html>


More information about the petsc-users mailing list