On Tue, 3 Jul 2012, Barry Smith wrote: > > On Jul 3, 2012, at 3:08 AM, Blaise Bourdin wrote: > > > > > On Jul 3, 2012, at 4:10 AM, Barry Smith wrote: > > > >> > >> Blaise, > >> > >> I don't understand why the patch does anything: > >> > >> - *ierr = VecRestoreArray(*v,0);if (*ierr) return; > >> + PetscScalar *fa; > >> + *ierr = F90Array1dAccess(a,PETSC_SCALAR,(void**)&fa > >> PETSC_F90_2PTR_PARAM(ptrd)); > >> + *ierr = VecRestoreArray(*v,&fa);if (*ierr) return; > >> *ierr = F90Array1dDestroy(&a,PETSC_SCALAR PETSC_F90_2PTR_PARAM(ptrd)); > >> > >> All that passing &fa into VecRestoreArray() does is cause fa to be zeroed. > >> Why would that have any affect on anything? > > > > > > Not sure either, I quite don't understand this code, but I noticed that the > > logic of VecRestoreArrayF90 was different from that of > > DMDAVecRestoreArrayF90 > > > > src/vec/vec/interface/f90-custom/zvectorf90.c:33 > > PetscScalar *fa; > > *__ierr = F90Array1dAccess(ptr,PETSC_SCALAR,(void**)&fa > > PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return; > > *__ierr = F90Array1dDestroy(ptr,PETSC_SCALAR PETSC_F90_2PTR_PARAM(ptrd));if > > (*__ierr) return; > > It could be the above line is important; but the Accesser and restore > array are not. > > I'll have Satish apply the patch.
pushed to petsc-3.3 [petsc-dev will get this update] Satish
