petsc-3.11.4 2019-09-28
Report Typos and Errors

VecLoad

Loads a vector that has been stored in binary or HDF5 format with VecView().

Synopsis

#include "petscvec.h"   
PetscErrorCode  VecLoad(Vec newvec, PetscViewer viewer)
Collective on PetscViewer

Input Parameters

newvec - the newly loaded vector, this needs to have been created with VecCreate() or some related function before a call to VecLoad().
viewer - binary file viewer, obtained from PetscViewerBinaryOpen() or HDF5 file viewer, obtained from PetscViewerHDF5Open()

Notes

Defaults to the standard Seq or MPI Vec, if you want some other type of Vec call VecSetFromOptions() before calling this.

The input file must contain the full global vector, as written by the routine VecView().

If the type or size of newvec is not set before a call to VecLoad, PETSc sets the type and the local and global sizes. If type and/or sizes are already set, then the same are used.

If using binary and the blocksize of the vector is greater than one then you must provide a unique prefix to the vector with PetscObjectSetOptionsPrefix((PetscObject)vec,"uniqueprefix"); BEFORE calling VecView() on the vector to be stored and then set that same unique prefix on the vector that you pass to VecLoad(). The blocksize information is stored in an ASCII file with the same name as the binary file plus a ".info" appended to the filename. If you copy the binary file, make sure you copy the associated .info file with it.

If using HDF5, you must assign the Vec the same name as was used in the Vec that was stored in the file using PetscObjectSetName(). Otherwise you will get the error message: "Cannot H5DOpen2() with Vec name NAMEOFOBJECT"

Notes for advanced users

Most users should not need to know the details of the binary storage format, since VecLoad() and VecView() completely hide these details. But for anyone who's interested, the standard binary vector storage format is
     int    VEC_FILE_CLASSID
     int    number of rows
     PetscScalar *values of all entries

In addition, PETSc automatically does the byte swapping for machines that store the bytes reversed, e.g. DEC alpha, freebsd, linux, Windows and the paragon; thus if you write your own binary read/write routines you have to swap the bytes; see PetscBinaryRead() and PetscBinaryWrite() to see how this may be done.

See Also

PetscViewerBinaryOpen(), VecView(), MatLoad(), VecLoad()

Level

intermediate

Location

src/vec/vec/interface/vector.c

Examples

src/vec/vec/examples/tutorials/ex5.c.html
src/vec/vec/examples/tutorials/ex6.c.html
src/vec/vec/examples/tutorials/ex10.c.html
src/vec/vec/examples/tutorials/ex19.c.html
src/vec/vec/examples/tutorials/ex42.c.html
src/vec/vec/examples/tutorials/ex42a.c.html
src/vec/vec/examples/tutorials/ex5f.F90.html
src/mat/examples/tutorials/ex12.c.html
src/dm/examples/tutorials/ex9.c.html
src/dm/examples/tutorials/ex10.c.html
src/dm/examples/tutorials/ex15.c.html

Implementations

VecLoad_HDF5_DA in src/dm/impls/da/gr2.c
VecLoad_Binary_DA in src/dm/impls/da/gr2.c
VecLoad_Default_DA in src/dm/impls/da/gr2.c
VecLoad_pforest in src/dm/impls/forest/p4est/pforest.c
VecLoad_pforest_Native in src/dm/impls/forest/p4est/pforest.c
VecLoad_Plex_Local in src/dm/impls/plex/plex.c
VecLoad_Plex in src/dm/impls/plex/plex.c
VecLoad_Plex_Native in src/dm/impls/plex/plex.c
VecLoad_Plex_HDF5_Internal in src/dm/impls/plex/plexhdf5.c
VecLoad_Plex_HDF5_Native_Internal in src/dm/impls/plex/plexhdf5.c

Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages