[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