typedef struct {
  PetscScalar    *aa;
  PetscInt       *jj;
  PetscInt       Istart,Iend,*numColsPerLocRow;
  PetscInt       *allIstart,*allnumNNZ;
  off_t          off1,off2;
  PetscTruth     firstTime;
  PetscTruth     lastTime;
} MatLayout;

extern PetscErrorCode VecAXPBYmy(PetscScalar a,PetscScalar b,Vec x,Vec y,Vec *z);
extern PetscErrorCode MatAXPBYmy(PetscScalar a,PetscScalar b,Mat X,Mat Y,Mat *Z);
extern PetscErrorCode VecLoadIntoVectorRandomAccess(PetscViewer viewer,Vec vec, PetscInt length, PetscInt iRec);
extern PetscErrorCode VecLoadVecIntoArray(Vec v, const char filename[], PetscScalar *arr);
extern PetscErrorCode MatLoadIntoMatrix(PetscViewer viewer, Mat A);
extern PetscErrorCode MatLoadIntoMatrix2(const char filename[], Mat A);
extern PetscErrorCode MatLoadIntoMatrix3(const char filename[], Mat A);
extern PetscErrorCode MatLoadIntoMatrix4(const char filename[], Mat A, MatLayout *user);
extern PetscErrorCode MatGetSizeFromFile(const char filename[], PetscInt *M, PetscInt *N, PetscInt *nnz);

