What is the error message, cut and paste the entire message?

   Barry


> On Jan 6, 2019, at 3:12 PM, Chang Liu via petsc-users 
> <petsc-users@mcs.anl.gov> wrote:
> 
> Hi All,
> Recently, when I am upgrading our code from 3.8 to 3.10, it always runs into 
> error during VecGetArrayF90 call (it is Fortran90-based code). The reason we 
> use is to access the array for our user-defined matrix-vector multiplication 
> subroutine, for example:
> 
>   subroutine mymult(A,x,y,loco_ierr) 
>    !!!!!!!!!!!!!!! matrix-vector multiplication  y=A.x 
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>     use mat_vec_mult,only:matvec
>     implicit none
>     Mat,intent(in)::A ! required by PETSc
>     Vec,intent(in)::x
>     Vec,intent(out)::y
>     PetscErrorCode,intent(out)::loco_ierr
>     PetscScalar,pointer::xx(:),yy(:)
> 
>     call VecGetArrayReadF90(x,xx,loco_ierr)
>     call VecGetArrayF90(y,yy,loco_ierr)
>     call matvec(xx,yy)
>     call VecRestoreArrayReadF90(x,xx,loco_ierr)
>     call VecRestoreArrayF90(y,yy,loco_ierr)
>     return
>  end subroutine mymult
> 
> I checked the change log on the website and saw a statement:
> TAO:
> 
>       • Added VecLock{Push|Pop} calls around user callbacks; use of 
> VecGetArray in user callbacks is now prohibited.
> Is there any relation to my issue? All the online PETSc examples and 
> description for VecGetArray/VecGetArrayF90 are the same as PETSc/3.8.  I 
> tried to add/use VecLockPop/Push, but still doesn't work.
> 
> I am confused and not sure what is the problem?
> Could I get some help? 
> Thanks,
> -- 
> Chang Liu
> PhD candidate
> Dept. of Electrical & Computer Engineering
> Ph: 765-7143357
> Email: chang....@utexas.edu

Reply via email to