[petsc-users] Vec is locked read only
Rongliang Chen
rl.chen at siat.ac.cn
Sat Apr 2 07:46:26 CDT 2016
But I need to setup the boundary conditions for the solution vector X,
which is in FormMassTimeStep().
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160402/76c1c4cd/attachment-0001.html>
More information about the petsc-users
mailing list