Actual source code: senddense.c
1: #define PETSC_DLL
3: #include src/sys/viewer/impls/socket/socket.h
7: /*@C
8: PetscViewerSocketPutScalar - Passes a Scalar array to a Socket PetscViewer.
10: Input Parameters:
11: + viewer - obtained from PetscViewerSocketOpen()
12: . m - number of rows of array
13: . m - number of columns of array
14: - array - the array stored in column ordering (matrix or vector data)
16: Level: advanced
18: Notes:
19: Most users should not call this routine, but instead should employ
20: either
21: .vb
22: MatView(Mat matrix,PetscViewer viewer)
23: or
24: VecView(Vec vector,PetscViewer viewer)
25: .ve
27: Concepts: Matlab^sending data
28: Concepts: sockets^sending data
30: .seealso: PetscViewerSocketOpen(), MatView(), VecView(), PetscViewerSocketPutReal(), PetscViewerSocketPutScalar(),
31: PETSC_VIEWER_SOCKET_, PETSC_VIEWER_SOCKET_WORLD, PETSC_VIEWER_SOCKET_SELF
32: @*/
33: PetscErrorCode PetscViewerSocketPutScalar(PetscViewer viewer,PetscInt m,PetscInt n,PetscScalar *array)
34: {
35: PetscViewer_Socket *vmatlab = (PetscViewer_Socket*)viewer->data;
36: PetscErrorCode ierr;
37: PetscMPIInt rank;
38: int t = vmatlab->port,type = DENSEREAL,value;
41: MPI_Comm_rank(viewer->comm, &rank);
42: if (rank) {
43: SETERRQ(PETSC_ERR_ARG_WRONG, "Socket viewers may only write from process 0");
44: }
45: PetscBinaryWrite(t,&type,1,PETSC_INT,PETSC_FALSE);
46: PetscBinaryWrite(t,&m,1,PETSC_INT,PETSC_FALSE);
47: PetscBinaryWrite(t,&n,1,PETSC_INT,PETSC_FALSE);
48: #if !defined(PETSC_USE_COMPLEX)
49: value = 0;
50: #else
51: value = 1;
52: #endif
53: PetscBinaryWrite(t,&value,1,PETSC_INT,PETSC_FALSE);
54: PetscBinaryWrite(t,array,m*n,PETSC_SCALAR,PETSC_FALSE);
55: return(0);
56: }
60: /*@C
61: PetscViewerSocketPutReal - Passes a double (or single) precision array to
62: a Matlab PetscViewer.
64: Input Parameters:
65: + viewer - obtained from PetscViewerSocketOpen()
66: . m - number of rows of array
67: . m - number of columns of array
68: - array - the array stored in column ordering (matrix or vector data)
70: Level: advanced
72: Notes:
73: Most users should not call this routine, but instead should employ
74: either
75: .vb
76: MatView(Mat matrix,PetscViewer viewer)
77: or
78: VecView(Vec vector,PetscViewer viewer)
79: .ve
81: Concepts: Matlab^sending data
82: Concepts: sockets^sending data
84: .seealso: PetscViewerSocketOpen(), MatView(), VecView(), PetscViewerSocketPutInt(), PetscViewerSocketPutReal(),
85: PETSC_VIEWER_SOCKET_, PETSC_VIEWER_SOCKET_WORLD, PETSC_VIEWER_SOCKET_SELF
86: @*/
87: PetscErrorCode PetscViewerSocketPutReal(PetscViewer viewer,PetscInt m,PetscInt n,PetscReal *array)
88: {
89: PetscViewer_Socket *vmatlab = (PetscViewer_Socket*)viewer->data;
90: PetscErrorCode ierr;
91: PetscMPIInt rank;
92: int t = vmatlab->port,type = DENSEREAL,value;
95: MPI_Comm_rank(viewer->comm, &rank);
96: if (rank) {
97: SETERRQ(PETSC_ERR_ARG_WRONG, "Socket viewers may only write from process 0");
98: }
99: PetscBinaryWrite(t,&type,1,PETSC_INT,PETSC_FALSE);
100: PetscBinaryWrite(t,&m,1,PETSC_INT,PETSC_FALSE);
101: PetscBinaryWrite(t,&n,1,PETSC_INT,PETSC_FALSE);
102: value = 0;
103: PetscBinaryWrite(t,&value,1,PETSC_INT,PETSC_FALSE);
104: PetscBinaryWrite(t,array,m*n,PETSC_REAL,PETSC_FALSE);
105: return(0);
106: }
111: /*@C
112: PetscViewerSocketPutInt - Passes an integer array to a Socket PetscViewer.
114: Input Parameters:
115: + viewer - obtained from PetscViewerSocketOpen()
116: . m - number of rows of array
117: - array - the array stored in column ordering (matrix or vector data)
119: Level: advanced
121: Notes:
122: Most users should not call this routine, but instead should employ either
123: .vb
124: MatView(Mat matrix,PetscViewer viewer)
125: or
126: VecView(Vec vector,PetscViewer viewer)
127: .ve
129: Concepts: Matlab^sending data
130: Concepts: sockets^sending data
132: .seealso: PetscViewerSocketOpen(), MatView(), VecView(), PetscViewerSocketPutScalar(), PetscViewerSocketPutReal(),
133: PETSC_VIEWER_SOCKET_, PETSC_VIEWER_SOCKET_WORLD, PETSC_VIEWER_SOCKET_SELF
134: @*/
135: PetscErrorCode PetscViewerSocketPutInt(PetscViewer viewer,PetscInt m,PetscInt *array)
136: {
137: PetscViewer_Socket *vmatlab = (PetscViewer_Socket*)viewer->data;
138: PetscErrorCode ierr;
139: PetscMPIInt rank;
140: int t = vmatlab->port,type = DENSEINT;
143: MPI_Comm_rank(viewer->comm, &rank);
144: if (rank) {
145: SETERRQ(PETSC_ERR_ARG_WRONG, "Socket viewers may only write from process 0");
146: }
147: PetscBinaryWrite(t,&type,1,PETSC_INT,PETSC_FALSE);
148: PetscBinaryWrite(t,&m,1,PETSC_INT,PETSC_FALSE);
149: PetscBinaryWrite(t,array,m,PETSC_INT,PETSC_FALSE);
150: return(0);
151: }