Actual source code: sendsparse.c
1: /*$Id: sendsparse.c,v 1.37 2001/08/06 21:13:29 bsmith Exp $*/
3: #include src/sys/src/viewer/impls/socket/socket.h
5: /*--------------------------------------------------------------*/
6: /*@C
7: PetscViewerSocketPutSparse_Private - Passes a sparse matrix in AIJ format
8: to a Socket PetscViewer.
10: Input Parameters:
11: + vw - obtained from PetscViewerSocketOpen()
12: . m - number of rows of matrix
13: . m - number of columns of matrix
14: . nnz - number of nonzeros in matrix
15: . v - the nonzero entries
16: . r - the row pointers (m + 1 of them)
17: - c - the column pointers (nnz of them)
19: Level: developer
21: Notes:
22: Most users should not call this routine, but instead should employ
23: $ MatView(Mat matrix,PetscViewer viewer)
25: Notes for Advanced Users:
26: PetscViewerSocketPutSparse_Private() actually passes the matrix transpose, since
27: Matlab prefers column oriented storage.
29: Concepts: Matlab^sending data, sparse matrices
30: Concepts: Sockets^sending data, sparse matrices
32: .seealso: PetscViewerSocketOpen(), MatView()
33: @*/
34: int PetscViewerSocketPutSparse_Private(PetscViewer vw,int m,int n,int nnz,PetscScalar *v,int *r,int *c)
35: {
36: PetscViewer_Socket *vmatlab = (PetscViewer_Socket*)vw->data;
37: int ierr,t = vmatlab->port,type = SPARSEREAL,value;
40: PetscBinaryWrite(t,&type,1,PETSC_INT,0);
41: PetscBinaryWrite(t,&m,1,PETSC_INT,0);
42: PetscBinaryWrite(t,&n,1,PETSC_INT,0);
43: PetscBinaryWrite(t,&nnz,1,PETSC_INT,0);
44: #if !defined(PETSC_USE_COMPLEX)
45: value = 0;
46: #else
47: value = 1;
48: #endif
49: PetscBinaryWrite(t,&value,1,PETSC_INT,0);
50: PetscBinaryWrite(t,v,nnz,PETSC_REAL,0);
51: PetscBinaryWrite(t,r,m+1,PETSC_INT,0);
52: PetscBinaryWrite(t,c,nnz,PETSC_INT,0);
53: return(0);
54: }