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: */
9: extern int PETSC_VIEWER_COOKIE;
11: /*S
12: PetscViewer - Abstract PETSc object that helps view (in ASCII, binary, graphically etc)
13: other PETSc objects
15: Level: beginner
17: Concepts: viewing
19: .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType
20: S*/
21: typedef struct _p_PetscViewer* PetscViewer;
23: /*
24: petsc.h must be included AFTER the definition of PetscViewer for ADIC to
25: process correctly.
26: */
27: #include petsc.h
29: /*E
30: PetscViewerType - String with the name of a PETSc PETScViewer
32: Level: beginner
34: .seealso: PetscViewerSetType(), PetscViewer
35: E*/
36: typedef char* PetscViewerType;
37: #define PETSC_VIEWER_SOCKET "socket"
38: #define PETSC_VIEWER_ASCII "ascii"
39: #define PETSC_VIEWER_BINARY "binary"
40: #define PETSC_VIEWER_STRING "string"
41: #define PETSC_VIEWER_DRAW "draw"
42: #define PETSC_VIEWER_AMS "ams"
43: #define PETSC_VIEWER_VU "vu"
44: #define PETSC_VIEWER_MATHEMATICA "mathematica"
45: #define PETSC_VIEWER_SILO "silo"
46: #define PETSC_VIEWER_NETCDF "netcdf"
47: #define PETSC_VIEWER_HDF4 "hdf4"
49: extern PetscFList PetscViewerList;
50: EXTERN int PetscViewerRegisterAll(char *);
51: EXTERN int PetscViewerRegisterDestroy(void);
53: EXTERN int PetscViewerRegister(char*,char*,char*,int(*)(PetscViewer));
55: /*MC
56: PetscViewerRegisterDynamic - Adds a method to the Krylov subspace solver package.
58: Synopsis:
59: int PetscViewerRegisterDynamic(char *name_solver,char *path,char *name_create,int (*routine_create)(PetscViewer))
61: Not Collective
63: Input Parameters:
64: + name_solver - name of a new user-defined solver
65: . path - path (either absolute or relative) the library containing this solver
66: . name_create - name of routine to create method context
67: - routine_create - routine to create method context
69: Level: developer
71: Notes:
72: PetscViewerRegisterDynamic() may be called multiple times to add several user-defined solvers.
74: If dynamic libraries are used, then the fourth input argument (routine_create)
75: is ignored.
77: Sample usage:
78: .vb
79: PetscViewerRegisterDynamic("my_viewer_type",/home/username/my_lib/lib/libO/solaris/mylib.a,
80: "MyViewerCreate",MyViewerCreate);
81: .ve
83: Then, your solver can be chosen with the procedural interface via
84: $ PetscViewerSetType(ksp,"my_viewer_type")
85: or at runtime via the option
86: $ -viewer_type my_viewer_type
88: Concepts: registering^Viewers
90: .seealso: PetscViewerRegisterAll(), PetscViewerRegisterDestroy()
91: M*/
92: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
93: #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,0)
94: #else
95: #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,d)
96: #endif
98: EXTERN int PetscViewerCreate(MPI_Comm,PetscViewer*);
99: EXTERN int PetscViewerSetFromOptions(PetscViewer);
101: EXTERN int PetscViewerASCIIOpen(MPI_Comm,const char[],PetscViewer*);
102: typedef enum {PETSC_BINARY_RDONLY,PETSC_BINARY_WRONLY,PETSC_BINARY_CREATE} PetscViewerBinaryType;
103: EXTERN int PetscViewerBinaryOpen(MPI_Comm,const char[],PetscViewerBinaryType,PetscViewer*);
104: EXTERN int PetscViewerSocketOpen(MPI_Comm,const char[],int,PetscViewer*);
105: EXTERN int PetscViewerStringOpen(MPI_Comm,char[],int,PetscViewer*);
106: EXTERN int PetscViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,PetscViewer*);
107: EXTERN int PetscViewerAMSSetCommName(PetscViewer,const char[]);
108: EXTERN int PetscViewerMathematicaOpen(MPI_Comm, int, const char[], const char[], PetscViewer *);
109: EXTERN int PetscViewerSiloOpen(MPI_Comm, const char[], PetscViewer *);
111: EXTERN int PetscViewerGetType(PetscViewer,PetscViewerType*);
112: EXTERN int PetscViewerSetType(PetscViewer,PetscViewerType);
113: EXTERN int PetscViewerDestroy(PetscViewer);
114: EXTERN int PetscViewerGetSingleton(PetscViewer,PetscViewer*);
115: EXTERN int PetscViewerRestoreSingleton(PetscViewer,PetscViewer*);
118: /*E
119: PetscViewerFormat - Way a viewer presents the object
121: Level: beginner
123: .seealso: PetscViewerSetFormat(), PetscViewer, PetscViewerType, PetscViewerPushFormat(), PetscViewerPopFormat()
124: E*/
125: typedef enum {
126: PETSC_VIEWER_ASCII_DEFAULT,
127: PETSC_VIEWER_ASCII_MATLAB,
128: PETSC_VIEWER_ASCII_MATHEMATICA,
129: PETSC_VIEWER_ASCII_IMPL,
130: PETSC_VIEWER_ASCII_INFO,
131: PETSC_VIEWER_ASCII_INFO_DETAIL,
132: PETSC_VIEWER_ASCII_COMMON,
133: PETSC_VIEWER_ASCII_SYMMODU,
134: PETSC_VIEWER_ASCII_INDEX,
135: PETSC_VIEWER_ASCII_DENSE,
136: PETSC_VIEWER_BINARY_DEFAULT,
137: PETSC_VIEWER_BINARY_NATIVE,
138: PETSC_VIEWER_DRAW_BASIC,
139: PETSC_VIEWER_DRAW_LG,
140: PETSC_VIEWER_DRAW_CONTOUR,
141: PETSC_VIEWER_DRAW_PORTS,
142: PETSC_VIEWER_NATIVE,
143: PETSC_VIEWER_NOFORMAT,
144: PETSC_VIEWER_ASCII_FACTOR_INFO} PetscViewerFormat;
146: EXTERN int PetscViewerSetFormat(PetscViewer,PetscViewerFormat);
147: EXTERN int PetscViewerPushFormat(PetscViewer,PetscViewerFormat);
148: EXTERN int PetscViewerPopFormat(PetscViewer);
149: EXTERN int PetscViewerGetFormat(PetscViewer,PetscViewerFormat*);
150: EXTERN int PetscViewerFlush(PetscViewer);
152: /*
153: Operations explicit to a particular class of viewers
154: */
156: /*E
157: PetscViewerFormat - Access mode for a file.
159: Level: beginner
161: .seealso: PetscViewerASCIISetMode()
162: E*/
163: typedef enum {FILE_MODE_READ, FILE_MODE_WRITE, FILE_MODE_APPEND, FILE_MODE_UPDATE, FILE_MODE_APPEND_UPDATE} PetscFileMode;
165: EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**);
166: EXTERN int PetscViewerASCIISetMode(PetscViewer,PetscFileMode);
167: EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...) PETSC_PRINTF_FORMAT_CHECK(2,3);
168: EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...) PETSC_PRINTF_FORMAT_CHECK(2,3);
169: EXTERN int PetscViewerASCIIPushTab(PetscViewer);
170: EXTERN int PetscViewerASCIIPopTab(PetscViewer);
171: EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth);
172: EXTERN int PetscViewerASCIISetTab(PetscViewer,int);
173: EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*);
174: EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **);
175: EXTERN int PetscViewerBinarySetType(PetscViewer,PetscViewerBinaryType);
176: EXTERN int PetscViewerStringSPrintf(PetscViewer,char *,...) PETSC_PRINTF_FORMAT_CHECK(2,3);
177: EXTERN int PetscViewerStringSetString(PetscViewer,char[],int);
178: EXTERN int PetscViewerDrawClear(PetscViewer);
179: EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int);
180: EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int);
181: EXTERN int PetscViewerBinarySkipInfo(PetscViewer);
182: EXTERN int PetscViewerBinaryLoadInfo(PetscViewer);
185: EXTERN int PetscViewerSetFilename(PetscViewer,const char[]);
186: EXTERN int PetscViewerGetFilename(PetscViewer,char**);
188: EXTERN int PetscPLAPACKInitializePackage(char *);
189: EXTERN int PetscPLAPACKFinalizePackage(void);
191: EXTERN int PetscViewerVUGetPointer(PetscViewer, FILE**);
192: EXTERN int PetscViewerVUSetMode(PetscViewer, PetscFileMode);
193: EXTERN int PetscViewerVUSetVecSeen(PetscViewer, PetscTruth);
194: EXTERN int PetscViewerVUGetVecSeen(PetscViewer, PetscTruth *);
195: EXTERN int PetscViewerVUPrintDeferred(PetscViewer, const char [], ...) PETSC_PRINTF_FORMAT_CHECK(2,3);
196: EXTERN int PetscViewerVUFlushDeferred(PetscViewer);
198: EXTERN int PetscViewerMathematicaInitializePackage(char *);
199: EXTERN int PetscViewerMathematicaFinalizePackage(void);
200: EXTERN int PetscViewerMathematicaGetName(PetscViewer, const char **);
201: EXTERN int PetscViewerMathematicaSetName(PetscViewer, const char []);
202: EXTERN int PetscViewerMathematicaClearName(PetscViewer);
203: EXTERN int PetscViewerMathematicaSkipPackets(PetscViewer, int);
205: EXTERN int PetscViewerSiloGetName(PetscViewer, char **);
206: EXTERN int PetscViewerSiloSetName(PetscViewer, const char []);
207: EXTERN int PetscViewerSiloClearName(PetscViewer);
208: EXTERN int PetscViewerSiloGetMeshName(PetscViewer, char **);
209: EXTERN int PetscViewerSiloSetMeshName(PetscViewer, const char []);
210: EXTERN int PetscViewerSiloClearMeshName(PetscViewer);
212: typedef enum {PETSC_NETCDF_RDONLY,PETSC_NETCDF_RDWR,PETSC_NETCDF_CREATE} PetscViewerNetcdfType;
213: EXTERN int PetscViewerNetcdfOpen(MPI_Comm,const char[],PetscViewerNetcdfType,PetscViewer*);
214: EXTERN int PetscViewerNetcdfGetID(PetscViewer, int *);
216: EXTERN int PetscViewerHDF4Open(MPI_Comm,const char[],PetscViewerBinaryType,PetscViewer*);
217: EXTERN int PetscViewerHDF4WriteSDS(PetscViewer viewer, float *xf, int d, int *dims, int bs);
219: /*
220: These are all the default viewers that do not have
221: to be explicitly opened
222: */
223: EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm);
224: EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm);
225: EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm);
226: EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm);
227: EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm);
228: EXTERN PetscViewer PETSC_VIEWER_MATHEMATICA_WORLD_PRIVATE;
230: #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF)
231: #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD)
233: /*MC
234: PETSC_VIEWER_STDOUT_WORLD - same as PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD)
236: Level: beginner
237: M*/
238: #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD)
240: /*MC
241: PETSC_VIEWER_STDOUT_SELF - same as PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF)
243: Level: beginner
244: M*/
245: #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF)
247: /*MC
248: PETSC_VIEWER_DRAW_WORLD - same as PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD)
250: Level: intermediate
251: M*/
252: #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD)
254: /*MC
255: PETSC_VIEWER_DRAW_SELF - same as PETSC_VIEWER_DRAW_(PETSC_COMM_SELF)
257: Level: intermediate
258: M*/
259: #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF)
261: /*MC
262: PETSC_VIEWER_SOCKET_WORLD - same as PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD)
264: Level: intermediate
265: M*/
266: #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD)
268: /*MC
269: PETSC_VIEWER_SOCKET_SELF - same as PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF)
271: Level: intermediate
272: M*/
273: #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF)
275: /*MC
276: PETSC_VIEWER_BINARY_WORLD - same as PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD)
278: Level: intermediate
279: M*/
280: #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD)
282: /*MC
283: PETSC_VIEWER_BINARY_SELF - same as PETSC_VIEWER_BINARY_(PETSC_COMM_SELF)
285: Level: intermediate
286: M*/
287: #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF)
289: #define PETSC_VIEWER_MATHEMATICA_WORLD (PetscViewerInitializeMathematicaWorld_Private(),PETSC_VIEWER_MATHEMATICA_WORLD_PRIVATE)
291: /*
292: PetscViewer based on the ALICE Memory Snooper
293: */
294: #if defined(PETSC_HAVE_AMS)
295: #include "ams.h"
296: EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *);
297: EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*);
298: EXTERN int PetscViewerAMSLock(PetscViewer);
299: EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm);
300: EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm);
301: #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD)
302: #endif
304: /*
305: PetscViewer utility routines used by PETSc that are not normally used
306: by users.
307: */
308: EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,PetscScalar*);
309: EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,PetscReal*);
310: EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*);
311: EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,PetscScalar*,int*,int *);
312: EXTERN int PetscViewerDestroyAMS_Private(void);
314: /*S
315: PetscViewers - Abstract collection of PetscViewers
317: Level: intermediate
319: Concepts: viewing
321: .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType, PetscViewer, PetscViewersCreate(),
322: PetscViewersGetViewer()
323: S*/
324: typedef struct _p_PetscViewers* PetscViewers;
325: EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*);
326: EXTERN int PetscViewersDestroy(PetscViewers);
327: EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*);
329: #endif