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