Actual source code: petscviewer.h
1: /* $Id: petscviewer.h,v 1.85 2001/08/06 21:13:28 bsmith Exp $ */
2: /*
3: PetscViewers are objects where other objects can be looked at or stored.
4: */
8: #if defined(PETSC_USE_EXTERN_CXX) && defined(__cplusplus)
9: extern "C" {
10: #endif
12: extern int PETSC_VIEWER_COOKIE;
14: /*S
15: PetscViewer - Abstract PETSc object that helps view (in ASCII, binary, graphically etc)
16: other PETSc objects
18: Level: beginner
20: Concepts: viewing
22: .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType
23: S*/
24: typedef struct _p_PetscViewer* PetscViewer;
26: #if defined(PETSC_USE_EXTERN_CXX) && defined(__cplusplus)
27: }
28: #endif
31: /*
32: petsc.h must be included AFTER the definition of PetscViewer for ADIC to
33: process correctly.
34: */
35: #include petsc.h
36: PETSC_EXTERN_CXX_BEGIN
37: /*E
38: PetscViewerType - String with the name of a PETSc PETScViewer
40: Level: beginner
42: .seealso: PetscViewerSetType(), PetscViewer
43: E*/
44: #define PetscViewerType char*
45: #define PETSC_VIEWER_SOCKET "socket"
46: #define PETSC_VIEWER_ASCII "ascii"
47: #define PETSC_VIEWER_BINARY "binary"
48: #define PETSC_VIEWER_STRING "string"
49: #define PETSC_VIEWER_DRAW "draw"
50: #define PETSC_VIEWER_AMS "ams"
51: #define PETSC_VIEWER_VU "vu"
52: #define PETSC_VIEWER_MATHEMATICA "mathematica"
53: #define PETSC_VIEWER_SILO "silo"
54: #define PETSC_VIEWER_NETCDF "netcdf"
55: #define PETSC_VIEWER_HDF4 "hdf4"
56: #define PETSC_VIEWER_MATLAB "matlab"
58: extern PetscFList PetscViewerList;
59: EXTERN int PetscViewerRegisterAll(const char *);
60: EXTERN int PetscViewerRegisterDestroy(void);
62: EXTERN int PetscViewerRegister(const char*,const char*,const char*,int(*)(PetscViewer));
64: /*MC
65: PetscViewerRegisterDynamic - Adds a method to the Krylov subspace solver package.
67: Synopsis:
68: int PetscViewerRegisterDynamic(char *name_solver,char *path,char *name_create,int (*routine_create)(PetscViewer))
70: Not Collective
72: Input Parameters:
73: + name_solver - name of a new user-defined solver
74: . path - path (either absolute or relative) the library containing this solver
75: . name_create - name of routine to create method context
76: - routine_create - routine to create method context
78: Level: developer
80: Notes:
81: PetscViewerRegisterDynamic() may be called multiple times to add several user-defined solvers.
83: If dynamic libraries are used, then the fourth input argument (routine_create)
84: is ignored.
86: Sample usage:
87: .vb
88: PetscViewerRegisterDynamic("my_viewer_type",/home/username/my_lib/lib/libO/solaris/mylib.a,
89: "MyViewerCreate",MyViewerCreate);
90: .ve
92: Then, your solver can be chosen with the procedural interface via
93: $ PetscViewerSetType(ksp,"my_viewer_type")
94: or at runtime via the option
95: $ -viewer_type my_viewer_type
97: Concepts: registering^Viewers
99: .seealso: PetscViewerRegisterAll(), PetscViewerRegisterDestroy()
100: M*/
101: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
102: #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,0)
103: #else
104: #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,d)
105: #endif
107: EXTERN int PetscViewerCreate(MPI_Comm,PetscViewer*);
108: EXTERN int PetscViewerSetFromOptions(PetscViewer);
110: EXTERN int PetscViewerASCIIOpen(MPI_Comm,const char[],PetscViewer*);
111: typedef enum {PETSC_FILE_RDONLY,PETSC_FILE_WRONLY,PETSC_FILE_CREATE} PetscViewerFileType;
112: EXTERN int PetscViewerBinaryOpen(MPI_Comm,const char[],PetscViewerFileType,PetscViewer*);
113: EXTERN int PetscViewerSocketOpen(MPI_Comm,const char[],int,PetscViewer*);
114: EXTERN int PetscViewerStringOpen(MPI_Comm,char[],int,PetscViewer*);
115: EXTERN int PetscViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,PetscViewer*);
116: EXTERN int PetscViewerAMSSetCommName(PetscViewer,const char[]);
117: EXTERN int PetscViewerMathematicaOpen(MPI_Comm, int, const char[], const char[], PetscViewer *);
118: EXTERN int PetscViewerSiloOpen(MPI_Comm, const char[], PetscViewer *);
119: EXTERN int PetscViewerMatlabOpen(MPI_Comm,const char[],PetscViewerFileType,PetscViewer*);
121: EXTERN int PetscViewerGetType(PetscViewer,PetscViewerType*);
122: EXTERN int PetscViewerSetType(PetscViewer,const PetscViewerType);
123: EXTERN int PetscViewerDestroy(PetscViewer);
124: EXTERN int PetscViewerGetSingleton(PetscViewer,PetscViewer*);
125: EXTERN int PetscViewerRestoreSingleton(PetscViewer,PetscViewer*);
128: /*E
129: PetscViewerFormat - Way a viewer presents the object
131: Level: beginner
133: .seealso: PetscViewerSetFormat(), PetscViewer, PetscViewerType, PetscViewerPushFormat(), PetscViewerPopFormat()
134: E*/
135: typedef enum {
136: PETSC_VIEWER_ASCII_DEFAULT,
137: PETSC_VIEWER_ASCII_MATLAB,
138: PETSC_VIEWER_ASCII_MATHEMATICA,
139: PETSC_VIEWER_ASCII_IMPL,
140: PETSC_VIEWER_ASCII_INFO,
141: PETSC_VIEWER_ASCII_INFO_DETAIL,
142: PETSC_VIEWER_ASCII_COMMON,
143: PETSC_VIEWER_ASCII_SYMMODU,
144: PETSC_VIEWER_ASCII_INDEX,
145: PETSC_VIEWER_ASCII_DENSE,
146: PETSC_VIEWER_BINARY_DEFAULT,
147: PETSC_VIEWER_BINARY_NATIVE,
148: PETSC_VIEWER_DRAW_BASIC,
149: PETSC_VIEWER_DRAW_LG,
150: PETSC_VIEWER_DRAW_CONTOUR,
151: PETSC_VIEWER_DRAW_PORTS,
152: PETSC_VIEWER_NATIVE,
153: PETSC_VIEWER_NOFORMAT,
154: PETSC_VIEWER_ASCII_FACTOR_INFO} PetscViewerFormat;
156: EXTERN int PetscViewerSetFormat(PetscViewer,PetscViewerFormat);
157: EXTERN int PetscViewerPushFormat(PetscViewer,PetscViewerFormat);
158: EXTERN int PetscViewerPopFormat(PetscViewer);
159: EXTERN int PetscViewerGetFormat(PetscViewer,PetscViewerFormat*);
160: EXTERN int PetscViewerFlush(PetscViewer);
162: /*
163: Operations explicit to a particular class of viewers
164: */
166: /*E
167: PetscViewerFormat - Access mode for a file.
169: Level: beginner
171: .seealso: PetscViewerASCIISetMode()
172: E*/
173: typedef enum {FILE_MODE_READ, FILE_MODE_WRITE, FILE_MODE_APPEND, FILE_MODE_UPDATE, FILE_MODE_APPEND_UPDATE} PetscFileMode;
175: EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**);
176: EXTERN int PetscViewerASCIISetMode(PetscViewer,PetscFileMode);
177: EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...) PETSC_PRINTF_FORMAT_CHECK(2,3);
178: EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...) PETSC_PRINTF_FORMAT_CHECK(2,3);
179: EXTERN int PetscViewerASCIIPushTab(PetscViewer);
180: EXTERN int PetscViewerASCIIPopTab(PetscViewer);
181: EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth);
182: EXTERN int PetscViewerASCIISetTab(PetscViewer,int);
183: EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*);
184: EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **);
185: EXTERN int PetscViewerSetFileType(PetscViewer,PetscViewerFileType);
186: EXTERN int PetscViewerStringSPrintf(PetscViewer,const char[],...) PETSC_PRINTF_FORMAT_CHECK(2,3);
187: EXTERN int PetscViewerStringSetString(PetscViewer,char[],int);
188: EXTERN int PetscViewerDrawClear(PetscViewer);
189: EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int);
190: EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int);
191: EXTERN int PetscViewerBinarySkipInfo(PetscViewer);
192: EXTERN int PetscViewerBinaryLoadInfo(PetscViewer);
195: EXTERN int PetscViewerSetFilename(PetscViewer,const char[]);
196: EXTERN int PetscViewerGetFilename(PetscViewer,char**);
198: EXTERN int PetscPLAPACKInitializePackage(char *);
199: EXTERN int PetscPLAPACKFinalizePackage(void);
201: EXTERN int PetscViewerVUGetPointer(PetscViewer, FILE**);
202: EXTERN int PetscViewerVUSetMode(PetscViewer, PetscFileMode);
203: EXTERN int PetscViewerVUSetVecSeen(PetscViewer, PetscTruth);
204: EXTERN int PetscViewerVUGetVecSeen(PetscViewer, PetscTruth *);
205: EXTERN int PetscViewerVUPrintDeferred(PetscViewer, const char [], ...) PETSC_PRINTF_FORMAT_CHECK(2,3);
206: EXTERN int PetscViewerVUFlushDeferred(PetscViewer);
208: EXTERN int PetscViewerMathematicaInitializePackage(char *);
209: EXTERN int PetscViewerMathematicaFinalizePackage(void);
210: EXTERN int PetscViewerMathematicaGetName(PetscViewer, const char **);
211: EXTERN int PetscViewerMathematicaSetName(PetscViewer, const char []);
212: EXTERN int PetscViewerMathematicaClearName(PetscViewer);
213: EXTERN int PetscViewerMathematicaSkipPackets(PetscViewer, int);
215: EXTERN int PetscViewerSiloGetName(PetscViewer, char **);
216: EXTERN int PetscViewerSiloSetName(PetscViewer, const char []);
217: EXTERN int PetscViewerSiloClearName(PetscViewer);
218: EXTERN int PetscViewerSiloGetMeshName(PetscViewer, char **);
219: EXTERN int PetscViewerSiloSetMeshName(PetscViewer, const char []);
220: EXTERN int PetscViewerSiloClearMeshName(PetscViewer);
222: EXTERN int PetscViewerNetcdfOpen(MPI_Comm,const char[],PetscViewerFileType,PetscViewer*);
223: EXTERN int PetscViewerNetcdfGetID(PetscViewer, int *);
225: EXTERN int PetscViewerHDF4Open(MPI_Comm,const char[],PetscViewerFileType,PetscViewer*);
226: EXTERN int PetscViewerHDF4WriteSDS(PetscViewer viewer, float *xf, int d, int *dims, int bs);
228: /*
229: These are all the default viewers that do not have
230: to be explicitly opened
231: */
232: EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm);
233: EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm);
234: EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm);
235: EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm);
236: EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm);
237: EXTERN PetscViewer PETSC_VIEWER_MATLAB_(MPI_Comm);
238: EXTERN PetscViewer PETSC_VIEWER_MATHEMATICA_WORLD_PRIVATE;
240: #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF)
241: #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD)
243: /*MC
244: PETSC_VIEWER_STDOUT_WORLD - same as PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD)
246: Level: beginner
247: M*/
248: #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD)
250: /*MC
251: PETSC_VIEWER_STDOUT_SELF - same as PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF)
253: Level: beginner
254: M*/
255: #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF)
257: /*MC
258: PETSC_VIEWER_DRAW_WORLD - same as PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD)
260: Level: intermediate
261: M*/
262: #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD)
264: /*MC
265: PETSC_VIEWER_DRAW_SELF - same as PETSC_VIEWER_DRAW_(PETSC_COMM_SELF)
267: Level: intermediate
268: M*/
269: #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF)
271: /*MC
272: PETSC_VIEWER_SOCKET_WORLD - same as PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD)
274: Level: intermediate
275: M*/
276: #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD)
278: /*MC
279: PETSC_VIEWER_SOCKET_SELF - same as PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF)
281: Level: intermediate
282: M*/
283: #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF)
285: /*MC
286: PETSC_VIEWER_BINARY_WORLD - same as PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD)
288: Level: intermediate
289: M*/
290: #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD)
292: /*MC
293: PETSC_VIEWER_BINARY_SELF - same as PETSC_VIEWER_BINARY_(PETSC_COMM_SELF)
295: Level: intermediate
296: M*/
297: #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF)
299: /*MC
300: PETSC_VIEWER_MATLAB_WORLD - same as PETSC_VIEWER_MATLAB_(PETSC_COMM_WORLD)
302: Level: intermediate
303: M*/
304: #define PETSC_VIEWER_MATLAB_WORLD PETSC_VIEWER_MATLAB_(PETSC_COMM_WORLD)
306: /*MC
307: PETSC_VIEWER_MATLAB_SELF - same as PETSC_VIEWER_MATLAB_(PETSC_COMM_SELF)
309: Level: intermediate
310: M*/
311: #define PETSC_VIEWER_MATLAB_SELF PETSC_VIEWER_MATLAB_(PETSC_COMM_SELF)
313: #define PETSC_VIEWER_MATHEMATICA_WORLD (PetscViewerInitializeMathematicaWorld_Private(),PETSC_VIEWER_MATHEMATICA_WORLD_PRIVATE)
315: /*
316: PetscViewer based on the ALICE Memory Snooper
317: */
318: #if defined(PETSC_HAVE_AMS)
319: #include "ams.h"
320: EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *);
321: EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*);
322: EXTERN int PetscViewerAMSLock(PetscViewer);
323: EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm);
324: EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm);
325: #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD)
326: #endif
328: /*
329: petscViewer writes to Matlab .mat file
330: */
331: EXTERN int PetscViewerMatlabPutArray(PetscViewer,int,int,PetscScalar*,char*);
332: EXTERN int PetscViewerMatlabGetArray(PetscViewer,int,int,PetscScalar*,char*);
333: EXTERN int PetscViewerMatlabPutVariable(PetscViewer,const char*,void*);
335: /*
336: PetscViewer utility routines used by PETSc that are not normally used
337: by users.
338: */
339: EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,PetscScalar*);
340: EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,PetscReal*);
341: EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*);
342: EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,PetscScalar*,int*,int *);
343: EXTERN int PetscViewerDestroyAMS_Private(void);
345: /*S
346: PetscViewers - Abstract collection of PetscViewers
348: Level: intermediate
350: Concepts: viewing
352: .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType, PetscViewer, PetscViewersCreate(),
353: PetscViewersGetViewer()
354: S*/
355: typedef struct _p_PetscViewers* PetscViewers;
356: EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*);
357: EXTERN int PetscViewersDestroy(PetscViewers);
358: EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*);
360: PETSC_EXTERN_CXX_END
361: #endif