Actual source code: sendsparse.c

  1: #define PETSC_DLL

 3:  #include src/sys/src/viewer/impls/socket/socket.h

  5: /*--------------------------------------------------------------*/
  8: /*
  9:    PetscViewerSocketPutSparse_Private - Passes a sparse matrix in AIJ format
 10:              to a Socket PetscViewer. 

 12:    Input Parameters:
 13: +  vw - obtained from PetscViewerSocketOpen()
 14: .  m - number of rows of matrix
 15: .  m - number of columns of matrix
 16: .  nnz - number of nonzeros in matrix
 17: .  v - the nonzero entries
 18: .  r - the row pointers (m + 1 of them)
 19: -  c - the column pointers (nnz of them)

 21:     Level: developer

 23:    Notes:
 24:    Most users should not call this routine, but instead should employ
 25: $     MatView(Mat matrix,PetscViewer viewer)

 27:    Notes for Advanced Users:
 28:    PetscViewerSocketPutSparse_Private() actually passes the matrix transpose, since 
 29:    Matlab prefers column oriented storage.

 31:    Concepts: Matlab^sending data, sparse matrices
 32:    Concepts: Sockets^sending data, sparse matrices

 34: .seealso: PetscViewerSocketOpen(), MatView()
 35: */
 36: PetscErrorCode PetscViewerSocketPutSparse_Private(PetscViewer vw,PetscInt m,PetscInt n,PetscInt nnz,PetscScalar *v,PetscInt *r,PetscInt *c)
 37: {
 38:   PetscViewer_Socket *vmatlab = (PetscViewer_Socket*)vw->data;
 39:   PetscErrorCode     ierr;
 40:   int                t = vmatlab->port,type = SPARSEREAL,value;

 43:   PetscBinaryWrite(t,&type,1,PETSC_INT,PETSC_FALSE);
 44:   PetscBinaryWrite(t,&m,1,PETSC_INT,PETSC_FALSE);
 45:   PetscBinaryWrite(t,&n,1,PETSC_INT,PETSC_FALSE);
 46:   PetscBinaryWrite(t,&nnz,1,PETSC_INT,PETSC_FALSE);
 47: #if !defined(PETSC_USE_COMPLEX)
 48:   value = 0;
 49: #else
 50:   value = 1;
 51: #endif
 52:   PetscBinaryWrite(t,&value,1,PETSC_INT,PETSC_FALSE);
 53:   PetscBinaryWrite(t,v,nnz,PETSC_REAL,PETSC_FALSE);
 54:   PetscBinaryWrite(t,r,m+1,PETSC_INT,PETSC_FALSE);
 55:   PetscBinaryWrite(t,c,nnz,PETSC_INT,PETSC_FALSE);
 56:   return(0);
 57: }