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