Yes you are correct I am sorry about that. I meant DMGetLocalVector, and the ilk.
here is a dummy function I am working on to try to figure out what is going wrong: ///////////////////////////////////////////// // Get the information to operate on // Make Local Versions Vec XLoc; DM Xdm; PetscSection XSec; PetscReal *XPoints=NULL; PetscErrorCode ierr; ierr = DMGetLocalVector(msh.dm,&XLoc);chk; ierr = DMGetCoordinateDM(msh.dm,&Xdm);chk; ierr = DMGetCoordinatesLocal(msh.dm, &XLoc);chk; VecView(XLoc,pview); ierr = DMDAVecGetArrayRead(Xdm,XLoc,&XPoints);chk; ierr = DMDAVecRestoreArrayRead(Xdm,XLoc,&XPoints);chk; ierr = DMRestoreLocalVector(Xdm,&XLoc);chk; //////////// end of function the error I get that seems to appear after the 2nd call or so is: 0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [0]PETSC ERROR: Invalid argument [0]PETSC ERROR: Wrong type of object: Parameter # 2 [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. [0]PETSC ERROR: Petsc Release Version 3.6.1, Jul, 22, 2015 [0]PETSC ERROR: ./net.out on a arch-darwin-c-debug named Matthews-MacBook-Pro-2.local by mkury Sat Apr 16 01:33:34 2016 [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-fblaslapack --download-mpich --download-petsc4py --download-triangle --download-chaco --download-metis --download-parmetis --download-ctetgen [0]PETSC ERROR: #2294 DMDAVecGetArrayRead() line 299 in /usr/local/petsc-3.6.1/src/dm/impls/da/dagetarray.c [0]PETSC ERROR: #2295 Element_Investigation_TEST() line 248 in /Users/mkury/Documents/Code/petFEM/src/elementFunctions.c thanks again, Matt On Apr 16, 2016, at 1:21 AM, Jed Brown <[email protected]> wrote: > Matthew Kury <[email protected]> writes: > >> Hello, >> >> I have done some reading and I have not been able to find out what the >> proper way to create and use vectors within a function. >> >> If I have a function that passes in dm and V then: >> +++ >> DMPlexGetLocalVec(dm, &VLocal) ; > > This function doesn't exist, and neither does DMPlexCreateLocalVec (from > the subject of your email), but when I gaze into my crystal ball, it > says you're probably spelling it DMGetLocalVector. Please send the full > error message. > >> DMGlobalToLocalBegin(dm,V,INSERT_VALUES,VLocal); >> DMGlobalToLocalEnd(dm,V,INSERT_VALUES,VLocal) ; >> >> VecGetArray(VLoc,VLocalArray); >> >> “Stuff with VLocalArray” >> >> VecRestoreArray(VLoc,VLocalArray); >> >> DMLocalToGlobalBegin(dm,VLocal,ADD_VALUES,V); >> DMLocalToGlobalEnd(dm,VLocal,ADD_VALUES,V); >> >> DMRestoreLocalVector(dm,&VLocal); >> +++ >> >> The second time I call the function I get errors with the VecGetArray() >> function. I would appreciate any advice as to what is going wrong. >> >> Thank you, >> >> Matthew
