On 19 August 2015 at 10:54, TAY wee-beng <[email protected]> wrote: > > On 21/7/2015 7:28 PM, Matthew Knepley wrote: > > On Tue, Jul 21, 2015 at 1:35 AM, TAY wee-beng <[email protected]> wrote: > >> Hi, >> >> I need to check the contents of the array which was declared using: >> >> PetscScalar,pointer :: >> u_array(:,:,:),v_array(:,:,:),w_array(:,:,:),p_array(:,:,:) >> >> I tried to use : >> >> call PetscViewerASCIIOpen(MPI_COMM_WORLD,"pres.txt",viewer,ierr) >> >> call VecView(p_array,viewer,ierr) >> >> or >> >> call MatView(p_array,viewer,ierr) >> >> call PetscViewerDestroy(viewer,ierr) >> >> but I got segmentation error. So is there a PETSc routine I can use? > > > No. Those routines work only for Vec objects. You could > > a) Declare a DMDA of the same size > > b) Use DMDAVecGetArrayF90() to get out the multidimensional array > > c) Use that in your code > > d) Use VecView() on the original vector > > > Hi, > > Supposed I need to check the contents of the u_array which was declared > using: > > PetscScalar,pointer :: u_array(:,:,:) > > call > DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,& > > > size_z,1,PETSC_DECIDE,PETSC_DECIDE,1,stencil_width,lx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da_u,ierr) > > call DMDAVecGetArrayF90(da_u,u_local,u_array,ierr) > > call PetscViewerASCIIOpen(MPI_COMM_WORLD,"u.txt",viewer,ierr) > > call VecView(array,viewer,ierr) >
The first argument of VecView must be of type Vec (as Matt noted). It looks you are passing in an array of PetscScalar's. > > call PetscViewerDestroy(viewer,ierr) > > Is this the correct way? > > > Matt > > >> >> -- >> Thank you >> >> Yours sincerely, >> >> TAY wee-beng >> >> > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > >
