<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Hey Barry,
<div class=""><br class="">
</div>
<div class="">Chang is one of my users and I’m out of my depth here:</div>
<div class=""><br class="">
</div>
<div class="">
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
> [0]PETSC ERROR: --------------------- Error Message<br class="">
> --------------------------------------------------------------<br class="">
> [0]PETSC ERROR: Corrupt argument:<br class="">
<br class="">
</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
> [0]PETSC ERROR: Invalid Pointer to Object: Parameter # 1<br class="">
</div>
<br style="font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);" class="">
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
> [0]PETSC ERROR: #1 VecGetArray() line 1578 in</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
<br class="">
</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
It looks like VecGetArrayF90 is no longer allowed in callbacks, which is what seems to be happening here.</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
<br class="">
</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
Victor.</div>
<div class="message-stanza open" style="color: rgb(80, 0, 80); font-family: arial, helvetica, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255);">
<br class="">
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Jan 6, 2019, at 5:05 PM, Smith, Barry F. via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class=""><br class="">
  What is the error message, cut and paste the entire message?<br class="">
<br class="">
  Barry<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On Jan 6, 2019, at 3:12 PM, Chang Liu via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:<br class="">
<br class="">
Hi All,<br class="">
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:<br class="">
<br class="">
 subroutine mymult(A,x,y,loco_ierr) <br class="">
  !!!!!!!!!!!!!!! matrix-vector multiplication  y=A.x !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br class="">
   use mat_vec_mult,only:matvec<br class="">
   implicit none<br class="">
   Mat,intent(in)::A ! required by PETSc<br class="">
   Vec,intent(in)::x<br class="">
   Vec,intent(out)::y<br class="">
   PetscErrorCode,intent(out)::loco_ierr<br class="">
   PetscScalar,pointer::xx(:),yy(:)<br class="">
<br class="">
   call VecGetArrayReadF90(x,xx,loco_ierr)<br class="">
   call VecGetArrayF90(y,yy,loco_ierr)<br class="">
   call matvec(xx,yy)<br class="">
   call VecRestoreArrayReadF90(x,xx,loco_ierr)<br class="">
   call VecRestoreArrayF90(y,yy,loco_ierr)<br class="">
   return<br class="">
end subroutine mymult<br class="">
<br class="">
I checked the change log on the website and saw a statement:<br class="">
TAO:<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>• Added VecLock{Push|Pop} calls around user callbacks; use of VecGetArray in user callbacks is now prohibited.<br class="">
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.<br class="">
<br class="">
I am confused and not sure what is the problem?<br class="">
Could I get some help? <br class="">
Thanks,<br class="">
-- <br class="">
Chang Liu<br class="">
PhD candidate<br class="">
Dept. of Electrical & Computer Engineering<br class="">
Ph: 765-7143357<br class="">
<a href="mailto:chang.liu@utexas.edu" class="">Email: chang.liu@utexas.edu</a><br class="">
</blockquote>
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>