On Dec 14, 2011, at 8:00 AM, robert wrote:

> Hello, 
> 
> I am quite new to petsc and therefore my question might be quite trivial.
> 
> I have a 1D finite difference code and want to store several vectors in a 
> binary:
> 
>     ierr = PetscViewerCreate(PETSC_COMM_WORLD,&viewer);CHKERRQ(ierr);
>     ierr = 
> PetscViewerBinaryOpen(PETSC_COMM_WORLD,"out.bin",FILE_MODE_APPEND,&viewer); 
> CHKERRQ(ierr);
>     ierr = PetscObjectSetName((PetscObject)u,"u");CHKERRQ(ierr);
>     ierr = PetscObjectSetName((PetscObject)rhs,"rhs");CHKERRQ(ierr);
>     ierr = VecView(u,viewer); CHKERRQ(ierr);
>     ierr = VecView(rhs,viewer);CHKERRQ(ierr);
> 
> However, when I read the file with matlab (PetscBinaryRead.m) I only get the 
> first vector.

   1) Did you call PetscViewerDestroy() before the end of the program? If not 
called all the data may not be flushed into the file.

   2) How are you reading the vectors into Matlab? For example   [u,rhs] = 
PetscBinaryRead('filename') will read in two vectors.  If you want to call 
PetscBinaryRead() repeatedly to read more information than read the help for 
PetscBinaryRead() carefully, you cannot simply call u = 
PetscBinaryRead('filename'); rhs = PetscBinaryRead('filename') and hope to get 
the second vector 

  For example: fd = PetscOpenFile('filename');
                u = PetscBinaryRead(fd);   % get first vector
                rhs = PetscBinaryRead(fd);  % get second vector

  Barry


> 
> In further application I would like to use something similar but putting out 
> the solution vector every timestep.
> 
> Could someone just provide me some sample code?
> 
> Thanks, 
> Robert
> 
> 

Reply via email to