# Outputting a distributed vector in PETSc

I'm working with someone else's code that uses PETSc 3.0.0-p9.

They have a vector at the end of the computation that is distributed among a number of different processors, and I want to output that vector to a file.

Unfortunately, the way they do it doesn't appear to work. Is there an easy way to write (the real part) of a vector to a file in PETSc?

The current way it is done is to write the PETScVector to a C++ STL vector (on all processors), and then write the vector out to a file (on one processor).

This approach doesn't work, because only the values on that processor are written to file.

Is there a "standard PETSc" way of outputting a vector to a file?

Thanks!

-
Could you provide more details about what you have tried before, and the error messages that it produced? –  Paul Jan 31 '12 at 19:21
Hopefully this is better. –  Andrew Spott Jan 31 '12 at 19:28

Normally you can use VecView() for everything. You probably want to open the PetscViewer using PetscViewerBinaryOpen, in which case VecView() will write efficiently in parallel to the binary file.. You can read it from a PETSc program using VecLoad(), from MATLAB/Octave with PetscBinaryRead() (add $PETSC_DIR/bin/matlab/ to your path), or from Python (scripts in $PETSC_DIR/bin/pythonscripts/).